57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
|
import sys
|
||
|
|
||
|
def int_to_bytes(x, r):
|
||
|
return [(x >> i*8) & 0xff for i in range(r-1, -1, -1)]
|
||
|
|
||
|
def main():
|
||
|
major = 2
|
||
|
minor = 4
|
||
|
|
||
|
counter = 0
|
||
|
counter_max = 0
|
||
|
|
||
|
with open('keys.txt', 'r') as fkeys:
|
||
|
|
||
|
while True:
|
||
|
line = fkeys.readline()
|
||
|
if not line:
|
||
|
break
|
||
|
split = line.split(sep=",")
|
||
|
if (len(split) == 2):
|
||
|
line = split[1]
|
||
|
line = line.strip(" \n\r")
|
||
|
high = line[0:8]
|
||
|
low = line[8:16]
|
||
|
high_int = int(high, 16)
|
||
|
low_int = int(low, 16)
|
||
|
|
||
|
print(f"line: {line} {high} {low}")
|
||
|
|
||
|
try:
|
||
|
with open(f'{low}.gne', 'rb') as fin:
|
||
|
fin.close()
|
||
|
except:
|
||
|
with open(f'{low}.gne', 'wb') as fout:
|
||
|
fout.write(bytes([0x47, 0x2A]))
|
||
|
fout.write(bytes([major, minor]))
|
||
|
fout.write(bytes(int_to_bytes(low_int, 4)))
|
||
|
fout.write(bytes([0,0,0,0,0,0,0,0]))
|
||
|
for i in range(65536):
|
||
|
fout.write(bytes([0,0,0,0]))
|
||
|
fout.flush()
|
||
|
fout.close()
|
||
|
print ('created file')
|
||
|
pass
|
||
|
|
||
|
with open(f'{low}.gne', 'r+b') as fout:
|
||
|
fout.seek(16+((counter&0xFFFF)*4))
|
||
|
fout.write(bytes(int_to_bytes(high_int, 4)))
|
||
|
counter = counter + 1
|
||
|
fout.seek(10)
|
||
|
counter_max = max(counter&0xFFFF, counter_max)
|
||
|
fout.write(bytes(int_to_bytes(counter_max,2)))
|
||
|
fout.seek(16+(65536*4))
|
||
|
fout.flush()
|
||
|
fout.close()
|
||
|
|
||
|
main()
|