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')