如何获得本机/远程主机的MAC地址
发布网友
发布时间:2022-05-10 06:28
我来回答
共1个回答
热心网友
时间:2023-07-29 10:23
一:问题:如何获得本机/远程主机的MAC地址,且不受操作系统类型的*,也不受本机和远程主机是否在同一个LAN中的*。
二:解决的方法
注:就我所看到的有关“如何获得本机/远程主机的MAC地址”的方法总结如下。
这些方法及程序参考了本站及其他站点,以及用google搜索到的一些牛人的解法和源代码,我在此对他们深表感谢,在此就不说他们的大名了。
我所总结的方法和以及我写的代码一定存在许多不足,敬请各位同志斧正!!!
欢迎讨论!!!如果您认为值得转载的话,欢迎转载。
(一)获得本机的MAC地址
1:在WINDOWS 2000/XP下,使用ipconfig /all ,或者route print ,或者nbtstat 本机的IP地址;
2:在Linux/UNIX/类UNIX下,使用ifconfig;
3:自己写程序/参考牛人的程序实现,其原理可以参考arp协议;
(二)获得同一个LAN中主机的MAC地址
1:先ping目标主机,然后察看arp表,该方法不受操作系统类型的*;
2:在WINDOWS 2000/XP下,用nbtstat + 目标主机的IP地址;
3:在Linux下,用nbtstat + 目标主机的IP地址。(Linux系统本身没有提供,
但是在本站的“网络编程”版有一段用C语言写的原码,实现了WINDOWS下的nbtstat命令的部分功能。那段原码里面多了一个“}”符号);
注:2,3两种方法都只适合于目标主机是WINDOWS系统,且目标主机的137(135-139)端口是开放的。
4:自己写程序/参考牛人的程序实现,其原理可以参考arp协议;
(三)获得远程主机的MAC地址
1:在WINDOWS 2000/XP下,用nbtstat + 目标主机的IP地址;
2:在Linux下,用nbtstat + 目标主机的IP地址。(Linux系统本身没有提供,
但是在本站的“网络编程”版有一段用C语言写的原码,实现WINDOWS下的nbtstat命令的部分功能。那段原码里面多了一个“}”符号);
注:1,2两种方法都只适合于目标主机是WINDOWS系统,且目标主机的137(135-139)端口是开放的。
3:自己写程序/参考牛人的程序实现
三:我自己现在不是牛人,没有对问题给出一个*的解决方案。下面是我参考各位牛人的一些思想和源代码,在Java中通过系统调用实现的一段程序。该程序我已经在WINDOWS XP和RedHat Linux 9.0下测试通过。(要求系统只配了一个以太网卡,如有两块网卡,只能检测出其中的一块网卡的MAC地址,且可能造成显示的MAC/IP地址对与实际的MAC/IP地址对不符。)