【发布时间】:2019-09-04 15:41:47
【问题描述】:
我想从 PCAP 文件中提取仅用于 ARP 数据包的日期时间,并希望保存为 csv/txt。我确实使用下面的代码来提取时间。打印命令随着时间的推移工作正常。但是当它保存在 csv 文件中时,它只有一个日期和一次(例如 14:59:58)保存到 csv 文件中。任何人都可以建议修改从 pcap 中提取 ARP 时间并正确保存到 csv 的代码。谢谢。
with open("../data/" + filename + ".pcap", 'rb') as 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): 使用 open(filename, 'w') 作为 f: 对于数据包中的数据包: 数据='' 对于包裹中的物品: 数据 = 数据 + str(item) + ',' f.write(data + tcp + datetime.datetime.utcfromtimestamp(ts).strftime("%m/%d/%Y, %H:%M:%S") + degree_sorted + '\n')
【问题讨论】:
-
解释所需的 csv 结构。你知道如何找到仅 ARP 的数据包吗?
-
CSV 文件将包含 src_ip、dst_ip、数据包数量、时间......是的,我知道如何仅提取 ARP 数据包,我已经根据需要的特征提取。