Exemplo n.º 1
0
def order():
    order_coffee()
Exemplo n.º 2
0
    '9cd21e6c1933': 'cheap_dell'
}

if hasattr(socket, 'AF_PACKET'):
    RAW_SOCKET = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0003))
elif hasattr(socket, 'AF_INET'):
    RAW_SOCKET = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.htons(0x0003))

while True:
    PACKET = RAW_SOCKET.recvfrom(2048)
    ETHERNET_HEADER = PACKET[0][0:14]
    ETHERNET_DETAILED = struct.unpack("!6s6s2s", ETHERNET_HEADER)
    # skip non-ARP packets
    ETHERTYPE = ETHERNET_DETAILED[2]
    if ETHERTYPE != '\x08\x06':
        continue
    # read out data
    ARP_HEADER = PACKET[0][14:42]
    ARP_DETAILED = struct.unpack("2s2s1s1s2s6s4s6s4s", ARP_HEADER)
    SOURCE_MAC = binascii.hexlify(ARP_DETAILED[5])
    SOURCE_IP = socket.inet_ntoa(ARP_DETAILED[6])
    DEST_IP = socket.inet_ntoa(ARP_DETAILED[8])

    if SOURCE_MAC in MACS:
        print 'source: ' + MACS[SOURCE_MAC]
        if MACS[SOURCE_MAC] == 'coffee_dash':
            print 'coffee_dash button fired!'
            order_coffee()
    else:
        print "Unknown MAC " + SOURCE_MAC + " from IP " + SOURCE_IP