PCAP ファイルから ARP パケットのみの日時を抽出し、csv/txt として保存したいと考えています。私は抽出時間のために以下のコードを使用しました。印刷コマンドは時間とともに正常に機能しています。ただし、csv ファイルに保存する場合は、1 つの日付と 1 つの時刻 (例: 14:59:58) のみが csv ファイルに保存されます。pcapからARP時間を抽出してcsvに正しく保存するためのコードを変更することを提案できますか。ありがとうございました。
open("../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(packets,filename,tcp,ts, degree_sorted): with open(filename, 'w') as f: パケット内のパケットの場合: data = '' パケット内のアイテムの場合: data = data + str(item) + ' ,' f.write(data + tcp + datetime.datetime.utcfromtimestamp(ts).strftime("%m/%d/%Y, %H:%M:%S") + degree_sorted + '\n')