当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《检测具有相同MAC地址的另一台主机》经验,为你挑选了1个好方法。

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

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

编辑:RARP并没有解决这个问题.对于RARP完全得到任何回复,该段上必须至少有一个主机支持RARP.由于RARP已经过时,现代操作系统不支持它.此外,所有RARP都可以告诉您自己的IP地址 - 如果该段上具有相同MAC的其他主机,则响应将不会有任何不同,除非该主机本身使用不同的IP地址.



1> Adam Liss..:

这个问题太有趣了,无法放下!经过几次错误的开始后,我开始考虑问题的基本组成部分,并搜索RFC以寻求建议. 我还没有找到明确的答案,但这是我的思考过程,希望它有所帮助:

原始问题询问如何使用您的MAC地址检测另一台设备.假设您在IP网络上,完成此任务需要什么?

被动的方法是简单地交通,并寻找你没有发送但有你的MAC地址的任何数据包.这可能会也可能不会发生,所以尽管它可以明确地告诉你是否存在重复,但它无法明确告诉你它没有.

任何活动方法都要求您传输强制冒名顶替者响应的数据包.这会立即消除任何依赖于可选协议的方法.

如果另一台设备欺骗您,它必须(根据定义)响应以您的 MAC地址为目的地的数据包.否则它是窥探而不是欺骗.

解决方案应独立于IP地址,并且仅涉及MAC地址.

因此,答案似乎是传输广播(以太网)数据包或以MAC地址为目的地的数据包,这需要响应.Monkeywrench是通常涉及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

发布您的解决方案的后续跟进,因为我相信它会对其他人有所帮助.祝好运!

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有