# Chemins des fichiers
file_paths = {
    "input_file": "/var/www/html/modification_carto/ori ocas pcr 2.1",
    "output_file": "/var/www/html/modification_carto/calculated_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
]

# Fonction pour calculer les bytes modifiés
def calculate_byte(original_byte, mcuid_byte):
    # Exemple de transformation : XOR suivi d'une addition
    transformed_byte = (original_byte ^ mcuid_byte + mcuid_byte) % 256
    return transformed_byte

# Appliquer la transformation aux bytes pertinents
for i, pos in enumerate(relevant_positions):
    original_byte = original_bytes[pos]
    mcuid_byte = mcuid_bytes[i % len(mcuid_bytes)]
    modified_byte = calculate_byte(original_byte, mcuid_byte)
    original_bytes[pos] = modified_byte

# Écrire le fichier de sortie
with open(file_paths["output_file"], "wb") as file:
    file.write(bytearray(original_bytes))

# Lire le fichier de sortie pour vérifier les différences
with open(file_paths["output_file"], "rb") as file:
    calculated_output_bytes = file.read()

with open("/var/www/html/modification_carto/off rocket", "rb") as file:
    off_rocket_bytes = file.read()

# Comparer les bytes aux positions pertinentes
differences = []
for pos in relevant_positions:
    calculated_output_byte = calculated_output_bytes[pos] if pos < len(calculated_output_bytes) else None
    off_rocket_byte = off_rocket_bytes[pos] if pos < len(off_rocket_bytes) else None
    if calculated_output_byte != off_rocket_byte:
        differences.append((pos, calculated_output_byte, off_rocket_byte))

# Afficher les résultats de la comparaison
print("Comparaison des fichiers aux positions pertinentes :")
for pos, calculated_output_byte, off_rocket_byte in differences:
    print(f"Position {pos}: calculated_output_off = {calculated_output_byte}, off_rocket = {off_rocket_byte}")

if not differences:
    print("Les fichiers sont identiques aux positions pertinentes.")
else:
    print(f"Nombre de différences : {len(differences)}")
