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/.
Ludovic Rousseau gerrit-no-reply at lists.osmocom.orgLudovic Rousseau has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-sim-auth/+/20903 )
Change subject: SIM.py: convert to Python 3 using 2to3
......................................................................
SIM.py: convert to Python 3 using 2to3
Change-Id: I1f972e308e14dbdbfc85892685682220a89f77fe
---
M card/SIM.py
1 file changed, 64 insertions(+), 64 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-sim-auth refs/changes/03/20903/1
diff --git a/card/SIM.py b/card/SIM.py
index 5d97ba4..e783747 100644
--- a/card/SIM.py
+++ b/card/SIM.py
@@ -48,8 +48,8 @@
'''
ISO7816.__init__(self, CLA=0xA0)
if self.dbg:
- print '[DBG] type definition: %s' % type(self)
- print '[DBG] CLA definition: %s' % hex(self.CLA)
+ print('[DBG] type definition: %s' % type(self))
+ print('[DBG] CLA definition: %s' % hex(self.CLA))
self.caller = {
'KC' : self.get_Kc,
@@ -121,7 +121,7 @@
self.coms.push( self.VERIFY(P2=pin_type, Data=PIN) )
else:
if self.dbg:
- print '[WNG] bad parameters'
+ print('[WNG] bad parameters')
def disable_pin(self, pin='', pin_type=1):
'''
@@ -136,7 +136,7 @@
self.coms.push( self.DISABLE_CHV(P2=pin_type, Data=PIN) )
else:
if self.dbg:
- print '[WNG] bad parameters'
+ print('[WNG] bad parameters')
def unblock_pin(self, pin_type=1, unblock_pin=''):
'''
@@ -148,7 +148,7 @@
and set 0000 value for new PIN
call ISO7816 UNBLOCK_CHV method
'''
- print 'not correctly implemented'
+ print('not correctly implemented')
return
#if pin_type == 1:
# pin_type = 0
@@ -160,7 +160,7 @@
[0x30, 0x30, 0x30, 0x30, 0xFF, 0xFF, 0xFF, 0xFF]) )
else:
if self.dbg:
- print '[WNG] bad parameters'
+ print('[WNG] bad parameters')
#return self.UNBLOCK_CHV(P2=pin_type)
def parse_file(self, Data=[]):
@@ -231,25 +231,25 @@
'''
if len(RAND) != 16:
if self.dbg:
- print '[WNG] needs a 16 bytes input RAND value'
+ print('[WNG] needs a 16 bytes input RAND value')
return None
# select DF_GSM directory
self.select([0x7F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
# run authentication
self.coms.push(self.INTERNAL_AUTHENTICATE(P1=0x00, P2=0x00, Data=RAND))
if self.coms()[2][0] != 0x9F:
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
# get authentication response
self.coms.push(self.GET_RESPONSE(Le=self.coms()[2][1]))
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
SRES, Kc = self.coms()[3][0:4], self.coms()[3][4:]
return [ SRES, Kc ]
@@ -265,27 +265,27 @@
self.select([0x7F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
# select IMSI file
imsi = self.select([0x6F, 0x07])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
# and parse the received data into the IMSI structure
- if 'Data' in imsi.keys() and len(imsi['Data']) == 9:
+ if 'Data' in list(imsi.keys()) and len(imsi['Data']) == 9:
if self.dbg:
- print "[DBG] International Mobile Subscriber Identity (IMSI): %s " % decode_BCD(imsi['Data'])[3:]
+ print("[DBG] International Mobile Subscriber Identity (IMSI): %s " % decode_BCD(imsi['Data'])[3:])
return decode_BCD(imsi['Data'])[3:]
# if issue with the content of the DF_IMSI file
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
# This contains Ciphering Key for GSM
@@ -297,19 +297,19 @@
self.select([0x7F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
Kc = self.select([0x6F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in Kc.keys() and len(Kc['Data']) == 9:
+ if 'Data' in list(Kc.keys()) and len(Kc['Data']) == 9:
if self.dbg:
- print "[DBG] Ciphering Key (Kc): %s" % b2a_hex(byteToString(Kc['Data'][0:8]))
- print "[DBG] Ciphering Key Sequence Number (n): %s " % Kc['Data'][8]
+ print("[DBG] Ciphering Key (Kc): %s" % b2a_hex(byteToString(Kc['Data'][0:8])))
+ print("[DBG] Ciphering Key Sequence Number (n): %s " % Kc['Data'][8])
return Kc['Data']
else:
return None
@@ -327,30 +327,30 @@
self.select([0x7F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
loci = self.select([0x6F, 0x7E])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in loci.keys() and len(loci['Data']) == 11:
+ if 'Data' in list(loci.keys()) and len(loci['Data']) == 11:
loci = loci['Data']
if self.dbg:
- print "[DBG] Temporary Mobile Subscriber Identity (TMSI): %s" % b2a_hex(byteToString(loci[0:4]))
+ print("[DBG] Temporary Mobile Subscriber Identity (TMSI): %s" % b2a_hex(byteToString(loci[0:4])))
LAI = loci[4:9]
- print "[DBG] Location Area Identity hex (LAI): %s" % b2a_hex(byteToString(LAI))
+ print("[DBG] Location Area Identity hex (LAI): %s" % b2a_hex(byteToString(LAI)))
MCC = ((LAI[0] & 0x0f) << 8) | (LAI[0] & 0xf0) | (LAI[1] & 0x0f)
MNC = ((LAI[2] & 0x0f) << 8) | (LAI[2] & 0xf0) | ((LAI[1] & 0xf0) >> 4)
LAC = LAI[3:5]
- print "[DBG] Mobile Country Code (MCC): %s " % format(int(hex(MCC),16),"x")
- print "[DBG] Mobile Country Code (MNC): %s " % format(int(hex(MNC),16),"x")
- print "[DBG] Location Area Code (LAC): %s " % b2a_hex(byteToString(LAC))
- print "[DBG] TMSI TIME: %s" % loci[9]
- print "[DBG] Location Update Status: %s" % loci[10]
+ print("[DBG] Mobile Country Code (MCC): %s " % format(int(hex(MCC),16),"x"))
+ print("[DBG] Mobile Country Code (MNC): %s " % format(int(hex(MNC),16),"x"))
+ print("[DBG] Location Area Code (LAC): %s " % b2a_hex(byteToString(LAC)))
+ print("[DBG] TMSI TIME: %s" % loci[9])
+ print("[DBG] Location Update Status: %s" % loci[10])
return loci
else:
@@ -365,20 +365,20 @@
self.select([0x7F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
plmnsel = self.select([0x6F, 0x30])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in plmnsel.keys():
+ if 'Data' in list(plmnsel.keys()):
plmnsel = plmnsel['Data']
if self.dbg:
- print "[DBG] Stored PLMN selector:\tMCC | MNC\n"
+ print("[DBG] Stored PLMN selector:\tMCC | MNC\n")
index = 0
while len(plmnsel) > 3 and index < len(plmnsel):
if plmnsel[index] == 0xFF and plmnsel[index+1] == 0xFF and plmnsel[index+2] == 0xFF:
@@ -388,9 +388,9 @@
MNC = ((plmnsel[index+2] & 0x0f) << 8) | (plmnsel[index+2] & 0xf0) | ((plmnsel[index+1] & 0xf0) >> 4)
if (MNC & 0x000f) == 0x000f:
MNC = MNC >> 4
- print "[DBG] \t\t\t\t%03x %02x" %(MCC, MNC)
+ print("[DBG] \t\t\t\t%03x %02x" %(MCC, MNC))
else:
- print "[DBG] \t\t\t\t%03x %03x" %(MCC, MNC)
+ print("[DBG] \t\t\t\t%03x %03x" %(MCC, MNC))
index +=3
return plmnsel
@@ -406,25 +406,25 @@
self.select([0x7F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
hpplmn = self.select([0x6F, 0x31])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in hpplmn.keys() and len(hpplmn['Data']) == 1:
+ if 'Data' in list(hpplmn.keys()) and len(hpplmn['Data']) == 1:
hpplmn = hpplmn['Data']
if self.dbg:
if hpplmn[0] < 9:
- print "[DBG] Higher Priority PLMN search period %s min" % hpplmn[0]
+ print("[DBG] Higher Priority PLMN search period %s min" % hpplmn[0])
else:
hpplmn_val = list(str(hpplmn[0]))
interval = (16 * int(hpplmn_val[0])) + int(hpplmn_val[1])
- print "[DBG] Higher Priority PLMN search period %s min" % interval
+ print("[DBG] Higher Priority PLMN search period %s min" % interval)
return hpplmn
else:
@@ -438,20 +438,20 @@
self.select([0x7F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
acc = self.select([0x6F, 0x78])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in acc.keys() and len(acc['Data']) == 2:
+ if 'Data' in list(acc.keys()) and len(acc['Data']) == 2:
acc = acc['Data']
if self.dbg:
- print "[DBG] Access Control Classes %s " % b2a_hex(byteToString(acc))
+ print("[DBG] Access Control Classes %s " % b2a_hex(byteToString(acc)))
return acc
else:
@@ -466,16 +466,16 @@
self.select([0x7F, 0x10])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
msisdn = self.select([0x6F, 0x40])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in msisdn.keys():
+ if 'Data' in list(msisdn.keys()):
msisdns = msisdn['Data']
if self.dbg:
@@ -486,11 +486,11 @@
TON_NPI = msisdn[rec_length + 1 : rec_length + 2][0]
npi = TON_NPI & 0x0F
ton = (TON_NPI >> 4) & 0x07
- print "[DBG] Type of number (TON): %s " % ton
- print "[DBG] Numbering plan identification (NPI): %s " % npi
+ print("[DBG] Type of number (TON): %s " % ton)
+ print("[DBG] Numbering plan identification (NPI): %s " % npi)
dialing_number = msisdn[rec_length + 2 : rec_length + len_bcd_number + 1]
- print "[DBG] Dialling Number: %s " % decode_BCD(dialing_number)[:-2]
+ print("[DBG] Dialling Number: %s " % decode_BCD(dialing_number)[:-2])
return msisdns
else:
@@ -506,16 +506,16 @@
self.select([0x7F, 0x10])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
smsp = self.select([0x6F, 0x42])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in smsp.keys():
+ if 'Data' in list(smsp.keys()):
smsps = smsp['Data']
if self.dbg:
@@ -523,7 +523,7 @@
rec_length = len(smsp) - 28
rec_len = smsp[rec_length+13]
service_center_address = decode_BCD(smsp[rec_length+15:rec_length+rec_len + 14])[:-2]
- print "[DBG] TP-Service Centre Address: %s " % service_center_address
+ print("[DBG] TP-Service Centre Address: %s " % service_center_address)
return smsps
else:
@@ -537,20 +537,20 @@
self.select([0x7F, 0x20])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
fplmn = self.select([0x6F, 0x7b])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in fplmn.keys() and len(fplmn['Data']) == 12:
+ if 'Data' in list(fplmn.keys()) and len(fplmn['Data']) == 12:
fplmn = fplmn['Data']
if self.dbg:
- print "[DBG] Stored FPLMN selector:\tMCC | MNC\n"
+ print("[DBG] Stored FPLMN selector:\tMCC | MNC\n")
index = 0
while len(fplmn) > 3 and index < len(fplmn):
if fplmn[index] == 0xFF and fplmn[index+1] == 0xFF and fplmn[index+2] == 0xFF:
@@ -560,9 +560,9 @@
MNC = ((fplmn[index+2] & 0x0f) << 8) | (fplmn[index+2] & 0xf0) | ((fplmn[index+1] & 0xf0) >> 4)
if (MNC & 0x000f) == 0x000f:
MNC = MNC >> 4
- print "[DBG] \t\t\t\t%03x %02x" %(MCC, MNC)
+ print("[DBG] \t\t\t\t%03x %02x" %(MCC, MNC))
else:
- print "[DBG] \t\t\t\t%03x %03x" %(MCC, MNC)
+ print("[DBG] \t\t\t\t%03x %03x" %(MCC, MNC))
index +=3
@@ -578,14 +578,14 @@
iccid = self.select([0x2F, 0xE2])
if self.coms()[2] != (0x90, 0x00):
if self.dbg:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
- if 'Data' in iccid.keys() and len(iccid['Data']) == 10:
+ if 'Data' in list(iccid.keys()) and len(iccid['Data']) == 10:
iccid = iccid['Data']
if self.dbg:
- print "[DBG] identification (ICCID): %s" % decode_BCD(iccid)
+ print("[DBG] identification (ICCID): %s" % decode_BCD(iccid))
return iccid
else:
--
To view, visit https://gerrit.osmocom.org/c/osmo-sim-auth/+/20903
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-sim-auth
Gerrit-Branch: master
Gerrit-Change-Id: I1f972e308e14dbdbfc85892685682220a89f77fe
Gerrit-Change-Number: 20903
Gerrit-PatchSet: 1
Gerrit-Owner: Ludovic Rousseau <ludovic.rousseau+osmocom at free.fr>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201025/ca9e57b1/attachment.htm>