我需要创建一个显示过滤器,执行以下操作:对于每个源IP地址,列出所有目标IP地址,但仅列出每个目标IP地址的唯一协议。
换句话说,我想只看到每个唯一的一行数据: ip.src = X,ip.dst = Y,protocol = Z
我想创建此过滤器,使其涵盖所有源IP,因此我不必为每个源IP地址创建单独的过滤器。
我需要在“批处理”模式下为许多PCAP文件执行上述操作。如果在Wireshark GUI中无法做到这一点,那么我想要一个命令行(tshark)解决方案。
答案 0 :(得分:0)
当我以前做过那种事情时,我通常使用tshark
来提取数据,然后使用其他工具(Python,Perl,awk等)来进一步细化结果数据。因此,考虑到这种方法,您可以使用:
tshark -r mysample.pcapng.gz -2 -Tfields -eip.src -eip.dst -eframe.protocols
使用该命令行,您将获得这些字段,但请注意某些行(例如具有ARP数据包的行)将不具有IP地址(因为它们不是IP数据包),以及IPv6数据包不会显示IP地址,因为这些字段名称(ip.src
和ip.dst
)仅适用于IPv4。以下是我碰巧使用的捕获文件的示例输出:
10.68.40.152 224.0.0.252 eth:ethertype:ip:udp:dns
10.68.40.119 255.255.255.255 eth:ethertype:ip:udp:db-lsp-disc
10.68.40.119 10.68.41.255 eth:ethertype:ip:udp:db-lsp-disc
eth:ethertype:arp
10.68.40.152 224.0.0.252 eth:ethertype:ip:udp:dns
10.68.40.65 10.68.41.255 eth:ethertype:ip:udp:nbns
eth:ethertype:ipv6:ipv6.nxt:udp:dns
eth:ethertype:ipv6:ipv6.nxt:udp:dns
如果您希望消除非IPv4数据包,只需添加一个过滤器:
tshark -r mysample.pcapng.gz -2 -Tfields -R ip -eip.src -eip.dst -eframe.protocols
在Linux(我使用的)下,您可以轻松地将其输出传输到各种其他实用程序中。例如,如果将其附加到该命令行:
|sort -n |uniq -c |sort -n
您将按照频率的升序列出样本文件中存在的每个唯一src,dst和proto组合的列表。