aboutsummaryrefslogtreecommitdiffstats
path: root/pySim-prog.py
diff options
context:
space:
mode:
authorDaniel Willmann <daniel@totalueberwachung.de>2018-06-15 07:31:50 +0200
committerHarald Welte <laforge@gnumonks.org>2019-08-28 23:21:56 +0200
commit1d00c19d147db2e77ed980292ae82ea5eff3a21a (patch)
treecb2ad2fffc5b3485afc8e885d07795b427157e49 /pySim-prog.py
parent23888dab85165f44bfd8ee649dbfc869e881545d (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-xpySim-prog.py24
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)