2012-12-13 1 views
4

어떻게하면 내 Mac 주소를 얻을 수 있습니다 : \ x ## \ x ## \ x ## \ x ## \ x ## \ x ##?
이더넷 헤더를 생성하고 소스 하드웨어 주소를 자동 생성하려고합니다.파이썬에서 MAC 주소 가져 오기 및 문자열에 추가

mac 주소를 48 비트 정수로 사용하려면 uuid.getnode()을 사용하고 있습니다. 이미 그 형식으로 된 문자열에 추가 할 수 있도록 변환 할 수 있습니까?
예 : eth_header = "\xff\xff\xff\xff\xff\xff" + magicconvert(uuid.getnode())

답변

2

나는 여러 가지 방법이 있습니다 확신 해요 방법 중 하나 이것에 대해 :

import uuid 
hdr="\xff"*6 
mac=uuid.getnode() 
txt="%012X"%mac 
as_b=[int("".join(x),16) for x in map(None,*(txt[::2],txt[1::2]))] 
as_s="".join(chr(b) for b in as_b) 
out=hdr+as_s 
3

사용자 nneonneo이 9 월 13 일에 답변했습니다. 신용은 그에게 간다 :

'-'.join('%02X' % ((uuid.getnode() >> 8*i) & 0xff) for i in reversed(xrange(6))) 

서식을 원하는대로 지정하려면이 값을 편집하십시오.

"uuid.getnode()"가 무작위 값을 반환하거나 시스템의 임의의 네트워크 인터페이스의 MAC 주소를 가져 오는 중일 수 있습니다. 내가 말할 수있는 것부터 알 수있는 방법이 없습니다.

0
from itertools import izip 
import uuid 

token = "\\x" 
mac_address = "%012x" % uuid.getnode() 
iter_mac_address = iter(mac_address) 
"%s%s" % (token, token.join(a+b for a, b in izip(iter_mac_address, iter_mac_address))) 
관련 문제