linux - 计算 .pcap 文件中的唯一 MAC 地址
问题描述
我正在尝试生成一个 shell 命令,该命令将使用 tcpdump 读取给定的 .pcap 文件,并输出给定 .pcap 文件中唯一 MAC 地址的数量
无法绕过它加上“tcp --help”非常没用:到目前为止我得到了这个
tcpdump -r mypcap.pcap ether -v `dst ff:ff:ff:ff:ff:ff` | uniq -c
任何帮助,将不胜感激
解决方案
如果您只想计算捕获文件中存在的唯一以太网 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
已经提供了唯一端点的列表,所以没有重复的处理。
推荐阅读
- mysql - 烧瓶无法在docker compose中连接mysql
- python - 用布尔值替换 Pandas 系列中的数字
- laravel - 如何将查询转换为 Laravel Eloquent ORM
- c# - 有没有办法可以通过 cts.Cancel(); 立即停止正在运行的方法?
- spring - 我们如何在内存重启中禁用 Springboot 中的会话清除
- magento - 为特定产品启用支付网关 - Magento 2
- kubernetes - ArangoDB 初始化容器在 minikube 上失败
- amazon-web-services - 无法访问 AWS EC2 实例:公共 DNS (IPv4) 和 IPv4 公共 IP
- php - 格式化 SQL PHP 脚本
- javascript - 在 React.js 中检查互联网连接的可重用钩子