获取网卡的MAC地址

  • 格式:doc
  • 大小:55.00 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#include

#include

#pragma comment(lib,"netapi32.lib")

int getMAC(char * mac)

{

NCB ncb;

typedef struct _ASTAT_

{

ADAPTER_STATUS adapt;

NAME_BUFFER NameBuff [30];

}ASTAT,*PASTAT;

ASTAT Adapter;

typedef struct _LANA_ENUM

{

UCHAR length;

UCHAR lana[MAX_LANA];

}LANA_ENUM;

LANA_ENUM lana_enum;

UCHAR uRetCode;

memset(&ncb, 0, sizeof(ncb));

memset(&lana_enum, 0, sizeof(lana_enum));

ncb.ncb_command = NCBENUM;

ncb.ncb_buffer = (unsigned char *)&lana_enum;

ncb.ncb_length = sizeof(LANA_ENUM);

uRetCode = Netbios(&ncb);

if(uRetCode != NRC_GOODRET)

return uRetCode;

for(int lana=0; lana

ncb.ncb_command = NCBRESET;

ncb.ncb_lana_num = lana_na[lana];

uRetCode = Netbios(&ncb);

if(uRetCode == NRC_GOODRET)

break;

}

if(uRetCode != NRC_GOODRET)

return uRetCode;

memset(&ncb, 0, sizeof(ncb));

ncb.ncb_command = NCBASTAT;

ncb.ncb_lana_num = lana_na[0];

strcpy((char*)ncb.ncb_callname, "*");

ncb.ncb_buffer = (unsigned char *)&Adapter; ncb.ncb_length = sizeof(Adapter);

uRetCode = Netbios(&ncb);

if(uRetCode != NRC_GOODRET)

return uRetCode;

sprintf(mac,"%02X-%02X-%02X-%02X-%02X-%02X", Adapter.adapt.adapter_address[0],

Adapter.adapt.adapter_address[1],

Adapter.adapt.adapter_address[2],

Adapter.adapt.adapter_address[3],

Adapter.adapt.adapter_address[4],

Adapter.adapt.adapter_address[5]

);

return 0;

}

int main(int argc, char* argv[])

{

char mac[200];

getMAC(mac);

printf("MAC Address : %s \n",mac);

return 0;

}

相关主题