使用 SendARP 查询 MAC 地址

通过 IP Helper  API 中的 SendARP 发送 ARP 请求来获取 MAC 地址,简单方便,缺点是不能跨越网关。

 


#include
#include
#include

#pragma comment(lib , "IpHlpApi.lib")
#pragma comment(lib , "WS2_32.lib")


int main(int argc,char * argv[])
{
int iReturn;
DWORD dwIP;
BYTE byMAC[6];
DWORD dwLen;
WSADATA WsaData;

WSAStartup(MAKEWORD(2, 0), &WsaData);

__try
{
printf("IP2MAC Ver 1.0 -- Get MAC address from IP address though ARP request./n/n");

if (argc != 2)
{
printf("Usage: %s /n", argv[0]);
__leave;
}

dwIP = inet_addr(argv[1]);
if (dwIP == INADDR_NONE)
{
printf("Invalid IP address: %s./n", argv[1]);
__leave;
}

// 发送ARP查询包获得 MAC 地址
dwLen = 6;
iReturn = SendARP(dwIP, 0, (PULONG) &byMAC, &dwLen);
if (iReturn != NO_ERROR)
{
printf("Error: Send ARP request. /nBe sure that connectting to %s need no gateway./n", argv[1]);
__leave;
}

printf("%.2X-%.2X-%.2X-%.2X-%.2X-%.2X/n",
byMAC[0], byMAC[1], byMAC[2], byMAC[3], byMAC[4], byMAC[5]);
}
__finally
{
WSACleanup();
}

return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值