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 Python : Sélectionner tout - Visualiser dans une fenêtre à part
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)