From 4a7651eb65b24f862169161c47fbad81bfd154e9 Mon Sep 17 00:00:00 2001 From: Philipp Maier Date: Wed, 19 Nov 2025 16:08:18 +0100 Subject: [PATCH] pySim-shell: re-organize Card Key Provider related options As we plan to support other formats as data source for the Card Key Provider soon, the more commandline options may be added and it makes sense to group the Card Key Provider options in a dedicated group. Let's also rename the option "--csv-column-key" to just "--column-key". The column encryption is a generic concept and not CSV format specific. (let's silently keep the "--csv-column-key" argument so maintain backward compatibility) Related: SYS#7725 Change-Id: I5093f8383551f8c9b84342ca6674c1ebdbbfc19c --- pySim-shell.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/pySim-shell.py b/pySim-shell.py index 878aea09..a8b15d55 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -1127,10 +1127,6 @@ argparse_add_reader_args(option_parser) global_group = option_parser.add_argument_group('General Options') global_group.add_argument('--script', metavar='PATH', default=None, help='script with pySim-shell commands to be executed automatically at start-up') -global_group.add_argument('--csv', metavar='FILE', - default=None, help='Read card data from CSV file') -global_group.add_argument('--csv-column-key', metavar='FIELD:AES_KEY_HEX', default=[], action='append', - help='per-CSV-column AES transport key') global_group.add_argument("--card_handler", dest="card_handler_config", metavar="FILE", help="Use automatic card handling machine") global_group.add_argument("--noprompt", help="Run in non interactive mode", @@ -1140,6 +1136,15 @@ global_group.add_argument("--skip-card-init", help="Skip all card/profile initia global_group.add_argument("--verbose", help="Enable verbose logging", action='store_true', default=False) +card_key_group = option_parser.add_argument_group('Card Key Provider Options') +card_key_group.add_argument('--csv', metavar='FILE', + default=str(Path.home()) + "/.osmocom/pysim/card_data.csv", + help='Read card data from CSV file') +card_key_group.add_argument('--csv-column-key', metavar='FIELD:AES_KEY_HEX', default=[], action='append', + help=argparse.SUPPRESS, dest='column_key') +card_key_group.add_argument('--column-key', metavar='FIELD:AES_KEY_HEX', default=[], action='append', + help='per-column AES transport key', dest='column_key') + adm_group = global_group.add_mutually_exclusive_group() adm_group.add_argument('-a', '--pin-adm', metavar='PIN_ADM1', dest='pin_adm', default=None, help='ADM PIN used for provisioning (overwrites default)') @@ -1168,15 +1173,12 @@ if __name__ == '__main__': # Register csv-file as card data provider, either from specified CSV # or from CSV file in home directory - csv_column_keys = {} - for par in opts.csv_column_key: + column_keys = {} + for par in opts.column_key: name, key = par.split(':') - csv_column_keys[name] = key - csv_default = str(Path.home()) + "/.osmocom/pysim/card_data.csv" - if opts.csv: - card_key_provider_register(CardKeyProviderCsv(opts.csv, csv_column_keys)) - if os.path.isfile(csv_default): - card_key_provider_register(CardKeyProviderCsv(csv_default, csv_column_keys)) + column_keys[name] = key + if os.path.isfile(opts.csv): + card_key_provider_register(CardKeyProviderCsv(opts.csv, column_keys)) # Init card reader driver sl = init_reader(opts, proactive_handler = Proact())