разбор pcap в python2.7

Чтобы продолжить этот вопрос. перед печатью резюме. Пожалуйста, смотрите код ниже:

защита run_example():

global total_packet_count, total_bytes_count, average_pkt_size

try:
    sys.argv[1]
    dmp_file = sys.argv[1]
    fp_dmp_file = open(dmp_file)
except Exception as e:
    print 'Error: please supply pcap filename!\n'
    return

f = open('test1.pcap') try: sys.argv[1] dmp_file = sys.argv[1] file = open(dmp_file) за исключением Exception as e: print 'Ошибка: укажите имя файла pcap!\n' return

pcap = dpkt.pcap.Reader(file)

for ts, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf)
    ip = eth.data
    tcp = ip.data
    src_ip = socket.inet_ntoa(ip.src)
    src_port = str(ip.data.sport)
    dst_ip = socket.inet_ntoa(ip.dst)
    dst_port = str(ip.data.dport)

    if type(ip.data) == dpkt.tcp.TCP:
        protocol = 'tcp'
    
    elif type(ip.data) == dpkt.udp.UDP:    
            protocol = 'udp'

    print_packet_info (ts, src_ip, src_port, dst_ip, dst_port, protocol, ip.len, ip.ttl)


print_summary(len (total_packet_count), len (total_bytes_count), len (average_pkt_size))

##fp_dmp_file.close()  

if name == 'main': run_example()

Мне удалось распечатать данные пакета, но по-прежнему не удалось распечатать сводку. Я предполагаю, что мне нужно подсчитывать значения из глобального, чтобы иметь возможность печатать сводку.

Любая помощь высоко ценится


person Mojo    schedule 20.11.2020    source источник
comment
Я обновил код, но мне все еще нужно подсчитать глобальные переменные, чтобы иметь возможность распечатать сводку. Может кто поможет со счетом?   -  person Mojo    schedule 21.11.2020
comment
Может кто поможет со счетом. Во-первых, я хотел бы подсчитать (общее количество пакетов), а затем увеличить (общее количество байтов) на основе каждого добавленного пакета. Затем мы вычисляем (средний размер пакета) на основе двух предыдущих подсчетов. Любые подсказки о том, как этого добиться?   -  person Mojo    schedule 22.11.2020


Ответы (1)


Итак, во-первых, нам нужно снова идентифицировать глобальные переменные поверх нашего файла, следующего за добавленными библиотеками, чтобы он вызывался вне функции def run_example(). Затем, после dst_port, мы можем вызвать наши итоговые переменные, первая из которых будет увеличивать пакеты в файле. Второй проверит длину пакета в данном случае (в байтах). Это можно найти в руководстве по dkpt. Наконец, вывод сводных переменных, который я сделал, был неправильным. Вместо этого мы вызываем наши определенные переменные, так как для среднего мы разделим общее количество байтов / общее количество пакетов, которые дадут нам средний размер пакетов.

person Mojo    schedule 25.11.2020