diff options
Diffstat (limited to 'pySim')
-rw-r--r-- | pySim/cards.py | 100 | ||||
-rw-r--r-- | pySim/commands.py | 32 | ||||
-rw-r--r-- | pySim/transport/__init__.py | 20 |
3 files changed, 76 insertions, 76 deletions
diff --git a/pySim/cards.py b/pySim/cards.py index cda337a..41723c4 100644 --- a/pySim/cards.py +++ b/pySim/cards.py @@ -85,11 +85,11 @@ class Card(object): 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 +97,19 @@ class Card(object): 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 +119,16 @@ class Card(object): 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 @@ -394,7 +394,7 @@ class GrcardSim(Card): data, sw = self._scc.update_binary('6f78', lpad(p['acc'], 4)) # EF.SMSP - if p.get('smsp'): + if p.get('smsp'): r = self._scc.select_file(['3f00', '7f10', '6f42']) data, sw = self._scc.update_record('6f42', 1, lpad(p['smsp'], 80)) @@ -426,7 +426,7 @@ class SysmoSIMgr1(GrcardSim): """ name = 'sysmosim-gr1' - @classmethod + @classmethod def autodetect(kls, scc): try: # Look for ATR @@ -536,7 +536,7 @@ class SysmoSIMgr2(Card): r = self._scc.select_file(['3f00', '7f10']) # write EF.SMSP - if p.get('smsp'): + if p.get('smsp'): data, sw = self._scc.update_record('6f42', 1, lpad(p['smsp'], 80)) def erase(self): @@ -592,25 +592,25 @@ class SysmoUSIMSJS1(Card): 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': + 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) @@ -848,28 +848,28 @@ class WavemobileSim(Card): 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 +882,30 @@ class WavemobileSim(Card): 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 diff --git a/pySim/commands.py b/pySim/commands.py index 3d17903..03540b6 100644 --- a/pySim/commands.py +++ b/pySim/commands.py @@ -34,7 +34,7 @@ class SimCardCommands(object): def __get_len_from_tlv(self, fcp): # see also: ETSI TS 102 221, chapter 11.1.1.3.1 Response for MF, # DF or ADF - from pytlv.TLV import TLV + from pytlv.TLV import TLV tlvparser = TLV(['82', '83', '84', 'a5', '8a', '8b', '8c', '80', 'ab', 'c6', '81', '88']) # pytlv is case sensitive! @@ -62,24 +62,24 @@ class SimCardCommands(object): return int(tlv_parsed['80'], 16) - # Tell the length of a record by the card response - # USIMs respond with an FCP template, which is different - # from what SIMs responds. See also: - # USIM: ETSI TS 102 221, chapter 11.1.1.3 Response Data - # SIM: GSM 11.11, chapter 9.2.1 SELECT + # Tell the length of a record by the card response + # USIMs respond with an FCP template, which is different + # from what SIMs responds. See also: + # USIM: ETSI TS 102 221, chapter 11.1.1.3 Response Data + # SIM: GSM 11.11, chapter 9.2.1 SELECT def __record_len(self, r): - if self.sel_ctrl == "0004": - return self.__get_len_from_tlv(r[-1]) - else: - return int(r[-1][28:30], 16) + if self.sel_ctrl == "0004": + return self.__get_len_from_tlv(r[-1]) + else: + return int(r[-1][28:30], 16) - # Tell the length of a binary file. See also comment - # above. + # Tell the length of a binary file. See also comment + # above. def __len(self, r): - if self.sel_ctrl == "0004": - return self.__get_len_from_tlv(r[-1]) - else: - return int(r[-1][4:8], 16) + if self.sel_ctrl == "0004": + return self.__get_len_from_tlv(r[-1]) + else: + return int(r[-1][4:8], 16) def get_atr(self): return self._tp.get_atr() diff --git a/pySim/transport/__init__.py b/pySim/transport/__init__.py index 4b932cd..69e2fe9 100644 --- a/pySim/transport/__init__.py +++ b/pySim/transport/__init__.py @@ -28,7 +28,7 @@ class LinkBase(object): timeout : Maximum wait time (None=no timeout) newcardonly : Should we wait for a new card, or an already - inserted one ? + inserted one ? """ pass @@ -52,8 +52,8 @@ class LinkBase(object): pdu : string of hexadecimal characters (ex. "A0A40000023F00") return : tuple(data, sw), where - data : string (in hex) of returned data (ex. "074F4EFFFF") - sw : string (in hex) of status word (ex. "9000") + data : string (in hex) of returned data (ex. "074F4EFFFF") + sw : string (in hex) of status word (ex. "9000") """ pass @@ -62,8 +62,8 @@ class LinkBase(object): pdu : string of hexadecimal characters (ex. "A0A40000023F00") return : tuple(data, sw), where - data : string (in hex) of returned data (ex. "074F4EFFFF") - sw : string (in hex) of status word (ex. "9000") + data : string (in hex) of returned data (ex. "074F4EFFFF") + sw : string (in hex) of status word (ex. "9000") """ data, sw = self.send_apdu_raw(pdu) @@ -84,15 +84,15 @@ class LinkBase(object): pdu : string of hexadecimal characters (ex. "A0A40000023F00") sw : string of 4 hexadecimal characters (ex. "9000"). The - user may mask out certain digits using a '?' to add some - ambiguity if needed. + user may mask out certain digits using a '?' to add some + ambiguity if needed. return : tuple(data, sw), where - data : string (in hex) of returned data (ex. "074F4EFFFF") - sw : string (in hex) of status word (ex. "9000") + data : string (in hex) of returned data (ex. "074F4EFFFF") + sw : string (in hex) of status word (ex. "9000") """ rv = self.send_apdu(pdu) - # Create a masked version of the returned status word + # Create a masked version of the returned status word sw_masked = "" for i in range(0, 4): if sw.lower()[i] == '?': |