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/+/20902 )
Change subject: ICC.py: convert to Python3 using 2to3
......................................................................
ICC.py: convert to Python3 using 2to3
Change-Id: Ic182573a179d2b4a445c596c8fd87122e348f27b
---
M card/ICC.py
1 file changed, 60 insertions(+), 60 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-sim-auth refs/changes/02/20902/1
diff --git a/card/ICC.py b/card/ICC.py
index a9cfc88..4a2ba0e 100644
--- a/card/ICC.py
+++ b/card/ICC.py
@@ -179,19 +179,19 @@
check also the more complete "parseATR" tool
'''
- print '\nsmartcard reader: ', self.reader
+ print('\nsmartcard reader: ', self.reader)
if self.ATR != None:
- print "\nsmart card ATR is: %s" % toHexString(self.ATR)
- print 'ATR analysis: '
- print ATR(self.ATR).dump()
- print '\nhistorical bytes: ', \
- toHexString(ATR(self.ATR).getHistoricalBytes())
+ print("\nsmart card ATR is: %s" % toHexString(self.ATR))
+ print('ATR analysis: ')
+ print(ATR(self.ATR).dump())
+ print('\nhistorical bytes: ', \
+ toHexString(ATR(self.ATR).getHistoricalBytes()))
ATRcs = ATR(self.ATR).getChecksum()
if ATRcs :
- print 'checksum: ', "0x%X" % ATRcs
+ print('checksum: ', "0x%X" % ATRcs)
else:
- print 'no ATR checksum'
- print "\nusing pcsc_scan ATR list file: %s" % smlist_file
+ print('no ATR checksum')
+ print("\nusing pcsc_scan ATR list file: %s" % smlist_file)
if os.path.exists(smlist_file):
smlist = open(smlist_file).readlines()
ATRre = re.compile('(^3[BF]){1}.{1,}$')
@@ -205,11 +205,11 @@
ATRfinger += smlist[i+j][1:]
j += j
if ATRfinger == '' :
- print "no ATR fingerprint found in file: %s" % smlist_file
+ print("no ATR fingerprint found in file: %s" % smlist_file)
else:
- print "smartcard ATR fingerprint:\n%s" % ATRfinger
+ print("smartcard ATR fingerprint:\n%s" % ATRfinger)
else:
- print "%s file not found" % smlist_file
+ print("%s file not found" % smlist_file)
def sw_status(self, sw1, sw2):
'''
@@ -332,7 +332,7 @@
else:
data, sw1, sw2 = self.cardservice.connection.transmit(apdu)
# replaces INS code by strings when available
- if apdu[1] in self.INS_dic.keys():
+ if apdu[1] in list(self.INS_dic.keys()):
apdu_name = self.INS_dic[apdu[1]] + ' '
else:
apdu_name = ''
@@ -360,7 +360,7 @@
for i in range(start, 256):
ret = self.sr_apdu([i] + param)
if ret[2] != (0x6E, 0x00):
- print ret
+ print(ret)
clist.append(i)
return clist
@@ -380,11 +380,11 @@
ilist = []
for i in range(start, 256):
if self.dbg > 1:
- print 'DEBUG: testing %d for INS code with %d CLA code' \
- % (i, self.CLA)
+ print('DEBUG: testing %d for INS code with %d CLA code' \
+ % (i, self.CLA))
ret = self.sr_apdu([self.CLA, i, 0x00, 0x00])
if ret[2] != (0x6D, 0x00):
- print ret
+ print(ret)
ilist.append(i)
return ilist
@@ -677,10 +677,10 @@
'''
ber = BERTLV_parser( Data )
if self.dbg > 1:
- print '[DBG] BER structure:\n%s' % ber
+ print('[DBG] BER structure:\n%s' % ber)
if len(ber) > 1:
# TODO: implements recursive BER object parsing
- print '[WNG] more than 1 BER object: %s' % ber
+ print('[WNG] more than 1 BER object: %s' % ber)
# for FCP control structure, precise parsing is done
# this structure seems to be the most used for (U)SIM cards
@@ -694,15 +694,15 @@
if ber[0][0][2] == 0x4:
fil['Control'] = 'FMD'
if self.dbg:
- print '[WNG] FMD file structure parsing not implemented'
+ print('[WNG] FMD file structure parsing not implemented')
elif ber[0][0][2] == 0xF:
fil['Control'] = 'FCI'
if self.dbg:
- print '[WNG] FCI file structure parsing not implemented'
+ print('[WNG] FCI file structure parsing not implemented')
else:
fil['Control'] = ber[0][0]
if self.dbg:
- print '[WNG] unknown file structure'
+ print('[WNG] unknown file structure')
fil['Data'] = ber[0][2]
return fil
@@ -723,11 +723,11 @@
# would require to work with the BERTLV parser...
[T, L, V] = first_TLV_parser(toProcess)
if self.dbg > 2:
- if T in self.file_tags.keys():
+ if T in list(self.file_tags.keys()):
Tag = self.file_tags[T]
else:
Tag = T
- print '[DBG] %s / %s: %s' % (T, Tag, V)
+ print('[DBG] %s / %s: %s' % (T, Tag, V))
# do extra processing here
# File ID, DF name, Short file id
@@ -758,7 +758,7 @@
elif T == 0xA5:
fil = self.parse_proprietary(V, fil)
else:
- if T in self.file_tags.keys():
+ if T in list(self.file_tags.keys()):
fil[self.file_tags[T]] = V
else:
fil[T] = V
@@ -856,7 +856,7 @@
}
while len(Data) > 0:
[T, L, V] = first_TLV_parser( Data )
- if T in propr_tags.keys():
+ if T in list(propr_tags.keys()):
fil[propr_tags[T]] = V
Data = Data[L+2:]
return fil
@@ -873,7 +873,7 @@
SC = Data[1:]
sec = '#'
- if 'Type' in fil.keys():
+ if 'Type' in list(fil.keys()):
# DF parsing
if fil['Type'] == 'DF':
if AM & 0b10000000 == 0:
@@ -936,7 +936,7 @@
self.coms.push( self.READ_BINARY(Le=fil['Size']) )
if self.coms()[2] != (0x90, 0x00):
if self.dbg > 1:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return fil
fil['Data'] = self.coms()[3]
@@ -952,8 +952,8 @@
# should mean there is an issue
# somewhere in the file parsing process
if self.dbg:
- print '[WNG] error in iterating the RECORD parsing at' \
- ' iteration %s\n%s' % (i, self.coms())
+ print('[WNG] error in iterating the RECORD parsing at' \
+ ' iteration %s\n%s' % (i, self.coms()))
return fil
if self.coms()[3][1:] == len(self.coms()[3][1:]) * [255]:
# record is empty, contains padding only
@@ -1015,7 +1015,7 @@
if is_UICC and self.coms()[2][0] != 0x61 \
or not is_UICC and self.coms()[2][0] != 0x9F:
if self.dbg > 1:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
# get response and check SW:
@@ -1023,7 +1023,7 @@
self.coms.push(self.GET_RESPONSE(Le=self.coms()[2][1]))
if self.coms()[2] != (0x90, 0x00):
if self.dbg > 1:
- print '[DBG] %s' % self.coms()
+ print('[DBG] %s' % self.coms())
return None
data = self.coms()[3]
@@ -1073,10 +1073,10 @@
try:
r = self.select(MF)
except:
- print '[ERR] selecting MF failed'
+ print('[ERR] selecting MF failed')
return
if r == None:
- print '[ERR] MF not found!'
+ print('[ERR] MF not found!')
return
#if needed, select AID
@@ -1085,10 +1085,10 @@
self.get_AID()
r = self.select_by_aid(under_AID)
except:
- print '[ERR] selecting AID failed'
+ print('[ERR] selecting AID failed')
return
if r == None:
- print '[ERR] AID not found'
+ print('[ERR] AID not found')
return
# place on the DF path to bf
@@ -1097,10 +1097,10 @@
try:
path_init = self.select(path, sel_type)
except:
- print '[ERR] selecting path failed:\n%s' % self.coms()
+ print('[ERR] selecting path failed:\n%s' % self.coms())
return
if path_init == None:
- print '[ERR] path not found: %s' % path
+ print('[ERR] path not found: %s' % path)
return
# Dany'style programming
@@ -1115,8 +1115,8 @@
i, j = 0, 0
for i in range(hi_addr[0], hi_addr[1]):
if self.dbg and i%2 == 0:
- print '[DBG] addr: %s %s %s' % ([hex(v) for v in path], \
- hex(i), hex(j))
+ print('[DBG] addr: %s %s %s' % ([hex(v) for v in path], \
+ hex(i), hex(j)))
for j in range(lo_addr[0], lo_addr[1]):
# avoid MF re-selection:
if (i, j) == [0x3F, 0x00]:
@@ -1126,14 +1126,14 @@
fil = self.select([i, j], sel_type)
if fil is not None:
if self.dbg:
- print '[DBG] found file at path, id: ' \
- '%s %s' % (path, [i, j])
- if 'File Identifier' in fil.keys():
+ print('[DBG] found file at path, id: ' \
+ '%s %s' % (path, [i, j]))
+ if 'File Identifier' in list(fil.keys()):
fil['Absolut Path'] = path+fil['File Identifier']
FS.append(fil)
- if 'Type' in fil.keys() and fil['Type'] == 'DF':
+ if 'Type' in list(fil.keys()) and fil['Type'] == 'DF':
reinit()
- if 'Absolut Path' in fil.keys():
+ if 'Absolut Path' in list(fil.keys()):
DF_to_explore.append(fil['Absolut Path'])
# re-initialize at MF and return
@@ -1163,12 +1163,12 @@
# recursive method call
# DF contains absolut path
for addr in DF:
- print '[DBG] path: %s' % addr
+ print('[DBG] path: %s' % addr)
self.recu_files_bf(path=addr, under_AID=under_AID)
@staticmethod
def __write_dict(dict, fd):
- keys = dict.keys()
+ keys = list(dict.keys())
keys.sort()
fd.write('\n')
for k in keys:
@@ -1320,8 +1320,8 @@
self.AID = []
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))
#print '[DBG] EF_DIR file selection and reading...'
def parse_file(self, Data=[]):
@@ -1338,11 +1338,11 @@
fil = ISO7816.parse_file(self, Data)
# Then UICC extra attributes parsing
- if 0xC6 in fil.keys():
+ if 0xC6 in list(fil.keys()):
fil = self.parse_pin_status(fil[0xC6], fil)
del fil[0xC6]
- if 'File Identifier' in fil.keys():
+ if 'File Identifier' in list(fil.keys()):
for ref in self.files:
if fil['File Identifier'] == ref[0]:
fil['Name'] = ref[2]
@@ -1410,7 +1410,7 @@
# EF_DIR is at the MF level and contains Application ID:
EF_DIR = self.select([0x2F, 0x00], typ='pmf')
if self.dbg:
- print '[DBG] EF_DIR: %s' % EF_DIR
+ print('[DBG] EF_DIR: %s' % EF_DIR)
if EF_DIR is None:
return None
@@ -1430,22 +1430,22 @@
# get AID application code, depending on SDO...
if aid_rid == (0xA0, 0x00, 0x00, 0x00, 0x09) \
- and aid_app in self.ETSI_AID_app_code.keys():
+ and aid_app in list(self.ETSI_AID_app_code.keys()):
aid_app = self.ETSI_AID_app_code[aid_app]
if aid_rid == (0xA0, 0x00, 0x00, 0x00, 0x87) \
- and aid_app in self.GPP_AID_app_code.keys():
+ and aid_app in list(self.GPP_AID_app_code.keys()):
aid_app = self.GPP_AID_app_code[aid_app]
if aid_rid == (0xA0, 0x00, 0x00, 0x03, 0x43) \
- and aid_app in self.GPP2_AID_app_code.keys():
+ and aid_app in list(self.GPP2_AID_app_code.keys()):
aid_app = self.GPP2_AID_app_code[aid_app]
# get AID responsible SDO and country
- if aid_rid in self.AID_RID.keys(): aid_rid = self.AID_RID[aid_rid]
- if aid_country in self.AID_country_code.keys():
+ if aid_rid in list(self.AID_RID.keys()): aid_rid = self.AID_RID[aid_rid]
+ if aid_country in list(self.AID_country_code.keys()):
aid_country = self.AID_country_code[aid_country]
- print 'found [AID %s] %s || %s || %s || %s || %s' \
+ print('found [AID %s] %s || %s || %s || %s || %s' \
% (i, aid_rid, aid_app, aid_country, \
- aid_provider, tuple(aid[11:]) )
+ aid_provider, tuple(aid[11:]) ))
i += 1
def get_ICCID(self):
@@ -1459,7 +1459,7 @@
# EF_ICCID is at the MF level and contains Application ID:
EF_ICCID = self.select([0x2F, 0xE2], typ='pmf')
if self.dbg:
- print '[DBG] EF_ICCID: %s' % EF_ICCID
+ print('[DBG] EF_ICCID: %s' % EF_ICCID)
if EF_ICCID is None:
return None
return decode_BCD( EF_ICCID['Data'] )
--
To view, visit https://gerrit.osmocom.org/c/osmo-sim-auth/+/20902
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: Ic182573a179d2b4a445c596c8fd87122e348f27b
Gerrit-Change-Number: 20902
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/d75444fd/attachment.htm>