获取网卡物理mac地址时的问题,mac地址随机变动。


在开发过程中需要获取物理网卡的MAC地址:

python代码如下:

import wmi
c = wmi.WMI()

for s in c.Win32_NetworkAdapter():
    print(s.MACAddress)

 在实际过程中,有时候会发现mac地址每次获取会发生改变,

通过检查发现,获取mac地址时会把系统虚拟的网卡地址也会获取到。我们通过powershell命令进行查看当前系统中拥有MAC地址的有那些设备:

PS C:\Users\xxx> get-wmiobject -class Win32_NetworkAdapterConfiguration -namespace "root\cimv2" | select ServiceName,ipadress,MacAddress

ServiceName  ipadress MacAddress
-----------  -------- ----------
kdnic
rt640x64
RtlWlanu              50:2B:73:D8:1A:C9
vwifimp               52:2B:73:D8:1A:C9
RasSstp
RasAgileVpn
Rasl2tp
PptpMiniport
RasPppoe
NdisWan               F2:BB:20:52:41:53
NdisWan               0A:93:20:52:41:53
NdisWan               16:86:20:52:41:53
vwifimp               50:2B:73:D8:1A:C9
VMnetAdapter          00:50:56:C0:00:01
VMnetAdapter          00:50:56:C0:00:08

  看结果中的NdisWan,如果获取到的是它,那机器每次重启都有可能发生改变。

所以需要把代码做一下调整:

import wmi
c = wmi.WMI()

for s in c.Win32_NetworkAdapter():
        if(s.MACAddress != None and s.PhysicalAdapter):
            print(s.MACAddress)

  过滤掉没有mac地址的设备和非物理网络设备。如果有虚拟机,可以把虚拟机的虚拟网卡也过滤掉。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM