aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2012-08-15 15:56:05 +0200
committerHarald Welte <laforge@gnumonks.org>2016-05-22 15:53:28 +0200
commit4e824686f5e0b104653911032b124cbd31228dcd (patch)
tree5ac980e008b75f798c75b0501d0d92af461fc5eb
parent8c1b33c439fef423c3536e9243035722c52aba4c (diff)
re-program: Instead of specifying the IMSI, read it from the card.
-rwxr-xr-xpySim-prog.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/pySim-prog.py b/pySim-prog.py
index 650d8ea..14874cd 100755
--- a/pySim-prog.py
+++ b/pySim-prog.py
@@ -116,9 +116,10 @@ def parse_options():
)
parser.add_option("--acc", dest="acc",
help="Set ACC bits (Access Control Code). not all card types are supported",
+ )
+ parser.add_option("--read-imsi", dest="read_imsi", action="store_true",
+ help="Read the IMSI from the CARD", default=False
)
-
-
parser.add_option("-z", "--secret", dest="secret", metavar="STR",
help="Secret used for ICCID/IMSI autogen",
)
@@ -156,8 +157,8 @@ def parse_options():
sys.exit(0)
if options.source == 'csv':
- if (options.imsi is None) and (options.batch_mode is False):
- parser.error("CSV mode needs either an IMSI or batch mode")
+ if (options.imsi is None) and (options.batch_mode is False) and (options.read_imsi is False):
+ parser.error("CSV mode needs either an IMSI, --read-imsi or batch mode")
if options.read_csv is None:
parser.error("CSV mode requires a CSV input file")
elif options.source == 'cmdline':
@@ -432,7 +433,7 @@ def _read_params_csv(opts, imsi):
cr = csv.DictReader(f, row)
i = 0
for row in cr:
- if opts.num is not None:
+ if opts.num is not None and opts.read_imsi is False:
if opts.num == i:
f.close()
return row;
@@ -613,7 +614,16 @@ if __name__ == '__main__':
if opts.source == 'cmdline':
cp = gen_parameters(opts)
elif opts.source == 'csv':
- cp = read_params_csv(opts, opts.imsi)
+ if opts.read_imsi:
+ if opts.dry_run:
+ # Connect transport
+ print "Insert card now (or CTRL-C to cancel)"
+ sl.wait_for_card(newcardonly=not first)
+ (res,_) = scc.read_binary(['3f00', '7f20', '6f07'])
+ imsi = swap_nibbles(res)[3:]
+ else:
+ imsi = opts.imsi
+ cp = read_params_csv(opts, imsi)
if cp is None:
print "Error reading parameters\n"
sys.exit(2)