mirror of https://gerrit.osmocom.org/pysim
Add FPLMN read and program
Change-Id: I9ce8c1af691c28ea9ed69e7b5f03f0c02d1f029b
This commit is contained in:
parent
1de62c41d7
commit
777ee9e54d
|
@ -150,6 +150,9 @@ def parse_options():
|
||||||
default=None,
|
default=None,
|
||||||
choices=['{:02X}'.format(int(m)) for m in EF_AD.OP_MODE],
|
choices=['{:02X}'.format(int(m)) for m in EF_AD.OP_MODE],
|
||||||
)
|
)
|
||||||
|
parser.add_option("-f", "--fplmn", dest="fplmn", action="append",
|
||||||
|
help="Set Forbidden PLMN. Add multiple time for multiple FPLMNS",
|
||||||
|
)
|
||||||
parser.add_option("--epdgid", dest="epdgid",
|
parser.add_option("--epdgid", dest="epdgid",
|
||||||
help="Set Home Evolved Packet Data Gateway (ePDG) Identifier. (Only FQDN format supported)",
|
help="Set Home Evolved Packet Data Gateway (ePDG) Identifier. (Only FQDN format supported)",
|
||||||
)
|
)
|
||||||
|
@ -498,6 +501,7 @@ def gen_parameters(opts):
|
||||||
'impi': opts.impi,
|
'impi': opts.impi,
|
||||||
'impu': opts.impu,
|
'impu': opts.impu,
|
||||||
'opmode': opts.opmode,
|
'opmode': opts.opmode,
|
||||||
|
'fplmn': opts.fplmn,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -253,6 +253,14 @@ if __name__ == '__main__':
|
||||||
else:
|
else:
|
||||||
print("EHPLMN: Can't read, response code = %s" % (sw,))
|
print("EHPLMN: Can't read, response code = %s" % (sw,))
|
||||||
|
|
||||||
|
# EF.FPLMN
|
||||||
|
if usim_card.file_exists(EF_USIM_ADF_map['FPLMN']):
|
||||||
|
res, sw = usim_card.read_fplmn()
|
||||||
|
if sw == '9000':
|
||||||
|
print(f'FPLMN:\n{res}')
|
||||||
|
else:
|
||||||
|
print(f'FPLMN: Can\'t read, response code = {sw}')
|
||||||
|
|
||||||
# EF.UST
|
# EF.UST
|
||||||
try:
|
try:
|
||||||
if usim_card.file_exists(EF_USIM_ADF_map['UST']):
|
if usim_card.file_exists(EF_USIM_ADF_map['UST']):
|
||||||
|
|
|
@ -381,6 +381,22 @@ class UsimCard(SimCard):
|
||||||
data, sw = self._scc.update_binary(EF_USIM_ADF_map['EHPLMN'], ehplmn)
|
data, sw = self._scc.update_binary(EF_USIM_ADF_map['EHPLMN'], ehplmn)
|
||||||
return sw
|
return sw
|
||||||
|
|
||||||
|
def read_fplmn(self):
|
||||||
|
res, sw = self._scc.read_binary(EF_USIM_ADF_map['FPLMN'])
|
||||||
|
if sw == '9000':
|
||||||
|
return format_xplmn(res), sw
|
||||||
|
else:
|
||||||
|
return None, sw
|
||||||
|
|
||||||
|
def update_fplmn(self, fplmn):
|
||||||
|
self._scc.select_file('3f00')
|
||||||
|
self.select_adf_by_aid('USIM')
|
||||||
|
size = self._scc.binary_size(EF_USIM_ADF_map['FPLMN'])
|
||||||
|
encoded = ''.join([enc_plmn(plmn[:3], plmn[3:]) for plmn in fplmn])
|
||||||
|
encoded = rpad(encoded, size)
|
||||||
|
data, sw = self._scc.update_binary(EF_USIM_ADF_map['FPLMN'], encoded)
|
||||||
|
return sw
|
||||||
|
|
||||||
def read_epdgid(self):
|
def read_epdgid(self):
|
||||||
(res, sw) = self._scc.read_binary(EF_USIM_ADF_map['ePDGId'])
|
(res, sw) = self._scc.read_binary(EF_USIM_ADF_map['ePDGId'])
|
||||||
if sw == '9000':
|
if sw == '9000':
|
||||||
|
@ -1702,6 +1718,7 @@ class GialerSim(UsimCard):
|
||||||
'smsp': self.update_smsp,
|
'smsp': self.update_smsp,
|
||||||
'ki': self.update_ki,
|
'ki': self.update_ki,
|
||||||
'opc': self.update_opc,
|
'opc': self.update_opc,
|
||||||
|
'fplmn': self.update_fplmn,
|
||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -1715,6 +1732,7 @@ class GialerSim(UsimCard):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def program(self, p):
|
def program(self, p):
|
||||||
|
self.set_apdu_parameter('00', '0004')
|
||||||
# Authenticate
|
# Authenticate
|
||||||
self._scc.verify_chv(0xc, h2b('3834373936313533'))
|
self._scc.verify_chv(0xc, h2b('3834373936313533'))
|
||||||
for handler in self._program_handlers:
|
for handler in self._program_handlers:
|
||||||
|
|
|
@ -88,6 +88,18 @@ SIM Service Table: ff3cc3ff030fff0f000fff03f0c0
|
||||||
Service 58 - Extension 8
|
Service 58 - Extension 8
|
||||||
Service 59 - MMS User Connectivity Parameters
|
Service 59 - MMS User Connectivity Parameters
|
||||||
|
|
||||||
|
FPLMN:
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
|
||||||
USIM Service Table: 01ea1ffc21360480010000
|
USIM Service Table: 01ea1ffc21360480010000
|
||||||
Service 1 - Local Phone Book
|
Service 1 - Local Phone Book
|
||||||
Service 10 - Short Message Storage (SMS)
|
Service 10 - Short Message Storage (SMS)
|
||||||
|
|
|
@ -93,6 +93,12 @@ SIM Service Table: ff33ff0f3c00ff0f000cf0c0f0030000
|
||||||
Service 58 - Extension 8
|
Service 58 - Extension 8
|
||||||
Service 59 - MMS User Connectivity Parameters
|
Service 59 - MMS User Connectivity Parameters
|
||||||
|
|
||||||
|
FPLMN:
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
|
||||||
USIM Service Table: 9eff1b3c37fe5900000000
|
USIM Service Table: 9eff1b3c37fe5900000000
|
||||||
Service 2 - Fixed Dialling Numbers (FDN)
|
Service 2 - Fixed Dialling Numbers (FDN)
|
||||||
Service 3 - Extension 2
|
Service 3 - Extension 2
|
||||||
|
|
|
@ -108,6 +108,12 @@ EHPLMN:
|
||||||
ffffff # unused
|
ffffff # unused
|
||||||
ffffff # unused
|
ffffff # unused
|
||||||
|
|
||||||
|
FPLMN:
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
ffffff # unused
|
||||||
|
|
||||||
USIM Service Table: beff9f9de73e0408400170330000002e00000000
|
USIM Service Table: beff9f9de73e0408400170330000002e00000000
|
||||||
Service 2 - Fixed Dialling Numbers (FDN)
|
Service 2 - Fixed Dialling Numbers (FDN)
|
||||||
Service 3 - Extension 2
|
Service 3 - Extension 2
|
||||||
|
|
|
@ -104,6 +104,12 @@ SIM Service Table: ff3fffff3f003f1ff00c00c0f00000
|
||||||
Service 58 - Extension 8
|
Service 58 - Extension 8
|
||||||
Service 59 - MMS User Connectivity Parameters
|
Service 59 - MMS User Connectivity Parameters
|
||||||
|
|
||||||
|
FPLMN:
|
||||||
|
62f201 # MCC: 262 MNC: 010
|
||||||
|
62f202 # MCC: 262 MNC: 020
|
||||||
|
62f203 # MCC: 262 MNC: 030
|
||||||
|
62f207 # MCC: 262 MNC: 070
|
||||||
|
|
||||||
USIM Service Table: 9e6b1dfc67f6580000
|
USIM Service Table: 9e6b1dfc67f6580000
|
||||||
Service 2 - Fixed Dialling Numbers (FDN)
|
Service 2 - Fixed Dialling Numbers (FDN)
|
||||||
Service 3 - Extension 2
|
Service 3 - Extension 2
|
||||||
|
|
Loading…
Reference in New Issue