Я хотел бы извлечь время даты из файлов PCAP только для пакетов ARP и хотел бы сохранить как csv / txt.Я использовал приведенный ниже код для извлечения времени.Команда печати работает нормально со временем.но когда его сохраняют в CSV-файле, его можно сохранить только в одну дату и один раз (например, 14:59:58) в CSV-файл.Может ли кто-нибудь предложить изменить коды для извлечения времени ARP из pcap и сохранить в CSV ПРАВИЛЬНО.Спасибо.
с открытым ("../ data /" + filename + ".pcap", 'rb') как f: pcap = dpkt.pcap.Reader (f)
requests = []
replies = []
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
# If the packet is not arp
if eth.type != 2054:
continue
try:
arp = eth.arp
except Exception as e:
continue
src = dpkt.socket.inet_ntoa(arp.spa)
tgt = dpkt.socket.inet_ntoa(arp.tpa)
if arp.op == 2:
count_duplication(replies, src, tgt)
elif arp.op == 1:
count_duplication(requests, src, tgt)
packet_time = datetime.datetime.utcfromtimestamp(ts).strftime("%m/%d/%Y, %H:%M:%S")
print (packet_time)
save_packets(sorted(requests, key=lambda x: -x[2]), '../tmp/count-requests-xyz' + '.csv', packet_time)
# Save Packets
def save_packets (пакеты, имя файла, tcp, ts, deg_sorted): с открытым (имя файла, 'w') как f: для пакета в пакетах: data = '' для элемента в пакете: data = data + str (item) + ',' f.write (data + tcp + datetime.datetime.utcfromtimestamp (ts) .strftime ("% m /% d /% Y,% H:% M:% S") + степень_сортировки + '\ n«)