mirror of https://gerrit.osmocom.org/pysim
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
This commit is contained in:
parent
34eb504b3b
commit
aefd0649a2
|
@ -384,6 +384,13 @@ back to the record on the SIM card.
|
||||||
This allows for easy interactive modification of records.
|
This allows for easy interactive modification of records.
|
||||||
|
|
||||||
|
|
||||||
|
decode_hex
|
||||||
|
~~~~~~~~~~
|
||||||
|
.. argparse::
|
||||||
|
:module: pySim.filesystem
|
||||||
|
:func: LinFixedEF.ShellCommands.dec_hex_parser
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Transparent EF commands
|
Transparent EF commands
|
||||||
-----------------------
|
-----------------------
|
||||||
|
@ -460,6 +467,13 @@ to the SIM card.
|
||||||
This allows for easy interactive modification of file contents.
|
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
|
BER-TLV EF commands
|
||||||
-------------------
|
-------------------
|
||||||
|
|
|
@ -526,6 +526,17 @@ class TransparentEF(CardEF):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
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 = argparse.ArgumentParser()
|
||||||
read_bin_parser.add_argument(
|
read_bin_parser.add_argument(
|
||||||
'--offset', type=int, default=0, help='Byte offset for start of read')
|
'--offset', type=int, default=0, help='Byte offset for start of read')
|
||||||
|
@ -738,6 +749,17 @@ class LinFixedEF(CardEF):
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super().__init__(**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 = argparse.ArgumentParser()
|
||||||
read_rec_parser.add_argument(
|
read_rec_parser.add_argument(
|
||||||
'record_nr', type=int, help='Number of record to be read')
|
'record_nr', type=int, help='Number of record to be read')
|
||||||
|
|
Loading…
Reference in New Issue