From b919f8bd75539e56296dce7f0b8f4b2318d5c272 Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Tue, 27 Apr 2021 18:28:27 +0200 Subject: [PATCH] utils: fix dec_xplmn_w_act() and format_xplmn_w_act() The function dec_xplmn_w_act(), which is also used by format_xplmn_w_act() is using integer numbers as MCC/MNC representation. This causes various problems since the information about leading zeros gets lost. Change-Id: I57f7dff80f48071ef9a3732ae1088882b127a6d4 --- pySim/utils.py | 10 +++++----- pysim-testdata/Fairwaves-SIM.ok | 2 +- pysim-testdata/Wavemobile-SIM.ok | 4 ++-- pysim-testdata/sysmoISIM-SJA2.ok | 6 +++--- pysim-testdata/sysmoUSIM-SJS1.ok | 6 +++--- tests/test_utils.py | 6 +++--- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/pySim/utils.py b/pySim/utils.py index 9694bfa8..22534822 100644 --- a/pySim/utils.py +++ b/pySim/utils.py @@ -234,13 +234,13 @@ def dec_act(twohexbytes:Hexstr) -> List[str]: return sel def dec_xplmn_w_act(fivehexbytes:Hexstr) -> Dict[str,Any]: - res = {'mcc': 0, 'mnc': 0, 'act': []} + res = {'mcc': "0", 'mnc': "0", 'act': []} plmn_chars = 6 act_chars = 4 plmn_str = fivehexbytes[:plmn_chars] # first three bytes (six ascii hex chars) act_str = fivehexbytes[plmn_chars:plmn_chars + act_chars] # two bytes after first three bytes - res['mcc'] = dec_mcc_from_plmn(plmn_str) - res['mnc'] = dec_mnc_from_plmn(plmn_str) + res['mcc'] = dec_mcc_from_plmn_str(plmn_str) + res['mnc'] = dec_mnc_from_plmn_str(plmn_str) res['act'] = dec_act(act_str) return res @@ -248,10 +248,10 @@ def format_xplmn_w_act(hexstr): s = "" for rec_data in hexstr_to_Nbytearr(hexstr, 5): rec_info = dec_xplmn_w_act(rec_data) - if rec_info['mcc'] == 0xFFF and rec_info['mnc'] == 0xFFF: + if rec_info['mcc'] == "" and rec_info['mnc'] == "": rec_str = "unused" else: - rec_str = "MCC: %03d MNC: %03d AcT: %s" % (rec_info['mcc'], rec_info['mnc'], ", ".join(rec_info['act'])) + rec_str = "MCC: %s MNC: %s AcT: %s" % (rec_info['mcc'], rec_info['mnc'], ", ".join(rec_info['act'])) s += "\t%s # %s\n" % (rec_data, rec_str) return s diff --git a/pysim-testdata/Fairwaves-SIM.ok b/pysim-testdata/Fairwaves-SIM.ok index f83f415e..c577aa9a 100644 --- a/pysim-testdata/Fairwaves-SIM.ok +++ b/pysim-testdata/Fairwaves-SIM.ok @@ -31,7 +31,7 @@ OPLMNwAcT: ffffff0000 # unused HPLMNAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused diff --git a/pysim-testdata/Wavemobile-SIM.ok b/pysim-testdata/Wavemobile-SIM.ok index 0682a706..c978891d 100644 --- a/pysim-testdata/Wavemobile-SIM.ok +++ b/pysim-testdata/Wavemobile-SIM.ok @@ -11,7 +11,7 @@ Display HPLMN: False Display OPLMN: False PLMNsel: 00f110ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused @@ -29,7 +29,7 @@ PLMNwAcT: ffffff0000 # unused OPLMNwAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused diff --git a/pysim-testdata/sysmoISIM-SJA2.ok b/pysim-testdata/sysmoISIM-SJA2.ok index d95387b8..c463c3f0 100644 --- a/pysim-testdata/sysmoISIM-SJA2.ok +++ b/pysim-testdata/sysmoISIM-SJA2.ok @@ -11,7 +11,7 @@ Display HPLMN: True Display OPLMN: True PLMNsel: 00f110ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused @@ -25,7 +25,7 @@ PLMNwAcT: ffffff0000 # unused OPLMNwAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused @@ -39,7 +39,7 @@ OPLMNwAcT: ffffff0000 # unused HPLMNAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused diff --git a/pysim-testdata/sysmoUSIM-SJS1.ok b/pysim-testdata/sysmoUSIM-SJS1.ok index bce3c9d9..cd141146 100644 --- a/pysim-testdata/sysmoUSIM-SJS1.ok +++ b/pysim-testdata/sysmoUSIM-SJS1.ok @@ -11,7 +11,7 @@ Display HPLMN: True Display OPLMN: True PLMNsel: 00f110ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff PLMNwAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused @@ -25,7 +25,7 @@ PLMNwAcT: ffffff0000 # unused OPLMNwAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused @@ -39,7 +39,7 @@ OPLMNwAcT: ffffff0000 # unused HPLMNAcT: - 00f110ffff # MCC: 001 MNC: 001 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT + 00f110ffff # MCC: 001 MNC: 01 AcT: UTRAN, E-UTRAN, GSM, GSM COMPACT, cdma2000 HRPD, cdma2000 1xRTT ffffff0000 # unused ffffff0000 # unused ffffff0000 # unused diff --git a/tests/test_utils.py b/tests/test_utils.py index b70b17b2..558b5e71 100755 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -96,13 +96,13 @@ class DecTestCase(unittest.TestCase): self.assertEqual(utils.dec_act("ffff"), ["UTRAN", "E-UTRAN", "GSM", "GSM COMPACT", "cdma2000 HRPD", "cdma2000 1xRTT"]) def testDecxPlmn_w_act(self): - expected = {'mcc': 295, 'mnc': 10, 'act': ["UTRAN"]} + expected = {'mcc': '295', 'mnc': '10', 'act': ["UTRAN"]} self.assertEqual(utils.dec_xplmn_w_act("92f5018000"), expected) def testFormatxPlmn_w_act(self): input_str = "92f501800092f5508000ffffff0000ffffff0000ffffff0000ffffff0000ffffff0000ffffff0000ffffff0000ffffff0000" - expected = "\t92f5018000 # MCC: 295 MNC: 010 AcT: UTRAN\n" - expected += "\t92f5508000 # MCC: 295 MNC: 005 AcT: UTRAN\n" + expected = "\t92f5018000 # MCC: 295 MNC: 10 AcT: UTRAN\n" + expected += "\t92f5508000 # MCC: 295 MNC: 05 AcT: UTRAN\n" expected += "\tffffff0000 # unused\n" expected += "\tffffff0000 # unused\n" expected += "\tffffff0000 # unused\n"