Christina Quast | f274a78 | 2015-03-03 22:19:21 +0100 | [diff] [blame] | 1 | import sys |
Christina Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 2 | import traceback |
Christina Quast | f274a78 | 2015-03-03 22:19:21 +0100 | [diff] [blame] | 3 | |
Christina Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 4 | from pySim.commands import SimCardCommands |
| 5 | from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid |
| 6 | from pySim.transport.pcsc import PcscSimLink |
| 7 | |
| 8 | |
Christina Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 9 | |
| 10 | def 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 Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 23 | 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 Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 32 | |
| 33 | # EF.IMSI |
Christina Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 34 | 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 Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 43 | |
| 44 | # EF.SMSP |
Christina Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 45 | 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 Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 54 | |
| 55 | # EF.HPLMN |
Christina Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 56 | 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 Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 66 | |
| 67 | # EF.ACC |
Christina Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 68 | 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 Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 77 | |
| 78 | # EF.MSISDN |
| 79 | try: |
| 80 | # print(scc.record_size(['3f00', '7f10', '6f40'])) |
Christina Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 81 | (res, sw) = scc.read_record(['3f00', '7f10', '6f40'], 1) |
| 82 | if sw == '9000': |
| 83 | if res[1] != 'f': |
| 84 | print("MSISDN: %s" % (res,)) |
Christina Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 85 | else: |
Christina Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 86 | print("MSISDN: Not available") |
| 87 | else: |
| 88 | print("MSISDN: Can't read, response code = %s" % (sw,)) |
Christina Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 89 | except: |
Christina Quast | dba7b16 | 2015-03-10 17:58:54 +0100 | [diff] [blame] | 90 | print("MSISDN: Can't read. Probably not existing file, error: ", sys.exc_info()[0]) |
| 91 | print(traceback.format_exc()) |
Christina Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 92 | |
Christina Quast | 2dcaa10 | 2015-03-06 18:14:43 +0100 | [diff] [blame] | 93 | print("Done !\n") |