Python: Получение MAC-адреса с помощью uuid показывает слегка измененный MAC-адрес системы
Я пытался получить MAC-адрес компьютера, который я использую с netifaces и модулем Python uuid. Я использовал следующий код:
import netifaces
from uuid import getnode as get_mac
interfaces = netifaces.interfaces()
print(interfaces)
for interface in interfaces:
print(netifaces.ifaddresses(interface))
addr = netifaces.ifaddresses(interface)[netifaces.AF_LINK]
print(addr)
mac = get_mac()
mac_up = ':'.join(("%012X" % mac)[i:i+2] for i in range(0, 12, 2))
print(mac_up)
Выход:
['{1D16676A-E736-4270-9CDC-0DCDC7B75085}', '{5C842FD7-362A-4303-BC0D-F39D143D8AF6}', '{12C9575B-0038-4DCA-BD2A-2D14640C6525}', '{53609BA0-1064-491B-B755-7562C4EEB3FC}', '{456B16E8-737A-4C1E-8951-CABA44D359DF}', '{846EE342-7039-11DE-9D20-806E6F6E6963}', '{ABB81A2A-BDC5-4F89-827A-E27A0D82A88C}', '{31A51864-F30F-40D1-8331-10FEFAACA26E}', '{3D9390CA-7F9D-4BFB-ABD6-606B3564C3CE}', '{46E22F14-C414-48F8-82EB-D4D5622358B3}', '{35BF6E1A-628D-4BD4-B5BF-5321069E9CCE}']
{-1000: [{'addr': '00:ff:1d:16:67:6a'}], 23: [{'addr': 'fe80::c528:fd58:9be9:8210%23', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%23'}]}
[{'addr': '00:ff:1d:16:67:6a'}]
{-1000: [{'addr': '64:5a:04:72:c1:2d'}], 23: [{'addr': 'fe80::435:1ea7:11b1:86ea%18', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%18'}]}
[{'addr': '64:5a:04:72:c1:2d'}]
{-1000: [{'addr': '26:5a:04:72:c1:2c'}], 23: [{'addr': 'fe80::5829:37be:c695:e292%16', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%16'}]}
[{'addr': '26:5a:04:72:c1:2c'}]
{-1000: [{'addr': '64:5a:04:72:c1:2c'}], 23: [{'addr': 'fe80::7808:c894:e16a:3e33%13', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%13'}], 2: [{'addr': '192.168.1.13', 'netmask': '255.255.255.0', 'broadcast': '192.168.1.255'}]}
[{'addr': '64:5a:04:72:c1:2c'}]
{-1000: [{'addr': '74:86:7a:40:c0:d2'}], 23: [{'addr': 'fe80::6d42:ba39:2a0d:53cf%10', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%10'}]}
[{'addr': '74:86:7a:40:c0:d2'}]
{-1000: [{'addr': ''}], 23: [{'addr': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128', 'broadcast': '::1'}], 2: [{'addr': '127.0.0.1', 'netmask': '255.0.0.0', 'broadcast': '127.255.255.255'}]}
[{'addr': ''}]
{-1000: [{'addr': '00:00:00:00:00:00:00:e0'}]}
[{'addr': '00:00:00:00:00:00:00:e0'}]
{-1000: [{'addr': '00:00:00:00:00:00:00:e0'}]}
[{'addr': '00:00:00:00:00:00:00:e0'}]
{-1000: [{'addr': '00:00:00:00:00:00:00:e0'}], 23: [{'addr': 'fe80::100:7f:fffe%12', 'netmask': 'ffff:ffff:ffff:ffff::/64', 'broadcast': 'fe80::ffff:ffff:ffff:ffff%12'}]}
[{'addr': '00:00:00:00:00:00:00:e0'}]
{-1000: [{'addr': '00:00:00:00:00:00:00:e0'}]}
[{'addr': '00:00:00:00:00:00:00:e0'}]
{-1000: [{'addr': '00:00:00:00:00:00:00:e0'}]}
[{'addr': '00:00:00:00:00:00:00:e0'}]
64:5A:04:72:C1:2D
Я не хочу использовать (использованный здесь один раз для тестирования) модуль uuid, так как он может выдавать случайное 48-битное целое число (когда он не может найти MAC-адрес), который может быть поддельным MAC-адресом. Проблема в том, что когда я проверяю MAC-адрес вручную из "Центра управления сетями и общим доступом" на панели управления, он показывает это:
Мои вопросы:
(i) Почему извлеченный mac-адрес наконец-то немного изменился?
(ii) Список netifaces.interfaces(), показанный здесь, не похож на список в документации netifaces, таких как ['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']? Здесь четвертый адрес, напечатанный циклом, является правым и текущим MAC-адресом. Четвертый экземпляр словаря netifaces.ifaddresses(interface) имеет дополнительную пару ключ-значение с ключом 2, который представляет собой AF_INET (обычные интернет-адреса). Правильный ли процесс получения текущего правильного MAC-адреса, мы проверяем, присутствует ли этот AF_INET в netifaces.ifaddresses(интерфейс), а затем получаем netifaces.ifaddresses(интерфейс)?