Pra pegar o endereço MAC (Media Access Control) de uma placa de rede com python, você precisa primeiro ser root.
Aqui vai um exemplo:
sudo python
>>> import socket
>>> fd = socket.socket(socket.AF_PACKET, socket.SOCK_RAW)
>>> fd.bind(('eth0', 9999))
>>> mac = fd.getsockname()[-1]
>>> print ':'.join(['%02x' % ord(n) for n in mac])
00:16:d3:93:c2:e6
Outros sistemas:
1. Encontrei um cara que faz isso no Windows da maneira mais tosca – interpretando o resultado do ipconfig /all. Acho que deve ter uma maneira melhor que essa. Em todo caso, veja o link.
2. Outros Unix-like tipo BSD não têm AF_PACKET, então isso não funciona. Pra cada um, tem que saber qual é o ioctl que manda pro socket, ai usando o módulo struct do python fica fácil pegar o resultado.

Comentários