功能及用途
用于采集局域网所有计算机信息主要是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;
}