0

团队,我想从 wireshark pcap 文件中提取No_of_ARP_Request, No_of_TCP_SYN, Number_UDP_138, NBNS, MDNS, IGMP, ICMP data Src_MAC_Address, Dest_MAC_Address,Src_Port等特征。 这是为了通知,我已经提取了特征并通过 DPKT 为 ARP 数据保存为 CSV。对于如何通过 DPKT 提取所有特征并保存为 CSV,任何人都可能有更好的建议或代码。谢谢你。Dest_Port

def arp_analys(filename):
    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

            packet_time = datetime.datetime.utcfromtimestamp(ts).strftime("%m/%d/%Y,%H:%M:%S")

            src = dpkt.socket.inet_ntoa(arp.spa)
            tgt = dpkt.socket.inet_ntoa(arp.tpa)


            # Src and Dest MAC

            from src.arpbasic import mac_addr
            s_mac = mac_addr(eth.src)
            d_mac = mac_addr(eth.dst)
4

1 回答 1

0

-e您可以使用 tshark 的选项轻松地从转储中提取特征(字段) :

-e-T ek|fields|json|pdml如果选中 ,则将字段添加到要显示的字段列表中。该选项可以在命令行中多次使用。如果选择了 -T fields 选项,则必须至少提供一个字段。列名可以使用前缀“_ws.col”。

例子:tshark -e frame.number -e ip.addr -e udp -e _ws.col.Info

提供协议而不是单个字段会将有关协议的多项数据打印为单个字段。默认情况下,字段由制表符分隔。-E 控制打印字段的格式。

$ tshark -r dump -e tcp.srcport -Tjson
[
  {
    "_index": "packets-2019-04-14",
    "_type": "pcap_file",
    "_score": null,
    "_source": {
      "layers": {
        "tcp.srcport": [
          "42130"
        ]
      }
    }
  }
]

如果您想对 python 中的数据进行一些后处理,我建议您使用 tshark -T,然后在您的代码中解析此输出。

类似的东西pdml2frame可以帮助你进行解析。编写一个可以满足您需求的新插件应该很简单。

披露:我确实写过pdml2flow

于 2019-05-11T07:01:43.400 回答