forked from hswaw/hscloud
vuko
3cd087d939
repository: https://code.hackerspace.pl/checkinator revision: 713c7e6c1a8fd6147522c1a5e3067898a1d8bf7a Change-Id: I1bd2975a46ec0d9a89d6594fb4b9d49832001627 Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1219 Reviewed-by: q3k <q3k@hackerspace.pl>
30 lines
785 B
Python
30 lines
785 B
Python
import logging
|
|
import pcapy
|
|
import struct
|
|
|
|
interface = 'wlan0'
|
|
target = './dhcp-cap'
|
|
logger = logging.getLogger()
|
|
logger.setLevel(logging.DEBUG)
|
|
logger.addHandler(logging.StreamHandler())
|
|
|
|
def hwaddr_ascii(packet):
|
|
# picking up MAC directly from ethernet frame
|
|
return ':'.join('%02x' % ord(c) for c in packet[6:12])
|
|
|
|
def capture_dhcp(itf):
|
|
f = open(target, 'w')
|
|
reader = pcapy.open_live(itf, 4096, False, 5000)
|
|
reader.setfilter('udp dst port 67')
|
|
def callback(header, packet):
|
|
hwaddr = hwaddr_ascii(packet)
|
|
logger.info('Captured dhcp request from %s', hwaddr)
|
|
f.write(hwaddr + '\n')
|
|
f.flush()
|
|
try:
|
|
while True:
|
|
reader.dispatch(1, callback)
|
|
except KeyboardInterrupt:
|
|
pass
|
|
|
|
capture_dhcp('wlan0')
|