首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测另一个具有相同MAC地址的主机

检测另一个具有相同MAC地址的主机
EN

Stack Overflow用户
提问于 2008-11-10 03:19:05
回答 4查看 20.2K关注 0票数 12

如何检测另一台主机是否使用与当前主机相同的MAC地址,例如因为另一台主机在欺骗?

我在嵌入式环境中工作,所以在协议级别上寻找答案,而不是“使用这样和这样的工具”。

编辑:RARP不能解决这个问题。要使RARP得到任何答复,必须在支持RARP的段中至少有一个主机。由于RARP已经过时,现代操作系统不支持它。此外,RARP所能做的就是告诉您您自己的IP地址--如果段上有另一个具有相同MAC的主机,则响应不会有任何不同,除非该主机本身使用了不同的IP地址。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-10 05:21:33

这个问题太有趣了,不能放下来!在几次错误的开始后,我开始思考问题的基本组成部分,并仔细搜索RFCs以获得建议。我还没有找到一个明确的答案,,但这是我的思考过程,希望它能有所帮助:

  • 最初的问题是如何用你的MAC地址检测另一个设备。假设您在IP网络上,实现这一目的需要什么?
  • 被动的方法只是监听通信量并查找没有发送但有MAC地址的任何数据包。这种情况可能发生,也可能不会发生,因此,虽然它可以确定地告诉您是否存在复制,但它不能确切地告诉您它不存在。
  • Any active方法要求您发送一个强制冒充者响应的数据包。这立即消除了依赖于可选协议的任何方法。
  • 如果另一个设备在欺骗您,它必须(根据定义)响应以您的MAC地址作为目标的数据包。否则,它是窥探,但不是spoofing.
  • The解决方案应独立于IP地址,并只涉及到的MAC地址。
  • 因此,它的答案似乎是发送一个广播(以太网)分组或以您的MAC地址作为其目的地的数据包,这需要一个响应。猴子扳手是一个IP地址通常涉及到,而你不知道它。

什么样的协议符合这种描述?

简单答案:

  • 如果您的网络支持BOOTP或DHCP,您就完成了,因为这是权威地将一个MAC地址绑定到一个IP地址。发送一个BOOTP请求,获取一个IP地址,并尝试与它交谈。您可能需要具有创造性,才能强行将数据包传送到网络上,并防止自己做出响应(我认为明智地使用iptables和NAT)。

不那么简单的答案:

  • --一个独立于IP的协议:要么不使用IP层,要么允许广播。
  • 发送的任何数据包通常都会产生来自您的响应,阻止您响应,并从另一个设备寻找响应。使用您的IP地址作为目的地似乎是明智的,但我对此并不信服。不幸的是,细节(因此,答案)留作OP的练习.但我希望这次讨论会有所帮助。

我怀疑最终的解决方案将涉及各种技术的结合,因为似乎没有一种单一的方法可以保证可靠的决心。

一些信息可在http://en.wikipedia.org/wiki/ARP_spoofing#Defenses获得

如果所有这些都失败了,您可以享受以下内容:http://www.rfc-editor.org/rfc/rfc2321.txt

请贴上你的解决方案的后续信息,因为我相信它会对其他人有帮助。祝好运!

票数 17
EN

Stack Overflow用户

发布于 2009-01-16 00:25:16

您可以为子网中的每个可能的ip发送一个ARP请求。当然,ARP请求的源地址必须是ff:ff,否则您可能看不到响应。

我用bittwiste伪造了一个这样的包,然后用PReplay重放它,网络上的所有主机都得到了响应。(我不知道这些伪造的ARP包是否合法.一些OSes可能会忽略它们)

以下是伪造的包裹的样子:

以下是答复的内容:

如果您观察响应,并在其中一个数据包中看到您的MAC地址(在红色矩形中),则有人拥有与您相同的MAC地址.

不知怎么说,我无法完全测试这个理论,因为我的(Windows)机器中没有人关心我试图设置nic的MAC地址.

票数 3
EN

Stack Overflow用户

发布于 2008-11-10 03:40:13

在单个网络段上使用相同MAC地址的两台主机可能会使交换机疯狂,您可能会通过极不可靠的网络连接来检测它(因为交换机将将属于您的主机的部分数据包发送到第二个数据包,这取决于您中的哪个发送了最后一个数据包)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/276990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档