mirror of https://gerrit.osmocom.org/simtrace2
40 lines
997 B
Python
Executable File
40 lines
997 B
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import usb.core
|
|
import usb.util
|
|
import sys
|
|
import array
|
|
|
|
from apdu_split import Apdu_splitter, apdu_states
|
|
from gsmtap import gsmtap_send_apdu
|
|
|
|
from constants import PHONE_RD, ERR_TIMEOUT, ERR_NO_SUCH_DEV
|
|
|
|
# main code
|
|
def sniff(dev):
|
|
ans = array.array('B', [])
|
|
|
|
apdus = []
|
|
apdu = Apdu_splitter()
|
|
|
|
while True:
|
|
try:
|
|
ans += dev.read(PHONE_RD, 64, 1000)
|
|
except KeyboardInterrupt:
|
|
print("Bye")
|
|
sys.exit()
|
|
except Exception as e:
|
|
if e.errno != ERR_TIMEOUT and e.errno != ERR_NO_SUCH_DEV:
|
|
raise
|
|
print e
|
|
|
|
if len(ans) >= 1:
|
|
# print("".join("%02x " % b for b in ans))
|
|
for c in ans:
|
|
apdu.split(c)
|
|
if apdu.state == apdu_states.APDU_S_FIN:
|
|
apdus.append(apdu)
|
|
gsmtap_send_apdu(apdu.buf)
|
|
apdu = Apdu_splitter()
|
|
ans = array.array('B', [])
|