aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSupreeth Herle <herlesupreeth@gmail.com>2020-03-23 10:00:50 +0100
committerherlesupreeth <herlesupreeth@gmail.com>2020-04-27 08:41:49 +0000
commit3e6f16d8f6686cb4e2cd2a2053a6c6aad98feaa4 (patch)
tree8f5af69fcfc0341e37ec4137b6773c401da17c07
parentf9f3e5e0c1be4963a734910a39bbec26f6990e1b (diff)
pySim-read.py: Add ability to read Cards with correct CLA, P1 and P2 bytes
Initially the Card is read assuming a UICC SIM, but in case its not, an error 6e00 will be thrown indicating CLA not supported and Card has just Classic SIM application. Ref: https://web.archive.org/web/20090630004017/http://cheef.ru/docs/HowTo/APDU.info The above link provides the bytes to use for CLA, P1, P2 in APDU Change-Id: Ifea328eff3a381d7b82118e22d2bc0ec5f8a87e4
-rwxr-xr-xpySim-read.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/pySim-read.py b/pySim-read.py
index 3e25c76..8f81443 100755
--- a/pySim-read.py
+++ b/pySim-read.py
@@ -92,6 +92,17 @@ if __name__ == '__main__':
# Wait for SIM card
sl.wait_for_card()
+ # Assuming UICC SIM
+ scc.cla_byte = "00"
+ scc.sel_ctrl = "0004"
+
+ # Testing for Classic SIM or UICC
+ (res, sw) = sl.send_apdu(scc.cla_byte + "a4" + scc.sel_ctrl + "02" + "3f00")
+ if sw == '6e00':
+ # Just a Classic SIM
+ scc.cla_byte = "a0"
+ scc.sel_ctrl = "0000"
+
# Program the card
print("Reading ...")
@@ -236,6 +247,5 @@ if __name__ == '__main__':
else:
print("SIM Service Table: Can't read, response code = %s" % (sw,))
-
# Done for this card and maybe for everything ?
print("Done !\n")