引言
MAC地址(英语:Media Access Control Address),直译为媒体访问控制地址,也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的地址。在OSI模型中,第三层网络层负责IP地址,第二层数据链接层则负责MAC地址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。
代码
import uuid
mac_address = uuid.UUID(int=uuid.getnode()).hex[-12:].upper()
mac_address = '-'.join([mac_address[i:i+2] for i in range(0, 11, 2)])
print(mac_address)
或者
import uuid
mac_address = uuid.uuid1().hex[-12:].upper()
mac_address = '-'.join([mac_address[i:i+2] for i in range(0, 11, 2)])
print(mac_address)
校验
在cmd
里面通过ipconfig -all
命令查看物理地址(就是MAC地址),与python获取的结果对比一下。
拓展
MAC地址的长度为48位(6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40
就是一个MAC地址,其中前3个字节,16进制数00-16-EA
代表网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而后3个字节,16进制数AE-3C-40
代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性。
既然知道了MAC地址的规则,我们也能自己随机生成一个,下方是用Python“伪造”MAC地址的代码:
import random
value_range = [hex(i)[-1].upper() for i in range(16)]
mac_address = random.choices(value_range, k=12)
mac_address = '-'.join([''.join(mac_address[i:i+2]) for i in range(0, 11, 2)])
print(mac_address)
参考
https://zh.wikipedia.org/wiki/MAC地址
https://docs.python.org/3/library/uuid.html
https://www.cnki.com.cn/Article/CJFDTotal-DNBC201110037.htm