flipper-zero-tutorials/subghz/samples/genie-girud-1t/create-v2.py
2023-10-18 22:12:08 -05:00

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()