This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
herlesupreeth gerrit-no-reply at lists.osmocom.orgherlesupreeth has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/16945 ) Change subject: Fixed messy indentation and added ability to write HPLMN_ACT in Sysmocom Card ...................................................................... Fixed messy indentation and added ability to write HPLMN_ACT in Sysmocom Card Change-Id: I35848059d6082c379246c8d695cb094c20780d15 --- M pySim/cards.py 1 file changed, 60 insertions(+), 52 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/45/16945/1 diff --git a/pySim/cards.py b/pySim/cards.py index 5d4d4f3..ff9c9b1 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -76,8 +76,10 @@ access_tech = 'FFFF' # All technologues selected, even Reserved for Future Use ones """ # get size and write EF.HPLMNwAcT - r = self._scc.select_file(EF['HPLMNwAcT']) - size = int(r[-1][4:8], 16) + #r = self._scc.select_file(EF['HPLMNwAcT']) + #size = int(r[-1][4:8], 16) + data = self._scc.read_binary(EF['HPLMNwAcT'], length=None, offset=0) + size = len(data[0])/2 hplmn = enc_plmn(mcc, mnc) content = hplmn + access_tech data, sw = self._scc.update_binary(EF['HPLMNwAcT'], content + 'ffffff0000' * (size/5-1)) @@ -85,11 +87,11 @@ def update_oplmn_act(self, mcc, mnc, access_tech='FFFF'): """ - See note in update_hplmn_act() + See note in update_hplmn_act() """ # get size and write EF.OPLMNwAcT - data = self._scc.read_binary(EF['OPLMNwAcT'], length=None, offset=0) - size = len(data[0])/2 + data = self._scc.read_binary(EF['OPLMNwAcT'], length=None, offset=0) + size = len(data[0])/2 hplmn = enc_plmn(mcc, mnc) content = hplmn + access_tech data, sw = self._scc.update_binary(EF['OPLMNwAcT'], content + 'ffffff0000' * (size/5-1)) @@ -97,19 +99,19 @@ def update_plmn_act(self, mcc, mnc, access_tech='FFFF'): """ - See note in update_hplmn_act() + See note in update_hplmn_act() """ # get size and write EF.PLMNwAcT - data = self._scc.read_binary(EF['PLMNwAcT'], length=None, offset=0) - size = len(data[0])/2 + data = self._scc.read_binary(EF['PLMNwAcT'], length=None, offset=0) + size = len(data[0])/2 hplmn = enc_plmn(mcc, mnc) content = hplmn + access_tech data, sw = self._scc.update_binary(EF['PLMNwAcT'], content + 'ffffff0000' * (size/5-1)) return sw - def update_plmnsel(self, mcc, mnc): - data = self._scc.read_binary(EF['PLMNsel'], length=None, offset=0) - size = len(data[0])/2 + def update_plmnsel(self, mcc, mnc): + data = self._scc.read_binary(EF['PLMNsel'], length=None, offset=0) + size = len(data[0])/2 hplmn = enc_plmn(mcc, mnc) data, sw = self._scc.update_binary(EF['PLMNsel'], hplmn + 'ff' * (size-3)) return sw @@ -119,16 +121,16 @@ return sw def update_ad(self, mnc): - #See also: 3GPP TS 31.102, chapter 4.2.18 - mnclen = len(str(mnc)) - if mnclen == 1: - mnclen = 2 - if mnclen > 3: + #See also: 3GPP TS 31.102, chapter 4.2.18 + mnclen = len(str(mnc)) + if mnclen == 1: + mnclen = 2 + if mnclen > 3: raise RuntimeError('unable to calculate proper mnclen') - data = self._scc.read_binary(EF['AD'], length=None, offset=0) - size = len(data[0])/2 - content = data[0][0:6] + "%02X" % mnclen + data = self._scc.read_binary(EF['AD'], length=None, offset=0) + size = len(data[0])/2 + content = data[0][0:6] + "%02X" % mnclen data, sw = self._scc.update_binary(EF['AD'], content) return sw @@ -151,7 +153,7 @@ each possible provider uses a specific record number in each EF. The indexes used are ( where N is the number of providers supported ) : - [2 .. N+1] for the operator name - - [1 .. N] for the programable EFs + - [1 .. N] for the programable EFs * 3f00/7f4d/8f0c : Operator Name @@ -425,7 +427,7 @@ """ name = 'sysmosim-gr1' - @classmethod + @classmethod def autodetect(kls, scc): try: # Look for ATR @@ -593,25 +595,31 @@ data, sw = self._scc.update_binary('6f07', enc_imsi(p['imsi'])) # EF.PLMNsel - if p.get('mcc') and p.get('mnc'): - sw = self.update_plmnsel(p['mcc'], p['mnc']) - if sw != '9000': - print("Programming PLMNsel failed with code %s"%sw) + if p.get('mcc') and p.get('mnc'): + sw = self.update_plmnsel(p['mcc'], p['mnc']) + if sw != '9000': + rint("Programming PLMNsel failed with code %s"%sw) - # EF.PLMNwAcT - if p.get('mcc') and p.get('mnc'): + # EF.PLMNwAcT + if p.get('mcc') and p.get('mnc'): sw = self.update_plmn_act(p['mcc'], p['mnc']) if sw != '9000': print("Programming PLMNwAcT failed with code %s"%sw) - # EF.OPLMNwAcT - if p.get('mcc') and p.get('mnc'): + # EF.OPLMNwAcT + if p.get('mcc') and p.get('mnc'): sw = self.update_oplmn_act(p['mcc'], p['mnc']) if sw != '9000': print("Programming OPLMNwAcT failed with code %s"%sw) - # EF.AD - if p.get('mcc') and p.get('mnc'): + # EF.HPLMNwAcT + if p.get('mcc') and p.get('mnc'): + sw = self.update_hplmn_act(p['mcc'], p['mnc']) + if sw != '9000': + print("Programming HPLMNwAcT failed with code %s"%sw) + + # EF.AD + if p.get('mcc') and p.get('mnc'): sw = self.update_ad(p['mnc']) if sw != '9000': print("Programming AD failed with code %s"%sw) @@ -848,28 +856,28 @@ if sw != '9000': raise RuntimeError('Failed to authenticate with ADM key %s'%(p['pin_adm'],)) - # EF.ICCID - # TODO: Add programming of the ICCID - if p.get('iccid'): + # EF.ICCID + # TODO: Add programming of the ICCID + if p.get('iccid'): print("Warning: Programming of the ICCID is not implemented for this type of card.") - # KI (Presumably a propritary file) - # TODO: Add programming of KI - if p.get('ki'): + # KI (Presumably a propritary file) + # TODO: Add programming of KI + if p.get('ki'): print("Warning: Programming of the KI is not implemented for this type of card.") - # OPc (Presumably a propritary file) - # TODO: Add programming of OPc - if p.get('opc'): + # OPc (Presumably a propritary file) + # TODO: Add programming of OPc + if p.get('opc'): print("Warning: Programming of the OPc is not implemented for this type of card.") - # EF.SMSP + # EF.SMSP if p.get('smsp'): sw = self.update_smsp(p['smsp']) if sw != '9000': print("Programming SMSP failed with code %s"%sw) - # EF.IMSI + # EF.IMSI if p.get('imsi'): sw = self.update_imsi(p['imsi']) if sw != '9000': @@ -882,30 +890,30 @@ print("Programming ACC failed with code %s"%sw) # EF.PLMNsel - if p.get('mcc') and p.get('mnc'): - sw = self.update_plmnsel(p['mcc'], p['mnc']) - if sw != '9000': + if p.get('mcc') and p.get('mnc'): + sw = self.update_plmnsel(p['mcc'], p['mnc']) + if sw != '9000': print("Programming PLMNsel failed with code %s"%sw) - # EF.PLMNwAcT - if p.get('mcc') and p.get('mnc'): + # EF.PLMNwAcT + if p.get('mcc') and p.get('mnc'): sw = self.update_plmn_act(p['mcc'], p['mnc']) if sw != '9000': print("Programming PLMNwAcT failed with code %s"%sw) - # EF.OPLMNwAcT - if p.get('mcc') and p.get('mnc'): + # EF.OPLMNwAcT + if p.get('mcc') and p.get('mnc'): sw = self.update_oplmn_act(p['mcc'], p['mnc']) if sw != '9000': print("Programming OPLMNwAcT failed with code %s"%sw) - # EF.AD - if p.get('mcc') and p.get('mnc'): + # EF.AD + if p.get('mcc') and p.get('mnc'): sw = self.update_ad(p['mnc']) if sw != '9000': print("Programming AD failed with code %s"%sw) - return None + return None def erase(self): return -- To view, visit https://gerrit.osmocom.org/c/pysim/+/16945 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: I35848059d6082c379246c8d695cb094c20780d15 Gerrit-Change-Number: 16945 Gerrit-PatchSet: 1 Gerrit-Owner: herlesupreeth <herlesupreeth at gmail.com> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200120/25bf2efd/attachment.htm>