首页 > 解决方案 > 计算 .pcap 文件中的唯一 MAC 地址

问题描述

我正在尝试生成一个 shell 命令,该命令将使用 tcpdump 读取给定的 .pcap 文件,并输出给定​​ .pcap 文件中唯一 MAC 地址的数量

无法绕过它加上“tcp --help”非常没用:到目前为止我得到了这个

tcpdump -r mypcap.pcap ether -v `dst ff:ff:ff:ff:ff:ff` | uniq -c

任何帮助,将不胜感激

标签: linuxterminalpacketpcaptcpdump

解决方案


如果您只想计算捕获文件中存在的唯一以太网 MAC 地址的数量,那么我同意 @user13951124的观点,即tshark对于这个用例来说 using 是更好的工具选择。在这里,我提出了一个使用tshark选项的替代解决方案-z endpoints,eth

例如,我有一个包含 2 个唯一以太网 MAC 地址的文件,当我运行以下命令时:

tshark.exe -nqr mypcap.pcap -z endpoints,eth

我得到以下输出:

AST modules loaded
================================================================================
Ethernet Endpoints
Filter:<No Filter>
                       |  Packets  | |  Bytes  | | Tx Packets | | Tx Bytes | | Rx Packets | | Rx Bytes |
00:26:b9:b3:ce:7a              2          1072          2            1072           0               0
00:12:17:b5:0d:32              2          1072          0               0           2            1072
================================================================================

如果你想要计数,你可以通过管道输出wc,然后打印表达式的结果减去不相关的输出行数,在我的例子中是 6。所以整个命令看起来像这样:

count=$(tshark.exe -nqr mypcap.pcap -z endpoints,eth | wc -l) && echo $(( $count - 6 ))

在这种情况下,您得到的输出很简单:

2

我的猜测是这个解决方案会更快,因为不需要排序并且tshark已经提供了唯一端点的列表,所以没有重复的处理。


推荐阅读