![](/img/trans.png)
[英]Network Packet Sniffer:Process an Ethernet frame (MAC src&dest address + protocole) using python
[英]MAC, ethernet id using python
如何使用python获取正确的本地网卡的MAC /以太网ID? Google / stackoverflow上的大多数文章都建议解析ipconfig / all(windows)和ifconfig(Linux)的结果。 在Windows(2x / xp / 7)上,“ ipconfig / all”工作正常,但这是一种故障安全方法吗? 我是Linux新手,不知道'ifconfig'是否是获取MAC /以太网ID的标准方法。
我必须在基于本地MAC /以太网ID的python应用程序中实现许可证检查方法。
当您安装了VPN或虚拟化应用程序(例如VirtualBox)时,是一种特殊情况。 在这种情况下,您将获得不止一个MAC /以太网ID。 如果我必须使用解析方法,但这不是问题,但我不确定。
干杯
普拉尚
import sys
import os
def getMacAddress():
if sys.platform == 'win32':
for line in os.popen("ipconfig /all"):
if line.lstrip().startswith('Physical Address'):
mac = line.split(':')[1].strip().replace('-',':')
break
else:
for line in os.popen("/sbin/ifconfig"):
if line.find('Ether') > -1:
mac = line.split()[4]
break
return mac
是一个跨平台功能,它将为您返回答案。
在Linux上,您可以通过sysfs访问硬件信息。
>>> ifname = 'eth0'
>>> print open('/sys/class/net/%s/address' % ifname).read()
78:e7:g1:84:b5:ed
这样,您就避免了炮轰ifconfig和解析输出的复杂性。
我使用了基于套接字的解决方案,在Linux上运行良好,并且我相信Windows也可以
def getHwAddr(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', ifname[:15]))
return ''.join(['%02x:' % ord(char) for char in info[18:24]])[:-1]
getHwAddr("eth0")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.