blob: d6b69dba8868f3733fe1f1eea23e2beafdd8de2b [file] [log] [blame]
Christina Quastf274a782015-03-03 22:19:21 +01001import sys
2
Christina Quast2dcaa102015-03-06 18:14:43 +01003from pySim.commands import SimCardCommands
4from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid
5from pySim.transport.pcsc import PcscSimLink
6
7
Christina Quast2dcaa102015-03-06 18:14:43 +01008
9def pySim_read():
10 sl = PcscSimLink(0)
11
12 # Create command layer
13 scc = SimCardCommands(transport=sl)
14
15 # Wait for SIM card
16 sl.wait_for_card()
17
18 # Program the card
19 print("Reading ...")
20
21 # EF.ICCID
22 (res, sw) = scc.read_binary(['3f00', '2fe2'])
23 if sw == '9000':
24 print("ICCID: %s" % (dec_iccid(res),))
25 else:
26 print("ICCID: Can't read, response code = %s" % (sw,))
27
28 # EF.IMSI
29 (res, sw) = scc.read_binary(['3f00', '7f20', '6f07'])
30 if sw == '9000':
31 print("IMSI: %s" % (dec_imsi(res),))
32 else:
33 print("IMSI: Can't read, response code = %s" % (sw,))
34
35 # EF.SMSP
36 (res, sw) = scc.read_record(['3f00', '7f10', '6f42'], 1)
37 if sw == '9000':
38 print("SMSP: %s" % (res,))
39 else:
40 print("SMSP: Can't read, response code = %s" % (sw,))
41
42 # EF.HPLMN
43# (res, sw) = scc.read_binary(['3f00', '7f20', '6f30'])
44# if sw == '9000':
45# print("HPLMN: %s" % (res))
46# print("HPLMN: %s" % (dec_hplmn(res),))
47# else:
48# print("HPLMN: Can't read, response code = %s" % (sw,))
49 # FIXME
50
51 # EF.ACC
52 (res, sw) = scc.read_binary(['3f00', '7f20', '6f78'])
53 if sw == '9000':
54 print("ACC: %s" % (res,))
55 else:
56 print("ACC: Can't read, response code = %s" % (sw,))
57
58 # EF.MSISDN
59 try:
60 # print(scc.record_size(['3f00', '7f10', '6f40']))
61 (res, sw) = scc.read_record(['3f00', '7f10', '6f40'], 1)
62 if sw == '9000':
63 if res[1] != 'f':
64 print("MSISDN: %s" % (res,))
65 else:
66 print("MSISDN: Not available")
67 else:
68 print("MSISDN: Can't read, response code = %s" % (sw,))
69 except:
70 prin#t("MSISDN: Can't read. Probably not existing file")
71
72 # Done for this card and maybe for everything ?
73 print("Done !\n")