404-CTF-2026

CRYPTANALYSE - Dur à CERNer

2026-09-17easy#crypto#hash#collision#sha256#python

On nous donne un programme Python qui vérifie si deux particules (en hexadécimal) produisent le même hash SHA256.

Analyse du code

def accélérateur_de_particules(particule_a: str, particule_b: str) -> bool: sha256 = hashlib.sha256() sha256.update(bytes.fromhex(particule_a)) position_particule_a = sha256.digest() sha256 = hashlib.sha256() sha256.update(bytes.fromhex(particule_b)) position_particule_b = sha256.digest() return position_particule_a == position_particule_b

Le main vérifie que les deux chaînes ne sont pas identiques :

if particule_a == particule_b: print("Une seule particule ne peut pas produire de collisions !") exit(1)

Exploitation

La comparaison porte sur les chaînes de caractères, pas sur leur valeur hexadécimale. Or bytes.fromhex() est insensible à la casse — aa et AA donnent le même octet 0xAA.

Il suffit donc d'envoyer :

  • Particule A : aa
  • Particule B : AA

Les chaînes sont différentes mais produisent le même hash SHA256 → collision validée.

Flag

404CTF{P4rt1cl35_g0_brrrrrrrrr!}