blob: 1f8cb56a98fe26872bd0e6c15a2404b6756dc074 [file] [log] [blame]
import sys
import traceback
from pySim.commands import SimCardCommands
from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid
from pySim.transport.pcsc import PcscSimLink
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
try:
(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,))
except:
print("Unexpected error:", sys.exc_info()[0])
print(traceback.format_exc())
# EF.IMSI
try:
(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,))
except:
print("Unexpected error:", sys.exc_info()[0])
print(traceback.format_exc())
# EF.SMSP
try:
(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,))
except:
print("Unexpected error:", sys.exc_info()[0])
print(traceback.format_exc())
# EF.HPLMN
try:
(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,))
except:
print("Unexpected error:", sys.exc_info()[0])
print(traceback.format_exc())
# EF.ACC
try:
(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,))
except:
print("Unexpected error:", sys.exc_info()[0])
print(traceback.format_exc())
# 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:
print("MSISDN: Can't read. Probably not existing file, error: ", sys.exc_info()[0])
print(traceback.format_exc())
print("Done !\n")