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!}