(即在局域网内
,
知道
IP
查
MAC
地址,知道
MAC
地址查
IP
)
你可以使用
arp
程序(
WINDOWS
自带)
eg:
arp
-a
192.168.0.1
如果使用程序查的话,你需要去实现一个
ARP
、
RARP
协议的软件
如果只是查看一下对应关系,可以登陆到以太网交换机上查看
IP
和
MAC
之间的对应
在
Windows9x
中,可按如下思路进行:
1
、建立局域网内
IP
地址
--MAC
地址对照表:
调用
icmp.dll
中的
IcmpSendEcho
函数对一个地址发一个
ping
操作。
成功后马上调用
Iphlpapi.dll
中的
GetIpNetTable
函数来取所有的
ARP
表,从中找出
所关心的
MAC
地址。
保存
IP
地址和
MAC
地址。
依此类推,取得局域网内所有
IP
地址和
MAC
地址的对照表。
(可取范围为
IPADDR
and
SUBMASK
子网范围内的对照表)
2
、做一个查询界面。
Windows2000
中,应该可以更简单一些。因为它支持更多的函数如
SendARP
。
IP
to
MAC
较容易:
方法
1.
DOS
命令
:
nbtstat
-a
IP
方法
2.
DOS
命令
:
ping
IP
然后
arp
-a
方法
3.
仿照
nbtstat
,向对方的
137
端口发数据包,包的内容如下(
C
代码)
BYTE
b[50]={0x0,0x00,0x0,0x10,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,
0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
0x41,0x41,0x41,0x0,0x0,0x21,0x0,0x1};
(这是发
nbtstat
命令后用
IPMan
截获的),对方会向你返回一个数据包,
其中有对方的工作组,主机名,用户名,
MAC
地址。当然,返回包的格式要
自己分析,也可以查
RFC
文档。你自己的端口可以随便取一个值。
方法
4.
在
win9x
下可用
IPMan
直接发
ARP
。
方法
5.
在
win2000
下可用
SendArp()
直接发
ARP
。
----------------------------------------------------------------
MAC
to
IP
似乎较困难。
Win9x
下
IPMan
有此项功能,但我试了一下似乎不行。
来自:
zw84611,
时间:
2001-10-7
19:37:00,
ID
:
659172
发出去了,是用
VC
写的。因为我不喜欢
Delphi5
的
udp
控件。其实用
delphi
也一样。很
简单的,就是向对方
137
端口发内容为
BYTE
b[50]={0x0,0x00,0x0,0x10,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,
0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
0x41,0x41,0x41,0x0,0x0,0x21,0x0,0x1};