laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/34850?usp=email )
(
3 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: pySim-shell: Include current logical channel in prompt ......................................................................
pySim-shell: Include current logical channel in prompt
Now that pySim-shell can switch between logical channels, let's state the currently used logical channel in the prompt.
Change-Id: I45781a6fba205eeb4ac7f58d5cb642b7131bdd88 Related: OS#6230 --- M docs/shell.rst M docs/suci-tutorial.rst M pySim-shell.py 3 files changed, 49 insertions(+), 36 deletions(-)
Approvals: dexter: Looks good to me, approved Jenkins Builder: Verified
diff --git a/docs/shell.rst b/docs/shell.rst index 51fd49e..811ef61 100644 --- a/docs/shell.rst +++ b/docs/shell.rst @@ -68,7 +68,7 @@
::
- pySIM-shell (MF)> select + pySIM-shell (00:MF)> select .. 2fe2 a0000000871004 EF.ARR MF 2f00 3f00 ADF.ISIM EF.DIR 2f05 7f10 ADF.USIM EF.ICCID @@ -85,7 +85,7 @@
::
- pySIM-shell (MF)> select ADF.USIM + pySIM-shell (00:MF)> select ADF.USIM { "file_descriptor": { "file_descriptor_byte": { @@ -103,7 +103,7 @@ "security_attrib_compact": "00", "pin_status_template_do": "90017083010183018183010A83010B" } - pySIM-shell (MF/ADF.USIM)> + pySIM-shell (00:MF/ADF.USIM)>
status @@ -116,7 +116,7 @@
::
- pySIM-shell (MF/ADF.ISIM)> status + pySIM-shell (00:MF/ADF.ISIM)> status { "file_descriptor": { "file_descriptor_byte": { @@ -261,7 +261,7 @@ Example: ::
- pySIM-shell (MF)> dir + pySIM-shell (00:MF)> dir MF 3f00 .. ADF.USIM DF.SYSTEM EF.DIR EF.UMPC @@ -295,7 +295,7 @@ Example: ::
- pySIM-shell (MF)> tree --help + pySIM-shell (00:MF)> tree --help EF.DIR 2f00 Application Directory EF.ICCID 2fe2 ICC Identification EF.PL 2f05 Preferred Languages @@ -467,7 +467,7 @@
::
- pySIM-shell (MF/ADF.USIM/EF.AD)> read_binary_decoded + pySIM-shell (00:MF/ADF.USIM/EF.AD)> read_binary_decoded { "ms_operation_mode": "normal", "specific_facilities": { @@ -475,8 +475,8 @@ }, "len_of_mnc_in_imsi": 2 } - pySIM-shell (MF/ADF.USIM/EF.AD)> update_binary_decoded --json-path specific_facilities.ofm false - pySIM-shell (MF/ADF.USIM/EF.AD)> read_binary_decoded + pySIM-shell (00:MF/ADF.USIM/EF.AD)> update_binary_decoded --json-path specific_facilities.ofm false + pySIM-shell (00:MF/ADF.USIM/EF.AD)> read_binary_decoded { "ms_operation_mode": "normal", "specific_facilities": { @@ -731,7 +731,7 @@
::
- pySIM-shell (MF/ADF.ARA-M)> aram_get_all + pySIM-shell (00:MF/ADF.ARA-M)> aram_get_all [ { "ResponseAllRefArDO": [ @@ -783,7 +783,7 @@ For example, to store an Android UICC carrier privilege rule for the SHA1 hash of the certificate used to sign the CoIMS android app of Supreeth Herle (https://github.com/herlesupreeth/CoIMS_Wiki) you can use the following command: ::
- pySIM-shell (MF/ADF.ARA-M)> aram_store_ref_ar_do --aid FFFFFFFFFFFF --device-app-id E46872F28B350B7E1F140DE535C2A8D5804F0BE3 --android-permissions 0000000000000001 --apdu-always + pySIM-shell (00:MF/ADF.ARA-M)> aram_store_ref_ar_do --aid FFFFFFFFFFFF --device-app-id E46872F28B350B7E1F140DE535C2A8D5804F0BE3 --android-permissions 0000000000000001 --apdu-always
aram_delete_all @@ -845,10 +845,10 @@
::
- pySIM-shell (MF/EF.ICCID)> set numeric_path True + pySIM-shell (00:MF/EF.ICCID)> set numeric_path True numeric_path - was: False now: True - pySIM-shell (3f00/2fe2)> set numeric_path False + pySIM-shell (00:3f00/2fe2)> set numeric_path False numeric_path - was: True now: False - pySIM-shell (MF/EF.ICCID)> help set + pySIM-shell (00:MF/EF.ICCID)> help set diff --git a/docs/suci-tutorial.rst b/docs/suci-tutorial.rst index fc6e911..b4c950f 100644 --- a/docs/suci-tutorial.rst +++ b/docs/suci-tutorial.rst @@ -55,13 +55,13 @@ Using PC/SC reader interface Autodetected card type: sysmoISIM-SJA2 Welcome to pySim-shell! - pySIM-shell (MF)> + pySIM-shell (00:MF)>
Enter the ADM PIN:
::
- pySIM-shell (MF)> verify_adm XXXXXXXX + pySIM-shell (00:MF)> verify_adm XXXXXXXX
Otherwise, write commands will fail with ``SW Mismatch: Expected 9000 and got 6982.``
@@ -70,16 +70,16 @@
::
- pySIM-shell (MF)> select MF - pySIM-shell (MF)> select ADF.USIM - pySIM-shell (MF/ADF.USIM)> select DF.5GS - pySIM-shell (MF/ADF.USIM/DF.5GS)> select EF.SUCI_Calc_Info + pySIM-shell (00:MF)> select MF + pySIM-shell (00:MF)> select ADF.USIM + pySIM-shell (00:MF/ADF.USIM)> select DF.5GS + pySIM-shell (00:MF/ADF.USIM/DF.5GS)> select EF.SUCI_Calc_Info
By default, the file is present but empty:
::
- pySIM-shell (MF/ADF.USIM/DF.5GS/EF.SUCI_Calc_Info)> read_binary_decoded + pySIM-shell (00:MF/ADF.USIM/DF.5GS/EF.SUCI_Calc_Info)> read_binary_decoded missing Protection Scheme Identifier List data object tag 9000: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -> {}
@@ -106,7 +106,7 @@
::
- pySIM-shell (MF/ADF.USIM/DF.5GS/EF.SUCI_Calc_Info)> update_binary_decoded '{ "prot_scheme_id_list": [ {"priority": 0, "identifier": 2, "key_index": 1}, {"priority": 1, "identifier": 1, "key_index": 2}, {"priority": 2, "identifier": 0, "key_index": 0}], "hnet_pubkey_list": [ {"hnet_pubkey_identifier": 27, "hnet_pubkey": "0272DA71976234CE833A6907425867B82E074D44EF907DFB4B3E21C1C2256EBCD1"}, {"hnet_pubkey_identifier": 30, "hnet_pubkey": "5A8D38864820197C3394B92613B20B91633CBD897119273BF8E4A6F4EEC0A650"}]}' + pySIM-shell (00:MF/ADF.USIM/DF.5GS/EF.SUCI_Calc_Info)> update_binary_decoded '{ "prot_scheme_id_list": [ {"priority": 0, "identifier": 2, "key_index": 1}, {"priority": 1, "identifier": 1, "key_index": 2}, {"priority": 2, "identifier": 0, "key_index": 0}], "hnet_pubkey_list": [ {"hnet_pubkey_identifier": 27, "hnet_pubkey": "0272DA71976234CE833A6907425867B82E074D44EF907DFB4B3E21C1C2256EBCD1"}, {"hnet_pubkey_identifier": 30, "hnet_pubkey": "5A8D38864820197C3394B92613B20B91633CBD897119273BF8E4A6F4EEC0A650"}]}'
WARNING: These are TEST KEYS with publicly known/specified private keys, and hence unsafe for live/secure deployments! For use in production networks, you need to generate your own set[s] of keys. @@ -119,11 +119,11 @@
::
- pySIM-shell (MF)> select MF - pySIM-shell (MF)> select ADF.USIM - pySIM-shell (MF/ADF.USIM)> select DF.5GS - pySIM-shell (MF/ADF.USIM/DF.5GS)> select EF.Routing_Indicator - pySIM-shell (MF/ADF.USIM/DF.5GS/EF.Routing_Indicator)> read_binary_decoded + pySIM-shell (00:MF)> select MF + pySIM-shell (00:MF)> select ADF.USIM + pySIM-shell (00:MF/ADF.USIM)> select DF.5GS + pySIM-shell (00:MF/ADF.USIM/DF.5GS)> select EF.Routing_Indicator + pySIM-shell (00:MF/ADF.USIM/DF.5GS/EF.Routing_Indicator)> read_binary_decoded 9000: ffffffff -> {'raw': 'ffffffff'}
The Routing Indicator is a four-byte file but the actual Routing @@ -132,7 +132,7 @@
::
- pySIM-shell (MF/ADF.USIM/DF.5GS/EF.Routing_Indicator)> update_binary 17ffffff + pySIM-shell (00:MF/ADF.USIM/DF.5GS/EF.Routing_Indicator)> update_binary 17ffffff
You can also set the routing indicator to **0x0**, which is *valid* and means “routing indicator not specified”, leaving it to the modem. @@ -144,10 +144,10 @@
::
- pySIM-shell (MF)> select MF - pySIM-shell (MF)> select ADF.USIM - pySIM-shell (MF/ADF.USIM)> select EF.UST - pySIM-shell (MF/ADF.USIM/EF.UST)> read_binary_decoded + pySIM-shell (00:MF)> select MF + pySIM-shell (00:MF)> select ADF.USIM + pySIM-shell (00:MF/ADF.USIM)> select EF.UST + pySIM-shell (00:MF/ADF.USIM/EF.UST)> read_binary_decoded 9000: beff9f9de73e0408400170730000002e00000000 -> [2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 25, 27, 28, 29, 33, 34, 35, 38, 39, 42, 43, 44, 45, 46, 51, 60, 71, 73, 85, 86, 87, 89, 90, 93, 94, 95, 122, 123, 124, 126]
.. list-table:: From TS31.102 @@ -173,9 +173,9 @@
::
- pySIM-shell (MF/ADF.USIM/EF.UST)> ust_service_deactivate 124 - pySIM-shell (MF/ADF.USIM/EF.UST)> ust_service_activate 124 - pySIM-shell (MF/ADF.USIM/EF.UST)> ust_service_deactivate 125 + pySIM-shell (00:MF/ADF.USIM/EF.UST)> ust_service_deactivate 124 + pySIM-shell (00:MF/ADF.USIM/EF.UST)> ust_service_activate 124 + pySIM-shell (00:MF/ADF.USIM/EF.UST)> ust_service_deactivate 125
In this case, UST Service 124 is already enabled and you’re good to go. The sysmoISIM-SJA2 does not support on-SIM calculation, so service 125 must diff --git a/pySim-shell.py b/pySim-shell.py index 2f97389..022b276 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -291,7 +291,7 @@ def update_prompt(self): if self.lchan: path_str = self.lchan.selected_file.fully_qualified_path_str(not self.numeric_path) - self.prompt = 'pySIM-shell (%s)> ' % (path_str) + self.prompt = 'pySIM-shell (%02u:%s)> ' % (self.lchan.lchan_nr, path_str) else: if self.card: self.prompt = 'pySIM-shell (no card profile)> '