获取远程计算机MAC
2012-02-01 10:37
169 查看
编写说明
工作环境中不允许进入3层交换机,但客户机不允许断网,实现获取IP地址主要用于IP冲突检测。通过于没有IP冲突时的MAC对比,查看与那台计算机的IP产生冲突。示例代码
// MAC.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <WinSock2.h> #include <IPHlpApi.h> #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"IPHlpApi.lib") BOOL GetMac(CHAR *IpAddr, BYTE *MacAddr) { CHAR macAddr[13]={0}; IPAddr ipAddr; ULONG Mac[2]; ULONG MacLen; memset (Mac, 0xff, sizeof (Mac)); MacLen = 6; ipAddr=inet_addr(IpAddr); DWORD hr = SendARP (ipAddr, 0, Mac, &MacLen); if(hr==0) { PBYTE pbMac = (PBYTE)Mac; for (ULONG i=0;i<MacLen;i++) { MacAddr[i]=pbMac[i]; } } else { return FALSE; } return TRUE; } int main(int argc, char* argv[]) { if (argc!=2) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14); printf("MAC命令格式不正确!\n"); printf("\t格式:MAC IP地址\n"); printf("\t例子:MAC 135.2.7.2\n"); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15); return 0; } //CHAR IpAddr[16]=argv[1]; BYTE MacAddr[6]=""; CHAR szMacAddr[18]=""; BOOL bReturn=GetMac(argv[1],MacAddr); sprintf(szMacAddr,"%02X-%02X-%02X-%02X-%02X-%02X",MacAddr[0],MacAddr[1],MacAddr[2],MacAddr[3],MacAddr[4],MacAddr[5]); if (bReturn) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10); printf("%s\n",szMacAddr); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15); } else { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12); printf("主机 %s 网络不通或者对方关闭ICMP回显!\n",argv[1]); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15); } return 0; }
相关文章推荐
- 批量获取远程计算机MAC
- VB获取本地或远程计算机MAC[vb模块]
- 获取计算机信息名称,MAC等
- 用C#编写获取远程IP,MAC的方法
- 获取远程主机MAC地址的方法
- C#获取本地计算机名IP,Mac地址
- ping获取远程主机MAC地址
- AutoCAD.Net/C#.Net QQ群:193522571 WINFORM获取计算机名、域名、用户名和当前Mac地址
- 获取计算机网络信息,包含IP,MAC
- DOS命令下获取远程主机MAC地址的三种方法
- Mac远程桌面连接无法验证您希望连接的计算机的身份
- 用C#编写获取远程IP,MAC的方法
- ASP.net获取远程电脑网卡MAC
- C#获取本地计算机名IP,Mac地址
- (轉)用C#编写获取远程IP,MAC的方法
- 用C#编写获取远程IP,MAC的方法
- javascript获取客户端网卡MAC和IP地址和计算机名
- mac远程桌面连接无法验证您希望连接的计算机的身份
- mac远程桌面连接windows 8.1 update,提示: 远程桌面连接无法验证您希望连接的计算机的身份
- DOS命令下获取远程主机MAC地址的三种方法