def listen(device_address): if raw_input("[!] warning this will write to your device! continue [Y/n]" ).lower() not in ['y', '']: return device = device_factory(device_address) change = False drive = 'B' inp = 'A' prev_column_data = 0 prev_row_data = 0 device.set_io_mode('output', drive) device.set_io_mode('input', inp) while True: if change: print("[+] input detected: row: {}| column: {}".format( repr_binary(row_data), repr_binary(column_data))) change = False column_data = device.read_port(drive) row_data = device.read_port(inp) if column_data != prev_column_data or row_data != prev_row_data: change = True prev_column_data = column_data prev_row_data = row_data time.sleep(0.1)
def compare_devices_regs(device1, device2, regs=register_addresses.keys()): # todo: debug device1_regs = dict() device2_regs = dict() for reg in regs: device1_regs[reg] = read_byte(device1, reg) device2_regs[reg] = read_byte(device2, reg) print("[+]registries comparison") for reg in regs: # device1_reg, device2_reg in zip(device1_regs.iteritems(), device2_regs.iteritems()): if device1_regs[reg] == device2_regs[reg]: print("[=]" + reg + ": " + repr_binary(device1[reg])) else: print("[!=]" + device1 + ": " + repr_binary(device1_regs[reg])) print("[!=]" + device2 + ": " + repr_binary(device2_regs[reg]))
def read_byte(device_addr, reg): device = device_factory(device_addr) try: reg = register_lookup(reg) except ValueError: if raw_input("[!] the register '{}' could not be found! ingore warning [N/y]".format(reg)).lower() in ['','n']: return data = device.read_byte(reg) try: reg = register_names[reg] except KeyError: print("[!] warning: register {} is unknown".format(reg)) print("[+] read: {}: {}".format(reg,repr_binary(data))) return data
def read_byte(device_addr, reg): device = device_factory(device_addr) try: reg = register_lookup(reg) except ValueError: if raw_input( "[!] the register '{}' could not be found! ingore warning [N/y]" .format(reg)).lower() in ['', 'n']: return data = device.read_byte(reg) try: reg = register_names[reg] except KeyError: print("[!] warning: register {} is unknown".format(reg)) print("[+] read: {}: {}".format(reg, repr_binary(data))) return data
def listen(device_address): if raw_input("[!] warning this will write to your device! continue [Y/n]").lower() not in ['y', '']: return device = device_factory(device_address) change = False drive = 'B' inp = 'A' prev_column_data = 0 prev_row_data = 0 device.set_io_mode('output', drive) device.set_io_mode('input', inp) while True: if change: print("[+] input detected: row: {}| column: {}".format(repr_binary(row_data), repr_binary(column_data))) change = False column_data = device.read_port(drive) row_data = device.read_port(inp) if column_data != prev_column_data or row_data != prev_row_data: change = True prev_column_data = column_data prev_row_data = row_data time.sleep(0.1)