mirror of https://gerrit.osmocom.org/simtrace2
54 lines
1.0 KiB
Python
54 lines
1.0 KiB
Python
import usb.core
|
|
import usb.util
|
|
|
|
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, 1000)
|
|
if cmd:
|
|
print("Phone sent: " + cmd)
|
|
return cmd
|
|
cmd = dev.read(PHONE_INT, 64, 1000)
|
|
if cmd:
|
|
print("Phone sent int")
|
|
return cmd
|
|
|
|
def write_phone(resp):
|
|
dev.write(PHONE_WR, resp, 1000)
|
|
|
|
def write_sim(data):
|
|
return do_intercept(data, dwActiveProtocol)
|
|
|
|
def mitm():
|
|
dev = find_dev()
|
|
hcard, hcontext, dwActiveProtocol = init()
|
|
|
|
while True:
|
|
if (cmd = check_msg_phone()):
|
|
resp = write_sim(cmd, dwActiveProtocol)
|
|
if (resp is not None):
|
|
write_phone(resp)
|
|
else:
|
|
|
|
|
|
exit(hcard, hcontext)
|
|
|
|
except usb.USBError as e:
|
|
print e
|
|
pass
|