如何获取网卡原生MAC地址和当前MAC地址

如何获取网卡原生MAC地址和当前MAC地址,第1张

查看电脑网卡mac地址的方法如下: 按windows键和r键进入运行面板; 在运行面板中输入cmd,按回车进入命令提示符中; 在命令提示符中输入ipconfig /all,按回车,在命令的返回中即可找到mac地址。

大家好,学校采用绑定MAC地址,用Ruijie (瑞捷)Supplicant拨号上网,但是它不允许共享上网今天介绍一下如何破解windows下实达认证24正式版。并提供破解补丁下载

首先介绍一下实达认证软件

IEEE 8021x标准在IEEE 802网络结构的基础上,定义了一种基于工作站/服务器模式的输入控制机制和认证协

议,约束网络服务只向那些允许进行访问的用户提供,克服传统网桥的安全性弱点。

实达认证主要是基于8021x,服务器上绑定IP,MAC,端口号,限制客户端使用代理,多网卡

客户端supplicant24检测机器是否安装多网卡,设置代理,若有,则提示"目前系统工作环境与软件运行环境相冲

突,软件不能正常运行!/n(Code: 1)”类似的信息出现,其返回Code值表示了冲突的原因。

Code=2,您安装了多块网卡,和服务器要求的不符合

Code=4,您安装了代理服务器,和服务器要求的不符合

"

现在许多学校多采用这种方式!!

下面介绍如何利用ollydbg解除客户端的多网卡,代理限制

1首先利用peid发现该软件没有加壳,且用VC编写

2装载主程序8021xexe,利用参考找到三处,与之相关的

分别将它们指令改为nop

运行8021xexe,发现有一处,改为NOP时,在有多网卡,代理的情况下并不报错,排除该处,看来余下的两处就是我

们所要找的

容易验证(00407A28)是代理限制,(00408724)是双网卡限制

相关代码如下:静态分析这段代码,发现只要把00407A28处改为jmp 8021x00407AEB,即可跳过code4

00407A25 > 83F8 04 CMP EAX,4

00407A28 0F85 BD000000 JNZ 8021x00407AEB (jmp 8021x00407AEB)

00407A2E 8B8E 7C010000 MOV ECX,DWORD PTR DS:[ESI+17C]

00407A34 85C9 TEST ECX,ECX

00407A36 74 05 JE SHORT 8021x00407A3D

00407A38 E8 93E2FFFF CALL 8021x00405CD0

00407A3D > 6A 04 PUSH 4

00407A3F 8BCE MOV ECX,ESI

00407A41 C786 7C010000 >MOV DWORD PTR DS:[ESI+17C],0

00407A4B E8 70010000 CALL 8021x00407BC0

00407A50 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]

00407A54 6A 06 PUSH 6

00407A56 50 PUSH EAX

00407A57 E8 A4C5FFFF CALL 8021x00404000

00407A5C 8BC8 MOV ECX,EAX

00407A5E E8 2DC6FFFF CALL 8021x00404090

00407A63 8D4C24 0C LEA ECX,DWORD PTR SS:[ESP+C]

00407A67 C74424 20 0300>MOV DWORD PTR SS:[ESP+20],3

00407A6F E8 6CFC0000 CALL <JMP&MFC42#540>

00407A74 6A 04 PUSH 4

00407A76 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]

00407A7A 68 90224200 PUSH 8021x00422290 ; ASCII "(Code:%d)"

00407A7F 51 PUSH ECX

00407A80 C64424 2C 04 MOV BYTE PTR SS:[ESP+2C],4

00407A85 E8 C2FC0000 CALL <JMP&MFC42#2818>

00407A8A 83C4 0C ADD ESP,0C

00407A8D 8D5424 0C LEA EDX,DWORD PTR SS:[ESP+C]

00407A91 8D4424 04 LEA EAX,DWORD PTR SS:[ESP+4]

00407A95 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]

00407A99 52 PUSH EDX

00407A9A 50 PUSH EAX

00407A9B 51 PUSH ECX

00407A9C E8 C9FC0000 CALL <JMP&MFC42#922>

00407AA1 50 PUSH EAX

00407AA2 8D4C24 08 LEA ECX,DWORD PTR SS:[ESP+8]

00407AA6 C64424 24 05 MOV BYTE PTR SS:[ESP+24],5

00407AAB E8 60FC0000 CALL <JMP&MFC42#858>

00407AB0 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]

00407AB4 C64424 20 04 MOV BYTE PTR SS:[ESP+20],4

00407AB9 E8 16FC0000 CALL <JMP&MFC42#800>

00407ABE 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+4]

00407AC2 6A 00 PUSH 0

00407AC4 6A 00 PUSH 0

00407AC6 52 PUSH EDX

00407AC7 E8 70FD0000 CALL <JMP&MFC42#1200>

00407ACC 8D4C24 0C LEA ECX,DWORD PTR SS:[ESP+C]

00407AD0 C64424 20 03 MOV BYTE PTR SS:[ESP+20],3

00407AD5 E8 FAFB0000 CALL <JMP&MFC42#800>

00407ADA C74424 20 FFFF>MOV DWORD PTR SS:[ESP+20],-1

00407AE2 8D4C24 04 LEA ECX,DWORD PTR SS:[ESP+4]

00407AE6 > E8 E9FB0000 CALL <JMP&MFC42#800>

00407AEB > 8B4C24 18 MOV ECX,DWORD PTR SS:[ESP+18]

00407AEF 5E POP ESI

同样双网卡限制代码:静态分析这段代码,发现只要把00408724处改为JMP 8021x004087F3,即可跳过code2

00408722 | 85C0 TEST EAX,EAX

00408724 | 0F84 C9000000 JE 8021x004087F3 (改为JMP 8021x004087F3)

0040872A | 8B8D 7C010000 MOV ECX,DWORD PTR SS:[EBP+17C]

00408730 | 85C9 TEST ECX,ECX

00408732 | 74 05 JE SHORT 8021x00408739

00408734 | E8 97D5FFFF CALL 8021x00405CD0

00408739 |> 6A 02 PUSH 2

0040873B | 8BCD MOV ECX,EBP

0040873D | C785 7C010000 >MOV DWORD PTR SS:[EBP+17C],0

00408747 | E8 74F4FFFF CALL 8021x00407BC0

0040874C | 8D5424 18 LEA EDX,DWORD PTR SS:[ESP+18]

00408750 | 6A 06 PUSH 6

00408752 | 52 PUSH EDX

00408753 | E8 A8B8FFFF CALL 8021x00404000

00408758 | 8BC8 MOV ECX,EAX

0040875A | E8 31B9FFFF CALL 8021x00404090

0040875F | 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]

00408763 | C68424 3C03000>MOV BYTE PTR SS:[ESP+33C],2

0040876B | E8 70EF0000 CALL <JMP&MFC42#540>

00408770 | 6A 02 PUSH 2

00408772 | 8D4424 20 LEA EAX,DWORD PTR SS:[ESP+20]

00408776 | B3 03 MOV BL,3

00408778 | 68 90224200 PUSH 8021x00422290 ; ASCII "(Code:%d)"

0040877D | 50 PUSH EAX

0040877E | 889C24 4803000>MOV BYTE PTR SS:[ESP+348],BL

00408785 | E8 C2EF0000 CALL <JMP&MFC42#2818>

0040878A | 83C4 0C ADD ESP,0C

0040878D | 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]

00408791 | 8D5424 18 LEA EDX,DWORD PTR SS:[ESP+18]

00408795 | 8D4424 20 LEA EAX,DWORD PTR SS:[ESP+20]

00408799 | 51 PUSH ECX

0040879A | 52 PUSH EDX

0040879B | 50 PUSH EAX

0040879C | E8 C9EF0000 CALL <JMP&MFC42#922>

004087A1 | 50 PUSH EAX

004087A2 | 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]

004087A6 | C68424 4003000>MOV BYTE PTR SS:[ESP+340],4

004087AE | E8 5DEF0000 CALL <JMP&MFC42#858>

004087B3 | 8D4C24 20 LEA ECX,DWORD PTR SS:[ESP+20]

004087B7 | 889C24 3C03000>MOV BYTE PTR SS:[ESP+33C],BL

004087BE | E8 11EF0000 CALL <JMP&MFC42#800>

004087C3 | 8B4C24 18 MOV ECX,DWORD PTR SS:[ESP+18]

004087C7 | 6A 00 PUSH 0

004087C9 | 6A 00 PUSH 0

004087CB | 51 PUSH ECX

004087CC | E8 6BF00000 CALL <JMP&MFC42#1200>

004087D1 | 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]

004087D5 | C68424 3C03000>MOV BYTE PTR SS:[ESP+33C],2

004087DD | E8 F2EE0000 CALL <JMP&MFC42#800>

004087E2 | 8D4C24 18 LEA ECX,DWORD PTR SS:[ESP+18]

004087E6 | C68424 3C03000>MOV BYTE PTR SS:[ESP+33C],1

004087EE | E8 E1EE0000 CALL <JMP&MFC42#800>

004087F3 |> 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]

004087F7 | C68424 3C03000>MOV BYTE PTR SS:[ESP+33C],0

004087FF | E8 D0EE0000 CALL <JMP&MFC42#800>

这样supplicant24正式版的两个限制就解除了,客户端多台机器就可组成局域网,只用一个帐号就能上网了

24正式版与231版相比,破解要困难一些,231版连"目前系统工作环境与软件运行环境相冲突,软件不能正常

运行!"这样的参考都有,参考具多!!

当然也可以用另外的破解思路,举个例子,软件是用VC编写的,出错为messageboxa函数,bpx messageboxa后就可

以把它拦截,动态跟踪,改变标志寄存器,同样可以找到,异曲同工

软件在win98,win2000+sp4,winxp,下测试通过!!!!

1NDIS(DDK)通过驱动程序获取MAC地址

ndis规范中说明,网卡驱动程序支持ioctl_ndis_query_stats接口

参数如下:

OID_802_3_PERMANENT_ADDRESS :物理地址

OID_802_3_CURRENT_ADDRESS :mac地址

于是我们的方法就得到了。

首先,看看注册表,找一找网卡有几块,分别是什么设备名。

具体位置和os有关,2000下在hlm/software/microsoft/windows nt/current version/networkcards。

然后createfile(devicename,)注意,要用linkname,因此

还要加上"//////device//"

接着

deviceiocontrol(hmac,IOCTL_NDIS_QUERY_STATS,

OID_802_3_PERMANENT_ADDRESS/OID_802_3_CURRENT_ADDRESS)

具体的情况可以参看ddk下的

OID_802_3_CURRENT_ADDRESS条目

2NetAPI-2得到MAC (MSDN推荐方法)

#include <windowsh>

//#include <winconh>

#include <stdlibh>

#include <stdioh>

#include <timeh>

typedef struct _ASTAT_

{

ADAPTER_STATUS adapt;

NAME_BUFFER NameBuff [30];

}ASTAT, PASTAT;

ASTAT Adapter;

int main (void)

{

NCB Ncb;

UCHAR uRetCode;

char NetName[50];

LANA_ENUM lenum;

int i;

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

Ncbncb_command = NCBENUM;

Ncbncb_buffer = (UCHAR )&lenum;

Ncbncb_length = sizeof(lenum);

uRetCode = Netbios( &Ncb );

printf( "The NCBENUM return code is: 0x%x /n", uRetCode );

for(i=0; i < lenumlength ;i++)

{

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

Ncbncb_command = NCBRESET;

Ncbncb_lana_num = lenumlana;

uRetCode = Netbios( &Ncb );

printf( "The NCBRESET on LANA %d return code is: 0x%x /n",

lenumlana, uRetCode );

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

Ncbncb_command = NCBASTAT;

Ncbncb_lana_num = lenumlana;

strcpy( Ncbncb_callname, " " );

Ncbncb_buffer = (char ) &Adapter;

Ncbncb_length = sizeof(Adapter);

uRetCode = Netbios( &Ncb );

printf( "The NCBASTAT on LANA %d return code is: 0x%x /n",

lenumlana, uRetCode );

if ( uRetCode == 0 )

{

printf( "The Ethernet Number on LANA %d is:%02x%02x%02x%02x%02x%02x/n",

lenumlana,

Adapteradaptadapter_address[0],

Adapteradaptadapter_address[1],

Adapteradaptadapter_address[2],

Adapteradaptadapter_address[3],

Adapteradaptadapter_address[4],

Adapteradaptadapter_address[5] );

}

}

}

3用COM API获取网卡MAC地址

这种方法使用COM API创建一个GUID(全局唯一标识符)并从那里继承MAC地址。

GUID通常用来标识COM组件以及系统中的其他对象。它们是由MAC地址(结合其他东西)计算得来的,表面上MAC地址就包含在其中。

我说表面上是因为事实上并没有包含。我提供这种方法更多的是为了作为反面教材。您也许用这种方法能够得到MAC地址,但

有时候您只会得到随机的十六进制数值。下面的例子十分简单,无需多讲。我们使用CoCreateGuid创建GUID,并将最后六个字节

放入字符串中。它们可能是MAC地址,但并不是必然的。

uuidcpp

#include <windowsh>

#include <iostream>

#include <conioh>

using namespace std;

int main()

{

cout << "MAC address is: ";

// 向COM要求一个UUID。如果机器中有以太网卡,

// UUID最后的六个字节(Data4的2-7字节)应该是本地以太网卡的MAC地址。

GUID uuid;

CoCreateGuid(&uuid);

// Spit the address out

char mac_addr[18];

sprintf(mac_addr,"%02X:%02X:%02X:%02X:%02X:%02X",

uuidData4[2],uuidData4[3],uuidData4[4],

uuidData4[5],uuidData4[6],uuidData4[7]);

cout << mac_addr << endl;

getch();

return 0;

}

4用NetAPI来获取网卡MAC地址

首先在头文件定义中加入#include "nb30h"

#pragma comment(lib,"netapi32lib")

typedef struct _ASTAT_

{

ADAPTER_STATUS adapt;

NAME_BUFFER NameBuff[30];

} ASTAT, PASTAT;

就可以这样调用来获取远程网卡MAC地址了:

CString GetMacAddress(CString sNetBiosName)

{

ASTAT Adapter;

NCB ncb;

UCHAR uRetCode;

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

ncbncb_command = NCBRESET;

ncbncb_lana_num = 0;

uRetCode = Netbios(&ncb);

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

ncbncb_command = NCBASTAT;

ncbncb_lana_num = 0;

sNetBiosNameMakeUpper();

FillMemory(ncbncb_callname, NCBNAMSZ - 1, 0x20);

strcpy((char )ncbncb_callname, (LPCTSTR) sNetBiosName);

ncbncb_callname[sNetBiosNameGetLength()] = 0x20;

ncbncb_callname[NCBNAMSZ] = 0x0;

ncbncb_buffer = (unsigned char ) &Adapter;

ncbncb_length = sizeof(Adapter);

uRetCode = Netbios(&ncb);

CString sMacAddress;

if (uRetCode == 0)

{

sMacAddressFormat(_T("%02x%02x%02x%02x%02x%02x"),

Adapteradaptadapter_address[0],

Adapteradaptadapter_address[1],

Adapteradaptadapter_address[2],

Adapteradaptadapter_address[3],

Adapteradaptadapter_address[4],

Adapteradaptadapter_address[5]);

}

return sMacAddress;

}

内网不要用官方的ruijie,用其他第三方方案,比如mentohust,mentosupplicant等。这线学生开发的开源(或免费)登陆端,既没有什么“不允许多网卡”啊、“不允许代理、路由”啊什么的限制,还有个功能就是mac地址伪造。你真实mac地址可以随便,然后再“mac伪造”那里填上绑定的mac

就可以了。

以上就是关于如何获取网卡原生MAC地址和当前MAC地址全部的内容,包括:如何获取网卡原生MAC地址和当前MAC地址、请问,我是用学校局域网上网的,可是要用supplicant 登陆,绑定了mac 还有ip 可是网速很慢,连传奇都登陆、哪种方法获取Mac 地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9767001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存