从 pcap 中提取找到的所有协议

信息安全 网络 工具 协议 嗅探器
2021-08-18 07:48:15

我有一些 pcap 文件,我只想获取该 pcap 文件中存在的协议列表。我想要批处理模式,不使用wireshark

我认为tshark能够做到这一点,但我找不到怎么做。任何的想法?

4个回答

我认为那-Tfields -eframe.protocols将是你能得到的最接近的东西。
输出看起来像这样:

eth:ip:tcp:http
eth:ip:tcp
eth:ip:tcp:http:media
eth:ip:tcp
eth:ip:udp:nbdgm:smb:browser
eth:ip:tcp
eth:arp
eth:arp
eth:ipv6:udp:http
eth:ip:udp:http

可以看出,显示的信息会有所不同,具体取决于要播放的协议解析器。因此,您需要进行一些后期处理来剪切不需要和/或去重的部分(例如在评论中使用@Mark 的建议)。

你有没有尝试过 tshark -r test.cap -q -z io,phs

它会给你一个分层的协议列表,不确定它是否适合你的需要。

===================================================================
Protocol Hierarchy Statistics
Filter: frame

frame                                    frames:433 bytes:290520
  eth                                    frames:433 bytes:290520
    ip                                   frames:433 bytes:290520
      tcp                                frames:423 bytes:289464
        http                             frames:188 bytes:267285
        ssh                              frames:24 bytes:7968
        ssl                              frames:2 bytes:237
      udp                                frames:10 bytes:1056
        data                             frames:6 bytes:355
        ntp                              frames:2 bytes:180
        nbdgm                            frames:2 bytes:521
          smb                            frames:2 bytes:521
            mailslot                     frames:2 bytes:521
              browser                    frames:2 bytes:521
===================================================================

要获取协议列表,您可以执行一些命令行 KungFu。

tshark -r test.cap -z io,phs -q | tr -s ' ' | cut -f 2 -d ' ' | tail -n +7 | head -n -1

这会给你

eth
ip
tcp
http
ssh
ssl
udp
data
ntp
nbdgm
smb
mailslot
browser

tcpdstat将为您执行此操作。我相信它在 Richard Bejtlich 的一本书中提到过。

与大多数其他工具不同,Bro以与端口无关的方式检测应用程序协议例如,它不仅在标准端口(80、8080 等)上检测 HTTP,而且在任何TCP 连接中检测。

提取连接数(TCP 和 UDP)很简单:

bro -r trace.pcap
bro-cut service < conn.log | sort | uniq -c

来自小型 HTTP 跟踪的示例输出:

 19 -
 53 dns
 34 http