怎样在获得和设置mac 地址呢??

guaiwei 2004-12-20 01:14:44
请教各位大侠怎样编程才能获得和设置mac地址?小弟先谢过了
...全文
271 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
conquer 2004-12-30
  • 打赏
  • 举报
回复
环境:w2k server + vc6.0 说明:这里只能获得MAC地址。
#include <stdio.h>
#include <stdlib.h>
#include <httpext.h>
#include <windef.h>
#include <Nb30.h>
int getMAC(char * mac)
{
NCB ncb;
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
} ASTAT, * PASTAT;
ASTAT Adapter;

typedef struct _LANA_ENUM
{ // le
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<lana_enum.length; lana++ )
{
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = lana_enum.lana[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_enum.lana[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 : %s \n",mac);
return 0;
}

运行结果:
D:\work\mac\Debug>m
mac : 00-0A-EB-50-89-C2

D:\work\mac\Debug>ipconfig /all

Windows 2000 IP Configuration

Host Name . . . . . . . . . . . . : amphitryon
Primary DNS Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Broadcast
IP Routing Enabled. . . . . . . . : Yes
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : bgctv

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek RTL8139(A) PCI Fast Ethernet
Adapter
Physical Address. . . . . . . . . : 00-0A-EB-50-89-C2
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
DNS Servers . . . . . . . . . . . :
constantine 2004-12-30
  • 打赏
  • 举报
回复
论坛里有mac地址的总结,可以去看看
http://community.csdn.net/Expert/topic/3160/3160135.xml?temp=.4911615
fireofhell 2004-12-30
  • 打赏
  • 举报
回复
MAC地址也是可以更改的
ilovevc 2004-12-30
  • 打赏
  • 举报
回复
如果是设置mac地址,搜索windows的registry注册库,找到所有的Mac地址,一个一个该,看哪个能行。
qiuyihome 2004-12-30
  • 打赏
  • 举报
回复
MAC地址是固化在网卡的flashrom里的,不可能更改。只能通过spoof方式改变与Ip的对应关系。
xxiaoran 2004-12-20
  • 打赏
  • 举报
回复
ding...
piziliu2003 2004-12-20
  • 打赏
  • 举报
回复
system("ipcopnfig /all");
投機取巧
qiaoerfu 2004-12-20
  • 打赏
  • 举报
回复
铅入式系统应该是可以改的
正在研究......
嘿嘿!
pacman2000 2004-12-20
  • 打赏
  • 举报
回复
在linux下获得需要用ioctl调用,更改好像没办法的吧。。。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧