diff --git a/docs/shell.rst b/docs/shell.rst index f24dc93b..2c8da848 100644 --- a/docs/shell.rst +++ b/docs/shell.rst @@ -384,6 +384,13 @@ back to the record on the SIM card. 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 @@ to the SIM card. 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 f8b86c57..5bbd57b0 100644 --- a/pySim/filesystem.py +++ b/pySim/filesystem.py @@ -526,6 +526,17 @@ class TransparentEF(CardEF): 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 @@ class LinFixedEF(CardEF): 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')