发信人: wenbobo(灌了拂衣去)
整理人: wenbobo(2003-08-26 16:37:51), 站内信件
|
标准C不能读,因为需要端口操作。各个牌子网卡的物理地址不同,同一个牌子的不同型号的也有区别。建议使用netbios函数读MAC地址,MAC地址是网卡驱动程序提供的,一般情况下,MAC和网卡物理地址相同,但用户也可以改变MAC设置。现在的很多网卡,物理地址是可编程的,和主板BIOS的情况类似。
主题:Re:如何用标准c读网卡的物理地址?
作 者: yankyue() 2002-06-07 14:33:18 :0 :0
在c语言里加入汇编也不行么?操作系统是怎么读的?
MAC地址不是全球唯一的么,怎么会能改呢,
我想直接把MAC地址赋给一个变量。
--
主题:Re:如何用标准c读网卡的物理地址?
作 者: wenbobo(灌了拂衣去) 2002-06-07 15:06:18 :0 :0
在c语言里加入汇编后就不叫“标准C”了
操作系统是通过网卡驱动程序读网卡数据的,没有驱动程序,操作系统就无法对网卡进行任何操作,驱动程序是网卡芯片厂商负责开发的,当然知道端口细节了。
MAC地址只是数据链路层的东西。纯粹软件概念,和IP地址类似,当然不是全球唯一的,网卡硬件地址才是。
补充一下网卡的硬件地址知识。网卡硬件地址是需要花钱购买的,各个厂商把各自的厂商ID和自己购得得ID范围号作为网卡地址的前几位,后面的自己规划。我的公司的做法是用产品研发代号+版本+Vender编号(因为我们只做OEM,并不直接面向用户)。网卡在生产完成后没有地址,需要烧录,烧录后所有的网卡都拥有一个相同的内部测试用地址。经过测试,合格后再在各条流水线上分别烧录各自的地址,同时贴上地址标签。当然,各个流水线先已经划分了地址范围了。事后还要经过OQC测试,次品的地址要回收,以免浪费。
如果拥有某款网卡的烧录程序,你想怎么改你的网卡都可以,这会引起安全上的问题。所以这方面的资料一般都保密。
其实几乎所有的有固件运行的板卡,比如主板,Modem,声卡,显卡等,都有自己的唯一ID,和网卡类似,也都是可以刷新EEPROM、闪存的。CIH病毒就是VIA(威盛)内部资料泄漏的后果。
主题:Re:如何用标准c读网卡的物理地址?
作 者: zelor(东村遗少张作乐) 2002-06-08 11:23:58 :0 :0
不错,有读N年书的感觉。
----
生活,就是理想加泡面。
——张作乐,送你一束玫瑰
--
主题:Re:如何用标准c读网卡的物理地址?
M 作 者: yankyue() 2002-06-09 14:47:25 :0 :0
我只想用C语言读到网卡的物理地址,我想这不难,也不会产生安全问题吧。
顺便PC上其他硬件的唯一ID怎么读,烦请告诉一下。
--
主题:Re:如何用标准c读网卡的物理地址?
M 作 者: wenbobo(灌了拂衣去) 2002-06-09 17:50:40 :0 :0
再讲一次,网卡的物理地址没有统一的读法,各种芯片有各自的一套。一般情况下,网卡只占用不到十个IO端口,但是网卡内部有大约300多个寄存器。读写这些寄存器,需要先指定内部寄存器“窗口”,然后再指定“索引”,最后才可以读写。各种网卡芯片对于自己的板内寄存器空间和板内存储空间的安排是没有统一规定的,只要符合PCI Spec就行。以市面上常见的D-Link DFE 530系列为例,同样属于这个系列的Revision A和Revision B,IO分配都不同,必须使用不同的驱动程序。这就是直接读取板卡数据不可行的原因,当然PC上其他的硬件也是这样。不然,操作系统自己直接控制板卡,直接驱动各个设备就行乐,要那么多驱动程序干吗呢?
----
◢█◣◢█◣
◤◥◢█◤◥
◣◢█◤◣◢
◥█◤◥█◤
--
主题:Re:如何用标准c读网卡的物理地址?
M 作 者: yankyue() 2002-06-09 18:14:39 :0 :0
那为什么在win98下用winipcfg命令就能看到物理地址(适配器地址),我想知道这是怎么实现的
--
主题:Re:如何用标准c读网卡的物理地址?
M 作 者: wenbobo(灌了拂衣去) 2002-06-09 18:21:22 :0 :0
那是调用了网卡驱动程序才获得的(是MAC,不是物理地址,请你相信我,不要再争论了)。你可以试一下把网卡驱动程序删了,看它还能查到什么。有些网卡的驱动程序还有修改MAC的接口选项,在网卡驱动程序的“属性”里面可以直接把MAC改掉,你可以看看你的电脑,或许就可以改。
Windows下的网卡驱动程序是标准的“小端口”驱动程序,98和NT的不同。这方面的资料请看DDK。
如果要写通用一点的代码,用netbios要好一些。2000/XP下有查找网卡的API,但9x和NT下没有,不通用。
----
◢█◣◢█◣
◤◥◢█◤◥
◣◢█◤◣◢
◥█◤◥█◤
--
|
|