# Chemins des fichiers
file_paths = {
    "input_file": "/var/www/html/modification_carto/ori ocas pcr 2.1",
    "output_file": "/var/www/html/modification_carto/output_off"
}

# Lire le contenu du fichier d'entrée
with open(file_paths["input_file"], "rb") as file:
    original_bytes = list(file.read())

# MCUID en bytes
mcuid_bytes = bytes.fromhex("410482850C80A82F830600102417E000")

# Positions pertinentes des bytes à modifier
relevant_positions = [
    1388869, 1397894, 1397895, 1397896, 1397897, 1397898, 1397899,
    1402550, 1402551, 2073408, 2073409, 2073410, 2073412, 2073413, 2073414,
    2073415, 2073416, 2073417, 2073418, 2073419, 2073420, 2073421, 2073422,
    2073423, 2073425, 2073426, 2073427, 2073428, 2073429, 2073430, 2073431,
    2073432, 2073434, 2073435, 2073436, 2073437, 2073438, 2073439, 2073440,
    2073441, 2073443, 2073444
]

# Appliquer la transformation
def apply_diff_then_add_mcuid(bytes_seq, mcuid_bytes, positions):
    result = bytes_seq.copy()
    for i, pos in enumerate(positions):
        mcuid_byte = mcuid_bytes[i % len(mcuid_bytes)]
        diff = bytes_seq[pos] - mcuid_byte
        result[pos] = (diff + mcuid_byte) % 256
    return result

# Transformer les bytes originaux
transformed_bytes = apply_diff_then_add_mcuid(original_bytes, mcuid_bytes, relevant_positions)

# Écrire le fichier de sortie
with open(file_paths["output_file"], "wb") as file:
    file.write(bytearray(transformed_bytes))

print("Transformation terminée. Le fichier de sortie a été généré.")
