我的网段是192.168.0.*
,目标网段是192.168.1.*
,我可以点击它。
我想在我的程序(C#或VC)中得到目标的MAC地址(例如,192.168.1.132's)。
我知道我可以使用nmap来扫描Linux中的网络,但是如何在Windows中实现呢?子网掩码为255.255.255.0。
编辑:也许nmap也无法获得不同子网的mac地址。
发布于 2012-12-28 02:53:57
告诉我们网络地址而不告诉我们子网掩码就像告诉我们你家号码是12345,但不告诉我们街道名称。我假设子网掩码是255.255.255.0。
如果目标计算机驻留在不同的网络中,则无法直接获取目标计算机的MAC地址,原因如下:
本地机器不会对远程机器进行ARP。
本地路由器不会对远程机器进行ARP。
远程路由器将为远程机器进行ARP。远程机器将响应ARP查询,并将rewspones发送到查询器(即远程路由器),在那里响应将停止。
如果需要查找远程计算机的MAC地址,则需要访问远程路由器上的ARP缓存。
发布于 2012-12-28 02:53:20
相同子网的
arp
将显示您机器的arp表,其中将包括与其通信的客户端的MAC地址。所以,ping
,然后arp
,以确保您从所需的客户端获得一个MAC地址。
(使用arp /?
在命令上显示帮助/使用)
用于不同子网的
getmac /s [ip]
(使用RPC,最好是Windows,并且需要目标计算机上的权限,因此只有在企业环境中才真正有用。)
编辑:(想想看,在Windows环境下,您也可以尝试使用nbtstat
命令。可能工作,也可能不工作,取决于网络设置和信任,但它肯定可以从不同的子网中提取MAC地址。)
发布于 2012-12-28 03:00:55
有nmap窗口,您可以从namp网站下载。只需查找windows版本,它甚至附带一个GUI。
对于C#,您可以使用SendARP()。
https://serverfault.com/questions/461325
复制相似问题