diff --git a/pySim-read.py b/pySim-read.py index b6eeab79..f63205a1 100755 --- a/pySim-read.py +++ b/pySim-read.py @@ -304,6 +304,17 @@ if __name__ == '__main__': except Exception as e: print("P-CSCF: Can't read file -- " + str(e)) + # EF.DOMAIN - Home Network Domain Name e.g. ims.mncXXX.mccXXX.3gppnetwork.org + try: + if card.file_exists(EF_ISIM_ADF_map['DOMAIN']): + (res, sw) = card.read_domain() + if sw == '9000': + print("Home Network Domain Name: %s" % (len(res) and res or 'Not available',)) + else: + print("Home Network Domain Name: Can't read, response code = %s" % (sw,)) + except Exception as e: + print("Home Network Domain Name: 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 0b2d2a6d..277b8317 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -336,6 +336,16 @@ class IsimCard(Card): data, sw = self._scc.update_record(EF_ISIM_ADF_map['PCSCF'], 1, rpad(content, rec_size_bytes*2)) return sw + def read_domain(self): + (res, sw) = self._scc.read_binary(EF_ISIM_ADF_map['DOMAIN']) + if sw == '9000': + # Skip the inital tag value ('80') byte and get length of contents + length = int(res[2:4], 16) + content = h2s(res[4:4+(length*2)]) + return (content, sw) + else: + return (None, sw) + class _MagicSimBase(Card): """ diff --git a/pysim-testdata/sysmoISIM-SJA2.ok b/pysim-testdata/sysmoISIM-SJA2.ok index 03de57f1..4cdd9d5f 100644 --- a/pysim-testdata/sysmoISIM-SJA2.ok +++ b/pysim-testdata/sysmoISIM-SJA2.ok @@ -182,6 +182,7 @@ P-CSCF: Not available Not available +Home Network Domain Name: Not available ISIM Service Table: 190200 Service 1 - P-CSCF address Service 4 - GBA-based Local Key Establishment Mechanism