laforge has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/pysim/+/27335 )


Change subject: pySim-shell: Add 'decode_hex' command for transparent + linear 
EF
......................................................................

pySim-shell: Add 'decode_hex' command for transparent + linear EF

These commands can be used to decode a user-provided hex-string,
instead of decoding the data read from the file.  This is useful
for quickly manually decoding some values read from other locations,
such as e.g. copy+pasted from a eSIM profile in ASN.1 value notation.

Change-Id: I81f73bce2c26e3e5dfc7538d223bb2d2483c7fa0
---
M docs/shell.rst
M pySim/filesystem.py
2 files changed, 36 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/35/27335/1

diff --git a/docs/shell.rst b/docs/shell.rst
index f24dc93..2c8da84 100644
--- a/docs/shell.rst
+++ b/docs/shell.rst
@@ -384,6 +384,13 @@
 This allows for easy interactive modification of records.


+decode_hex
+~~~~~~~~~~
+.. argparse::
+   :module: pySim.filesystem
+   :func: LinFixedEF.ShellCommands.dec_hex_parser
+
+

 Transparent EF commands
 -----------------------
@@ -460,6 +467,13 @@
 This allows for easy interactive modification of file contents.


+decode_hex
+~~~~~~~~~~
+.. argparse::
+   :module: pySim.filesystem
+   :func: TransparentEF.ShellCommands.dec_hex_parser
+
+

 BER-TLV EF commands
 -------------------
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index f8b86c5..5bbd57b 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -526,6 +526,17 @@
         def __init__(self):
             super().__init__()

+        dec_hex_parser = argparse.ArgumentParser()
+        dec_hex_parser.add_argument('--oneline', action='store_true',
+                                    help='No JSON pretty-printing, dump as a 
single line')
+        dec_hex_parser.add_argument('HEXSTR', help='Hex-string of encoded data 
to decode')
+
+        @cmd2.with_argparser(dec_hex_parser)
+        def do_decode_hex(self, opts):
+            """Decode command-line provided hex-string as if it was read from 
the file."""
+            data = self._cmd.rs.selected_file.decode_hex(opts.HEXSTR)
+            self._cmd.poutput_json(data, opts.oneline)
+
         read_bin_parser = argparse.ArgumentParser()
         read_bin_parser.add_argument(
             '--offset', type=int, default=0, help='Byte offset for start of 
read')
@@ -738,6 +749,17 @@
         def __init__(self, **kwargs):
             super().__init__(**kwargs)

+        dec_hex_parser = argparse.ArgumentParser()
+        dec_hex_parser.add_argument('--oneline', action='store_true',
+                                    help='No JSON pretty-printing, dump as a 
single line')
+        dec_hex_parser.add_argument('HEXSTR', help='Hex-string of encoded data 
to decode')
+
+        @cmd2.with_argparser(dec_hex_parser)
+        def do_decode_hex(self, opts):
+            """Decode command-line provided hex-string as if it was read from 
the file."""
+            data = self._cmd.rs.selected_file.decode_record_hex(opts.HEXSTR)
+            self._cmd.poutput_json(data, opts.oneline)
+
         read_rec_parser = argparse.ArgumentParser()
         read_rec_parser.add_argument(
             'record_nr', type=int, help='Number of record to be read')

--
To view, visit https://gerrit.osmocom.org/c/pysim/+/27335
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I81f73bce2c26e3e5dfc7538d223bb2d2483c7fa0
Gerrit-Change-Number: 27335
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <[email protected]>
Gerrit-MessageType: newchange

Reply via email to