【问题标题】:Get only the source MAC address from tcpdump仅从 tcpdump 获取源 MAC 地址
【发布时间】:2014-11-22 20:22:59
【问题描述】:

我正在尝试获取网络上转储的每个数据包的源 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 is protocol-dependent 的输出等在某些网络上有所不同。

我想我可以重写我的 sed 命令,以便它输出与 MAC 地址的正则表达式匹配的第一项:

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

但我不确定该行中的第一个 MAC 地址是否始终是源 MAC 地址。

如果没有办法让 tcpdump 直接输出源 MAC 地址,有什么方法可以让它从链路级标头中输出原始位吗?从那里我应该能够拼凑出源 MAC 地址。

【问题讨论】:

  • 你考虑过使用tshark吗?

标签: linux networking ip tcpdump data-link-layer


【解决方案1】:

通过使用 tshark,您可以这样做:

示例:

tshark -i eth0 -e eth.src -Tfields

【讨论】:

  • 嘿,不错!不过,在 tshark 1.10.6 中,我会间歇性地获取行号;不仅仅是 MAC 地址
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2013-09-18
  • 2012-10-16
  • 2014-07-24
相关资源
最近更新 更多