From 3e6f16d8f6686cb4e2cd2a2053a6c6aad98feaa4 Mon Sep 17 00:00:00 2001 From: Supreeth Herle Date: Mon, 23 Mar 2020 10:00:50 +0100 Subject: [PATCH] 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 --- pySim-read.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pySim-read.py b/pySim-read.py index 3e25c76d..8f814436 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")