只取得来自tcpdump的源MAC地址(Get only the source MAC addres

2019-10-21 02:04发布

我试图让被弃置在网络上的每一个数据包的源MAC地址,不涉及主机的任何数据包。 我预计,为了做到这一点,我应该从处于混杂模式的主机的网络接口的tcpdump得到数据。

请注意,我感兴趣,让全头甚至链接层头。 该-e选项是不是我想要的。 我只想源MAC地址的每个数据包,仅此而已。

这是我目前在做什么现在:

sudo tcpdump -I -elt -i wlan0 not host 127.0.0.1 2>> /dev/null | sed 's/ .*//'

127.0.0.1替换为本地网络接口的实际IP地址。

这在一些网络中,其中,源MAC地址是第一块的信息,通过tcpdump的输出工作很大。 不幸的是,这并没有一直是我的经验。 看来,输出到tcpdump的是协议相关等一些网络中有异。

我想,使其输出,对于一个MAC地址的正则表达式匹配的第一个项目,我可以重写我的sed命令:

(?:[0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}

但我不能确定,如果在该行的第一个MAC地址将始终是源MAC地址。

如果没有办法有tcpdump的输出源直接MAC地址,有没有一些方法,我可以把它输出链路层报头的原始位? 从那里我应该能够拼凑的源MAC地址。

Answer 1:

通过tshark的,你可以那样做:

例:

tshark -i eth0 -e eth.src -Tfields


文章来源: Get only the source MAC address from tcpdump