从PCAP文件中提取时间并另存为CSV文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从PCAP文件中提取时间并另存为CSV文件相关的知识,希望对你有一定的参考价值。

我想从PCAP文件中提取日期时间仅用于ARP数据包,并希望另存为csv / txt。我确实使用下面的代码提取时间。 print命令随着时间的推移正常工作。但是当它保存在csv文件时只有一个日期和一次(例如14:59:58)保存到csv文件中。可以任何人建议修改代码从pcap中提取ARP时间并保存到csv CORRECTLY。谢谢。

with 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):open(filename,'w')为f:for packet in packets:data =''for item in packet:data = data + str(item)+' ,'f.write(data + tcp + datetime.datetime.utcfromtimestamp(ts).strftime(“%m /%d /%Y,%H:%M:%S”)+ degree_sorted +' n')

答案
import socket
import datetime
import dpkt


def _inet_to_str(inet):
    try:
        return socket.inet_ntop(socket.AF_INET, inet)
    except ValueError:
        return socket.inet_ntop(socket.AF_INET6, inet)


def arp(pcap_path):
    def _is_arp(packet):
        return True

    with open(pcap_path, 'rb') as f:
        pcap = dpkt.pcap.Reader(f)
        for ts, buf in pcap:
            eth = dpkt.ethernet.Ethernet(buf)
            if not isinstance(eth.data, dpkt.ip.IP):
                continue

            if not _is_arp(eth):
                continue
            ip = eth.data
            # write to file instead of printing
            print('{},{},{}'.format(_inet_to_str(ip.src), _inet_to_str(ip.dst),
                                    datetime.datetime.utcfromtimestamp(ts).strftime("%m/%d/%Y, %H:%M:%S")))

以上是关于从PCAP文件中提取时间并另存为CSV文件的主要内容,如果未能解决你的问题,请参考以下文章

打开 Excel 文件并另存为 .XLS

提示文件打开,进行更改并另存为另一个副本,然后关闭+取消保存原始文件

Excel VBA 删除公式并另存为 v2

创建 Excel 文件并另存为 PDF。 [关闭]

从 PCAP 文件中提取时间并保存为 CSV 文件

强制“是”以保存并另存为无宏工作簿