mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-17 05:38:33 +03:00
add kevins iccid, imsi, .. read commands
This commit is contained in:
@@ -1,9 +1,20 @@
|
||||
#!/usr/bin/env python3
|
||||
#!/usr/bin/env python
|
||||
|
||||
import usb.core
|
||||
import usb.util
|
||||
import sys
|
||||
|
||||
from pySim.commands import SimCardCommands
|
||||
from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid
|
||||
from pySim.transport.pcsc import PcscSimLink
|
||||
|
||||
|
||||
import hashlib
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
|
||||
|
||||
class find_class(object):
|
||||
def __init__(self, class_):
|
||||
self._class = class_
|
||||
@@ -24,16 +35,95 @@ class find_class(object):
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def pySim_read():
|
||||
sl = PcscSimLink(0)
|
||||
|
||||
# Create command layer
|
||||
scc = SimCardCommands(transport=sl)
|
||||
|
||||
# Wait for SIM card
|
||||
sl.wait_for_card()
|
||||
|
||||
# Program the card
|
||||
print("Reading ...")
|
||||
|
||||
# EF.ICCID
|
||||
(res, sw) = scc.read_binary(['3f00', '2fe2'])
|
||||
if sw == '9000':
|
||||
print("ICCID: %s" % (dec_iccid(res),))
|
||||
else:
|
||||
print("ICCID: Can't read, response code = %s" % (sw,))
|
||||
|
||||
# EF.IMSI
|
||||
(res, sw) = scc.read_binary(['3f00', '7f20', '6f07'])
|
||||
if sw == '9000':
|
||||
print("IMSI: %s" % (dec_imsi(res),))
|
||||
else:
|
||||
print("IMSI: Can't read, response code = %s" % (sw,))
|
||||
|
||||
# EF.SMSP
|
||||
(res, sw) = scc.read_record(['3f00', '7f10', '6f42'], 1)
|
||||
if sw == '9000':
|
||||
print("SMSP: %s" % (res,))
|
||||
else:
|
||||
print("SMSP: Can't read, response code = %s" % (sw,))
|
||||
|
||||
# EF.HPLMN
|
||||
# (res, sw) = scc.read_binary(['3f00', '7f20', '6f30'])
|
||||
# if sw == '9000':
|
||||
# print("HPLMN: %s" % (res))
|
||||
# print("HPLMN: %s" % (dec_hplmn(res),))
|
||||
# else:
|
||||
# print("HPLMN: Can't read, response code = %s" % (sw,))
|
||||
# FIXME
|
||||
|
||||
# EF.ACC
|
||||
(res, sw) = scc.read_binary(['3f00', '7f20', '6f78'])
|
||||
if sw == '9000':
|
||||
print("ACC: %s" % (res,))
|
||||
else:
|
||||
print("ACC: Can't read, response code = %s" % (sw,))
|
||||
|
||||
# EF.MSISDN
|
||||
try:
|
||||
# print(scc.record_size(['3f00', '7f10', '6f40']))
|
||||
(res, sw) = scc.read_record(['3f00', '7f10', '6f40'], 1)
|
||||
if sw == '9000':
|
||||
if res[1] != 'f':
|
||||
print("MSISDN: %s" % (res,))
|
||||
else:
|
||||
print("MSISDN: Not available")
|
||||
else:
|
||||
print("MSISDN: Can't read, response code = %s" % (sw,))
|
||||
except:
|
||||
prin#t("MSISDN: Can't read. Probably not existing file")
|
||||
|
||||
# Done for this card and maybe for everything ?
|
||||
print("Done !\n")
|
||||
|
||||
cmd1 = {0x00, 0x10, 0x00, 0x00}
|
||||
cmd2 = {0x00, 0x20, 0x00, 0x00, 0x02}
|
||||
cmd_poweron = {0x62, 0x62, 0x00, 0x00}
|
||||
cmd_poweroff = {0x63, 0x63, 0x00, 0x00}
|
||||
cmd_get_slot_stat = {0x65, 0x65, 0x00, 0x00}
|
||||
cmd_get_param = {0x00, 0x6C, 0x00, 0x00}
|
||||
|
||||
# main code
|
||||
def main():
|
||||
devs = usb.core.find(find_all=1, custom_match=find_class(0xb)) # 0xb = Smartcard
|
||||
for dev in devs:
|
||||
dev.set_configuration(2)
|
||||
dev.reset()
|
||||
dev.write(0x1, {0x63, 0x63}) # PC_TO_RDR_ICCPOWEROFF
|
||||
ret = dev.read(0x82, 64)
|
||||
print(ret)
|
||||
#dev.write(0x1, {0x62, 0x62}) # PC_TO_RDR_ICCPOWERON
|
||||
|
||||
pySim_read()
|
||||
|
||||
# dev.write(0x1, cmd_poweroff)
|
||||
# dev.write(0x1, cmd_poweron)
|
||||
# dev.write(0x1, cmd2)
|
||||
# dev.write(0x1, cmd_get_slot_stat)
|
||||
# ret = dev.read(0x82, 64)
|
||||
print(ret)
|
||||
#dev.write(0x1, {0x62, 0x62}) # PC_TO_RDR_ICCPOWERON
|
||||
return
|
||||
|
||||
# (epi, epo) = find_eps(dev)
|
||||
|
||||
Reference in New Issue
Block a user