aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xpySim-read.py12
-rw-r--r--pySim/cards.py13
-rw-r--r--pysim-testdata/sysmoISIM-SJA2.ok10
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