我试图让被弃置在网络上的每一个数据包的源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地址。