我有一些 pcap 文件,我只想获取该 pcap 文件中存在的协议列表。我想要批处理模式,不使用wireshark
我认为tshark能够做到这一点,但我找不到怎么做。任何的想法?
我有一些 pcap 文件,我只想获取该 pcap 文件中存在的协议列表。我想要批处理模式,不使用wireshark
我认为tshark能够做到这一点,但我找不到怎么做。任何的想法?
我认为那-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