diff options
author | Daniel Willmann <daniel@totalueberwachung.de> | 2018-06-15 07:31:50 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2019-08-28 23:21:56 +0200 |
commit | 1d00c19d147db2e77ed980292ae82ea5eff3a21a (patch) | |
tree | cb2ad2fffc5b3485afc8e885d07795b427157e49 /pySim-prog.py | |
parent | 23888dab85165f44bfd8ee649dbfc869e881545d (diff) |
pySim-prog: Use CSV format with headers
This way we can have optional fields like adm1 in the file
Also require iccid as identifier for the SIM card
Change-Id: I0d317ea51d0cf582b82157eec6cdec074001a236
Diffstat (limited to 'pySim-prog.py')
-rwxr-xr-x | pySim-prog.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/pySim-prog.py b/pySim-prog.py index 2638eef..dde9194 100755 --- a/pySim-prog.py +++ b/pySim-prog.py @@ -399,7 +399,7 @@ def gen_parameters(opts): 'ki' : ki, 'opc' : opc, 'acc' : acc, - 'pin_adm' : pin_adm, + 'adm1' : pin_adm, } @@ -414,6 +414,7 @@ def print_parameters(params): > Ki : %(ki)s > OPC : %(opc)s > ACC : %(acc)s + > ADM1 : %(adm1)s """ % params @@ -427,18 +428,23 @@ def write_params_csv(opts, params): cw.writerow([params[x] for x in row]) f.close() -def _read_params_csv(opts, imsi): +def _read_params_csv(opts, iccid=None, imsi=None): import csv - row = ['name', 'iccid', 'mcc', 'mnc', 'imsi', 'smsp', 'ki', 'opc'] f = open(opts.read_csv, 'r') - cr = csv.DictReader(f, row) + cr = csv.DictReader(f) i = 0 + if not 'iccid' in cr.fieldnames: + raise Exception("CSV file in wrong format!") for row in cr: if opts.num is not None and opts.read_imsi is False: if opts.num == i: f.close() return row; i += 1 + if row['iccid'] == iccid: + f.close() + return row; + if row['imsi'] == imsi: f.close() return row; @@ -446,8 +452,8 @@ def _read_params_csv(opts, imsi): f.close() return None -def read_params_csv(opts, imsi): - row = _read_params_csv(opts, imsi) +def read_params_csv(opts, imsi=None, iccid=None): + row = _read_params_csv(opts, iccid=iccid, imsi=imsi) if row is not None: row['mcc'] = int(row['mcc']) row['mnc'] = int(row['mnc']) @@ -628,7 +634,9 @@ if __name__ == '__main__': if opts.source == 'cmdline': cp = gen_parameters(opts) elif opts.source == 'csv': - if opts.read_imsi: + imsi = None + iccid = None + if opts.read_imsi: if opts.dry_run: # Connect transport print "Insert card now (or CTRL-C to cancel)" @@ -637,7 +645,7 @@ if __name__ == '__main__': imsi = swap_nibbles(res)[3:] else: imsi = opts.imsi - cp = read_params_csv(opts, imsi) + cp = read_params_csv(opts, imsi=imsi, iccid=iccid) if cp is None: print "Error reading parameters\n" sys.exit(2) |