import struct
import zlib
def patch():
# Размер заголовка TP-Link (обычно 128 байт для этой серии)
HEADER_SIZE = 128
with open('stock_firmware.bin', 'rb') as f_stock:
header = f_stock.read(HEADER_SIZE)
with open('tp_recovery.bin', 'rb') as f_custom:
body = f_custom.read()
# Соединяем
full_image = header + body
# Считаем контрольную сумму (CRC32), которую требует WebUI
# CRC32 считается по всему файлу, кроме самого поля CRC
# Но для многих TP-Link достаточно просто собрать файл правильно
with open('factory_final.bin', 'wb') as f_out:
f_out.write(full_image)
print("Файл factory_final.bin готов!")
if __name__ == "__main__":
patch()