【发布时间】:2009-08-27 17:56:50
【问题描述】:
我正在寻找一种解决方案来了解使用 asp.net 网站的用户的 MAC 号码。我知道你可以得到一个 IP 地址(不知道为什么,但它不会很复杂)但是我能找出具有 IP 地址的 MAC 地址吗?
编辑:我的意思是在 .NET 中以编程方式(而不是手动)
【问题讨论】:
-
如何从网络外部获取某人的 MAC 地址?
标签: asp.net mac-address
我正在寻找一种解决方案来了解使用 asp.net 网站的用户的 MAC 号码。我知道你可以得到一个 IP 地址(不知道为什么,但它不会很复杂)但是我能找出具有 IP 地址的 MAC 地址吗?
编辑:我的意思是在 .NET 中以编程方式(而不是手动)
【问题讨论】:
标签: asp.net mac-address
IP 地址对于路由请求信息的客户端系统和服务器之间的通信是必需的。你可以得到它,因为 IP 地址是从 TCP/IP 堆栈中的较低级别(我相信是第 3 级)中提取的。 MAC 地址对于任何这些都不是必需的,因此它不包含在客户端和服务器之间的通信中。
【讨论】:
如果您的网站受信任,您可以在 IE 中执行此操作:
http://www.devarticles.com/c/a/JavaScript/Advanced-JavaScript-with-Internet-Explorer-Retrieving-Networking-Configuration-Information/1/
我不希望它适用于任何典型的访问者,只适用于您已经控制的系统的用户,例如在您的本地网络上的用户。如果您可以找到使用 CoCreateGuid 生成 guid 的常见 activex,则在 IE 中可能有第二种方式。它返回部分 guid 中的 mac 地址。不过,我不会打赌找到一个常用的。
【讨论】:
没有机会得到这个抱歉。
即使您可以尝试获取它也没有任何意义,但当我访问 Internet 上的网站时,我的 MAC 地址永远不会离开我的家庭网络。
好的,如果用户在同一个 LAN 上,例如在公司内部网中,这可以通过拥有 ip 地址并使用命令行工具(如 arp)来确定。
ARP 代表地址解析协议,当仅知道主机的 Internet 层 (IP) 或其他网络层地址时,它可用于查找主机的链路层(硬件)地址。
【讨论】:
Java 6 有一个NetworkInterface#getHardwareAddress() 方法,通常返回相关计算机的 MAC 地址。您可以创建一个小型 Java 小程序来与您的 Web 服务器通信以获取 MAC 地址,尽管有一些方法和方法可以欺骗 MAC 地址。
【讨论】:
您获得的 MAC 地址可能不实用。如果某人有多个网络适配器,那么他们也有多个 MAC 地址。有人拥有两个网络的情况并不少见。 (例如,蓝牙、普通有线和 WiFi 已经是三个。)
MAC 地址仅用于识别,可以请求。地址解析协议就是为此目的而创建的。通过arping,您可以获得MAC 地址。不幸的是,这仅适用于本地网络,不适用于 Internet。我认为通过使用 IPv6,您可能还有一些选择。虽然我认为它仍然仅限于本地系统。
获取访问者的 MAC 地址可能被认为是不恰当的,甚至可能是犯罪行为,因为 MAC 地址通常用作唯一标识符。黑客可能会滥用此信息,尤其是当黑客设法获得对用户网络的物理访问权限时。这将允许他冒充用户。您的网站可能会让一些安全专家非常不满...
http://www.ipaddresslocation.org/find-mac-address.php 有一个他们声称可以工作的 Java 小程序。不过,它不在我的带有 Google Chrome 的系统上。
【讨论】:
我有一个类似的问题(我使用客户端设备 MAC 地址作为针对不同设备上不同内容的密钥)。这个线程很有用。鉴于似乎没有办法隐式执行此操作,我改为将 MAC 地址作为客户端传递给 Web 服务的参数之一。
(请注意,这不是一个通用的答案,只有在客户端和服务器紧密集成以及可以通过调用传递数据的情况下才有意义。)
【讨论】:
我认为这在任何平台上都不可能。
【讨论】: