Aide pour convertir script python linux utilisation windev
Bonjour,
Après plusieurs heures de recherches et tests je ne comprends pas comment je peux convertir ou utiliser ce script python utilisé à la base sous linux dans mon application windev...
voila à la base ce script est utilisé pour générer 16 codes a partir d'un id....
exemple d'utilisation sous linux : sudo python /script_id.py 567d835a
12ZA3432
56FD4536
563YU789
............
sur windev je souhaiterais executer le script en me servant d'un champs de saisi pour le "567d835a"
et me donner le résultat dans un autre champs de saisi...
Si quelqu'un à du temps à me consacrer ce serait super.
Merci d'avance car je galère beaucoup et j'ai plus de 800 id à faire avec ce script sous linux alors sur windev j'espère automatisé la chose.....
Ci-dessous le code en py
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| --------------------------------------------------------------------------------------------------------------------------------------
import binascii, re, struct, sys
idre = re.compile('^[0-9a-f]{8}$', re.IGNORECASE)
nums = [2, 3, 73, 1103, 2017, 560381651, 12868356821]
def pseudo_crc48(crc, data):
POLY = 0x42f0e1eba9ea3693
MSB = 0x800000000000
TRIM = 0xffffffffffff
for x in data:
crc = crc ^ (x << 40)
for k in range(0, 8):
if crc & MSB:
crc = (crc << 1) ^ POLY
else:
crc = crc << 1
crc = crc & TRIM
return crc
def calc_key(id, sector):
if sector == 0:
return format(magic_nums[2] * magic_nums[4] * magic_nums[5], '012x')
if idre.match(id) is None:
raise ValueError('invalid ID (four hex bytes)')
if sector < 0 or sector > 15:
raise ValueError('invalid sector (0-15)')
PRE = magic_nums[0] * magic_nums[0] * magic_nums[1] * magic_nums[3] * magic_nums[6]
ints = [ord(a) for a in id.decode('hex')] + [sector]
key = pseudo_crc48(PRE, ints)
return binascii.hexlify(struct.pack('<Q', key))[0:12]
if __name__ == '__main__':
if len(sys.argv) > 1:
keysa = []
for sector in range(0, 16):
keysa.append(calc_key(sys.argv[1], sector))
if len(sys.argv) > 2 and sys.argv[2] == '-bin':
print ('0'*20+'\n'+('0'*32+'\n')*3).join(keysa).join([(sys.argv[1]+'0'*24+'\n')+(('0'*32+'\n')*2), '0'*20])
else:
print '\n'.join(keysa) |