From f8299451179cf0cb22d23ff7a9c6f5ced8ed7e20 Mon Sep 17 00:00:00 2001 From: Supreeth Herle Date: Sat, 8 Jun 2019 07:49:08 +0200 Subject: [PATCH] Added feature to read Service Provider Name (SPN) from the SIM card Change-Id: I8dc599a76c260ec2823ba5c9b22375b04a50daa8 --- pySim-read.py | 13 ++++++++++++- pysim-testdata/Fairwaves-SIM.ok | 3 +++ pysim-testdata/Wavemobile-SIM.ok | 3 +++ pysim-testdata/fakemagicsim.ok | 3 +++ pysim-testdata/sysmoISIM-SJA2.ok | 3 +++ pysim-testdata/sysmoUSIM-SJS1.ok | 3 +++ pysim-testdata/sysmosim-gr1.ok | 3 +++ 7 files changed, 30 insertions(+), 1 deletion(-) mode change 100755 => 100644 pySim-read.py diff --git a/pySim-read.py b/pySim-read.py old mode 100755 new mode 100644 index 4bfa900e..662ee544 --- a/pySim-read.py +++ b/pySim-read.py @@ -37,7 +37,7 @@ except ImportError: import simplejson as json from pySim.commands import SimCardCommands -from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid, format_xplmn_w_act +from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid, format_xplmn_w_act, dec_spn def parse_options(): @@ -121,6 +121,17 @@ if __name__ == '__main__': else: print("SMSP: Can't read, response code = %s" % (sw,)) + # EF.SPN + try: + (res, sw) = scc.read_binary(EF['SPN']) + if sw == '9000': + spn_res = dec_spn(res) + print("SPN: %s\nDisplay HPLMN: %s\nDisplay OPLMN: %s" % (spn_res[0], spn_res[1], spn_res[2],)) + else: + print("SPN: Can't read, response code = %s" % (sw,)) + except Exception as e: + print("SPN: Can't read file -- %s" % (str(e),)) + # EF.PLMNsel try: (res, sw) = scc.read_binary(EF['PLMNsel']) diff --git a/pysim-testdata/Fairwaves-SIM.ok b/pysim-testdata/Fairwaves-SIM.ok index 61504691..94df3765 100644 --- a/pysim-testdata/Fairwaves-SIM.ok +++ b/pysim-testdata/Fairwaves-SIM.ok @@ -3,6 +3,9 @@ Reading ... ICCID: 8988219000000117833 IMSI: 001010000000111 SMSP: e1ffffffffffffffffffffffff0581005155f5ffffffffffff000000ffffffffffffffffffffffffffff +SPN: Fairwaves +Display HPLMN: False +Display OPLMN: False PLMNsel: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: ffffff0000 # unused diff --git a/pysim-testdata/Wavemobile-SIM.ok b/pysim-testdata/Wavemobile-SIM.ok index b0ea8be9..8b14a304 100644 --- a/pysim-testdata/Wavemobile-SIM.ok +++ b/pysim-testdata/Wavemobile-SIM.ok @@ -3,6 +3,9 @@ Reading ... ICCID: 89445310150011013678 IMSI: 001010000000102 SMSP: e1ffffffffffffffffffffffff0581005155f5ffffffffffff000000ffffffffffffffffffffffffffff +SPN: wavemobile +Display HPLMN: False +Display OPLMN: False PLMNsel: fff11fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT diff --git a/pysim-testdata/fakemagicsim.ok b/pysim-testdata/fakemagicsim.ok index d9bff94b..8d4583d6 100644 --- a/pysim-testdata/fakemagicsim.ok +++ b/pysim-testdata/fakemagicsim.ok @@ -3,6 +3,9 @@ Reading ... ICCID: 1122334455667788990 IMSI: 001010000000102 SMSP: ffffffffffffffffffffffffe1ffffffffffffffffffffffff0581005155f5ffffffffffff000000 +SPN: Magic +Display HPLMN: True +Display OPLMN: False PLMNsel: fff11fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: Can't read file -- SW match failed! Expected 9000 and got 9404. OPLMNwAcT: Can't read file -- SW match failed! Expected 9000 and got 9404. diff --git a/pysim-testdata/sysmoISIM-SJA2.ok b/pysim-testdata/sysmoISIM-SJA2.ok index fb191e0e..73461348 100644 --- a/pysim-testdata/sysmoISIM-SJA2.ok +++ b/pysim-testdata/sysmoISIM-SJA2.ok @@ -3,6 +3,9 @@ Reading ... ICCID: 8988211900000000004 IMSI: 001010000000102 SMSP: ffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffff0581005155f5ffffffffffff000000 +SPN: +Display HPLMN: False +Display OPLMN: False PLMNsel: fff11fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT diff --git a/pysim-testdata/sysmoUSIM-SJS1.ok b/pysim-testdata/sysmoUSIM-SJS1.ok index b6a53911..5ad34e43 100644 --- a/pysim-testdata/sysmoUSIM-SJS1.ok +++ b/pysim-testdata/sysmoUSIM-SJS1.ok @@ -3,6 +3,9 @@ Reading ... ICCID: 1122334455667788990 IMSI: 001010000000102 SMSP: ffffffffffffffffffffffffffffffffffffffffffffffffe1ffffffffffffffffffffffff0581005155f5ffffffffffff000000 +SPN: +Display HPLMN: False +Display OPLMN: False PLMNsel: fff11fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: fff11fffff # MCC: 1651 MNC: 151 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT diff --git a/pysim-testdata/sysmosim-gr1.ok b/pysim-testdata/sysmosim-gr1.ok index d4c3dd94..b306f4d2 100644 --- a/pysim-testdata/sysmosim-gr1.ok +++ b/pysim-testdata/sysmosim-gr1.ok @@ -3,6 +3,9 @@ Reading ... ICCID: 1122334455667788990 IMSI: 001010000000102 SMSP: ffffffffffffffffffffffffe1ffffffffffffffffffffffff0581005155f5ffffffffffff000000 +SPN: +Display HPLMN: False +Display OPLMN: False PLMNsel: fff11fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: Can't read file -- SW match failed! Expected 9000 and got 9404. OPLMNwAcT: Can't read file -- SW match failed! Expected 9000 and got 9404.