laforge has submitted this change. ( 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(-)
Approvals: laforge: Looks good to me, approved Jenkins Builder: Verified
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')