diff options
-rwxr-xr-x | pySim-read.py | 12 | ||||
-rw-r--r-- | pySim/cards.py | 13 | ||||
-rw-r--r-- | pysim-testdata/sysmoISIM-SJA2.ok | 10 |
3 files changed, 34 insertions, 1 deletions
diff --git a/pySim-read.py b/pySim-read.py index c8b1a5d..b6eeab7 100755 --- a/pySim-read.py +++ b/pySim-read.py @@ -30,7 +30,7 @@ import re import sys from pySim.ts_51_011 import EF, DF, EF_SST_map, EF_AD_mode_map from pySim.ts_31_102 import EF_UST_map, EF_USIM_ADF_map -from pySim.ts_31_103 import EF_IST_map +from pySim.ts_31_103 import EF_IST_map, EF_ISIM_ADF_map from pySim.commands import SimCardCommands from pySim.cards import card_detect, Card @@ -294,6 +294,16 @@ if __name__ == '__main__': except Exception as e: print("ePDGSelection: Can't read file -- " + str(e)) + # Select ISIM application by its AID + if '9000' == card.select_adf_by_aid(adf="isim"): + #EF.P-CSCF - P-CSCF Address + try: + if card.file_exists(EF_ISIM_ADF_map['PCSCF']): + res = card.read_pcscf() + print("P-CSCF:\n%s" % (len(res) and res or '\tNot available\n',)) + except Exception as e: + print("P-CSCF: Can't read file -- " + str(e)) + # Check whether we have th AID of ISIM, if so select it by its AID # EF.IST - File Id in ADF ISIM : 6f07 if '9000' == card.select_adf_by_aid(adf="isim"): diff --git a/pySim/cards.py b/pySim/cards.py index 498c34e..b9bd699 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -25,6 +25,7 @@ from pySim.ts_51_011 import EF, DF from pySim.ts_31_102 import EF_USIM_ADF_map +from pySim.ts_31_103 import EF_ISIM_ADF_map from pySim.utils import * from smartcard.util import toBytes @@ -313,6 +314,18 @@ class IsimCard(Card): def __init__(self, ssc): super(IsimCard, self).__init__(ssc) + def read_pcscf(self): + rec_cnt = self._scc.record_count(EF_ISIM_ADF_map['PCSCF']) + pcscf_recs = "" + for i in range(0, rec_cnt): + (res, sw) = self._scc.read_record(EF_ISIM_ADF_map['PCSCF'], i + 1) + if sw == '9000': + content = dec_addr_tlv(res) + pcscf_recs += "%s" % (len(content) and content or '\tNot available\n') + else: + pcscf_recs += "\tP-CSCF: Can't read, response code = %s\n" % (sw) + return pcscf_recs + class _MagicSimBase(Card): """ diff --git a/pysim-testdata/sysmoISIM-SJA2.ok b/pysim-testdata/sysmoISIM-SJA2.ok index 94c4328..03de57f 100644 --- a/pysim-testdata/sysmoISIM-SJA2.ok +++ b/pysim-testdata/sysmoISIM-SJA2.ok @@ -172,6 +172,16 @@ ePDGSelection: ffffffffffff # unused ffffffffffff # unused +P-CSCF: + Not available + Not available + Not available + Not available + Not available + Not available + Not available + Not available + ISIM Service Table: 190200 Service 1 - P-CSCF address Service 4 - GBA-based Local Key Establishment Mechanism |