From e4e98316a8bfabc9b1ce6952c1721d5c093cc9c1 Mon Sep 17 00:00:00 2001 From: Supreeth Herle Date: Wed, 18 Mar 2020 11:33:14 +0100 Subject: [PATCH] cards.py: Added parsing of all the AIDs in the UICC Introduced a new member variable and a member function to Card class to fetch and store the AIDs present in UICC. And, this variable (a list) is populated by reading the EF 2f00 under MF 3f00 (function read_aids()). Change-Id: I7ca77a73ebb42a8ba1381588d878040675d3019a --- pySim/cards.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/pySim/cards.py b/pySim/cards.py index a872ee07..fe7f0fd1 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -32,6 +32,7 @@ class Card(object): def __init__(self, scc): self._scc = scc self._adm_chv_num = 4 + self._aids = [] def reset(self): self._scc.reset_card() @@ -168,6 +169,20 @@ class Card(object): return None + # Fetch all the AIDs present on UICC + def read_aids(self): + try: + # Find out how many records the EF.DIR has + # and store all the AIDs in the UICC + rec_cnt = self._scc.record_count(['3f00', '2f00']) + for i in range(0, rec_cnt): + rec = self._scc.read_record(['3f00', '2f00'], i + 1) + if (rec[0][0:2], rec[0][4:6]) == ('61', '4f') and len(rec[0]) > 12 \ + and rec[0][8:8 + int(rec[0][6:8], 16) * 2] not in self._aids: + self._aids.append(rec[0][8:8 + int(rec[0][6:8], 16) * 2]) + except Exception as e: + print("Can't read AIDs from SIM -- %s" % (str(e),)) + class _MagicSimBase(Card): """