blob: 1f8cb56a98fe26872bd0e6c15a2404b6756dc074 [file] [log] [blame]
Christina Quastf274a782015-03-03 22:19:21 +01001import sys
Christina Quastdba7b162015-03-10 17:58:54 +01002import traceback
Christina Quastf274a782015-03-03 22:19:21 +01003
Christina Quast2dcaa102015-03-06 18:14:43 +01004from pySim.commands import SimCardCommands
5from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid
6from pySim.transport.pcsc import PcscSimLink
7
8
Christina Quast2dcaa102015-03-06 18:14:43 +01009
10def pySim_read():
11 sl = PcscSimLink(0)
12
13 # Create command layer
14 scc = SimCardCommands(transport=sl)
15
16 # Wait for SIM card
17 sl.wait_for_card()
18
19 # Program the card
20 print("Reading ...")
21
22 # EF.ICCID
Christina Quastdba7b162015-03-10 17:58:54 +010023 try:
24 (res, sw) = scc.read_binary(['3f00', '2fe2'])
25 if sw == '9000':
26 print("ICCID: %s" % (dec_iccid(res),))
27 else:
28 print("ICCID: Can't read, response code = %s" % (sw,))
29 except:
30 print("Unexpected error:", sys.exc_info()[0])
31 print(traceback.format_exc())
Christina Quast2dcaa102015-03-06 18:14:43 +010032
33 # EF.IMSI
Christina Quastdba7b162015-03-10 17:58:54 +010034 try:
35 (res, sw) = scc.read_binary(['3f00', '7f20', '6f07'])
36 if sw == '9000':
37 print("IMSI: %s" % (dec_imsi(res),))
38 else:
39 print("IMSI: Can't read, response code = %s" % (sw,))
40 except:
41 print("Unexpected error:", sys.exc_info()[0])
42 print(traceback.format_exc())
Christina Quast2dcaa102015-03-06 18:14:43 +010043
44 # EF.SMSP
Christina Quastdba7b162015-03-10 17:58:54 +010045 try:
46 (res, sw) = scc.read_record(['3f00', '7f10', '6f42'], 1)
47 if sw == '9000':
48 print("SMSP: %s" % (res,))
49 else:
50 print("SMSP: Can't read, response code = %s" % (sw,))
51 except:
52 print("Unexpected error:", sys.exc_info()[0])
53 print(traceback.format_exc())
Christina Quast2dcaa102015-03-06 18:14:43 +010054
55 # EF.HPLMN
Christina Quastdba7b162015-03-10 17:58:54 +010056 try:
57 (res, sw) = scc.read_binary(['3f00', '7f20', '6f30'])
58 if sw == '9000':
59 print("HPLMN: %s" % (res))
60 print("HPLMN: %s" % (dec_hplmn(res),))
61 else:
62 print("HPLMN: Can't read, response code = %s" % (sw,))
63 except:
64 print("Unexpected error:", sys.exc_info()[0])
65 print(traceback.format_exc())
Christina Quast2dcaa102015-03-06 18:14:43 +010066
67 # EF.ACC
Christina Quastdba7b162015-03-10 17:58:54 +010068 try:
69 (res, sw) = scc.read_binary(['3f00', '7f20', '6f78'])
70 if sw == '9000':
71 print("ACC: %s" % (res,))
72 else:
73 print("ACC: Can't read, response code = %s" % (sw,))
74 except:
75 print("Unexpected error:", sys.exc_info()[0])
76 print(traceback.format_exc())
Christina Quast2dcaa102015-03-06 18:14:43 +010077
78 # EF.MSISDN
79 try:
80 # print(scc.record_size(['3f00', '7f10', '6f40']))
Christina Quastdba7b162015-03-10 17:58:54 +010081 (res, sw) = scc.read_record(['3f00', '7f10', '6f40'], 1)
82 if sw == '9000':
83 if res[1] != 'f':
84 print("MSISDN: %s" % (res,))
Christina Quast2dcaa102015-03-06 18:14:43 +010085 else:
Christina Quastdba7b162015-03-10 17:58:54 +010086 print("MSISDN: Not available")
87 else:
88 print("MSISDN: Can't read, response code = %s" % (sw,))
Christina Quast2dcaa102015-03-06 18:14:43 +010089 except:
Christina Quastdba7b162015-03-10 17:58:54 +010090 print("MSISDN: Can't read. Probably not existing file, error: ", sys.exc_info()[0])
91 print(traceback.format_exc())
Christina Quast2dcaa102015-03-06 18:14:43 +010092
Christina Quast2dcaa102015-03-06 18:14:43 +010093 print("Done !\n")