import usb.core import usb.util import ccid_raw import phone def find_dev(): dev = usb.core.find(idVendor=0x03eb, idProduct=0x6004) if dev is None: raise ValueError("Device not found") else: print("Found device") return dev SIM_WR = 0x1 SIM_RD = 0x82 SIM_INT = 0x83 PHONE_WR = 0x4 PHONE_RD = 0x85 PHONE_INT = 0x86 def check_msg_phone(): cmd = dev.read(PHONE_RD, 64, 100) if cmd is not None: print("Phone sent: " + cmd) return cmd cmd = dev.read(PHONE_INT, 64, 100) if cmd is not None: print("Phone sent int") return cmd def write_phone(resp): dev.write(PHONE_WR, resp, 100) def write_sim(data): return do_intercept(data, dwActiveProtocol) def do_mitm(): dev = find_dev() hcard, hcontext, dwActiveProtocol = ccid_raw.ccid_raw_init() try: try: while True: cmd = check_msg_phone() if (cmd is not None): resp = write_sim(cmd, dwActiveProtocol) if (resp is not None): write_phone(resp) else: print("No responses.") finally: ccid_raw.ccid_raw_exit(hcard, hcontext) except usb.USBError as e: print(e) pass