批量获取远程计算机MAC
功能及用途
用于采集局域网所有计算机信息主要是mac地址,ip地址,主机名。
格式化读写函数
fprintf()格式化写
fscanf()格式化读
使用说明
IP文件:ip.txt
IP文件格式:ip+空格+其他信息
IP文件和该执行文件放同一目录
代码
// ALLMAC.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <Windows.h> #include <WinBase.h> #include <WinSock2.h> #include <IPHlpApi.h> #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"IPHlpApi.lib") #pragma comment(lib,"Kernel32.lib.") int _tmain(int argc, _TCHAR* argv[]) { CHAR szFilePath[MAX_PATH]; /*GetModuleFileName(NULL,szFilePath,MAX_PATH);*/ GetCurrentDirectory(MAX_PATH,szFilePath); //printf(szFilePath); CHAR macAddr[13]={0}; ULONG Mac[2]; ULONG MacLen; memset (Mac, 0xff, sizeof (Mac)); MacLen = 6; char ip[16],info[100]; FILE *fp; FILE *fpw; char szPath[MAX_PATH]; sprintf(szPath,"%s\\%s",szFilePath,"ip.txt"); fp=fopen(szPath,"r"); sprintf(szPath,"%s\\%s",szFilePath,"mac.txt"); fpw=fopen(szPath,"w"); char szMacAddr[20]; while(!feof(fp)) { fscanf(fp,"%s %s",ip,info); BYTE MacAddr[6]; IPAddr ipAddr=inet_addr(ip); 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]; } char szMacAddr[18]; sprintf(szMacAddr,"%02X-%02X-%02X-%02X-%02X-%02X",MacAddr[0],MacAddr[1],MacAddr[2],MacAddr[3],MacAddr[4],MacAddr[5]); printf("IP:%s\tINFO:%s\tMAC:%s\n",ip,info,szMacAddr); fprintf(fpw,"IP:%s\tMAC:%s\t备注:%s\n",ip,szMacAddr,info); } } fclose(fp); fclose(fpw); getchar(); return 0; }
版权声明:本文为shya原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。