Skip to content

Instantly share code, notes, and snippets.

@rene-d

rene-d/README.md

Created Nov 2, 2020
Embed
What would you like to do?

L'énigme de la crypte

Lien

Category : Crypto

Points : 200

Description

Une livraison de souffre doit avoir lieu 47°N 34 2°W 1 39.

Elle sera effectuée par un certain REJEWSKI. Il a reçu des instructions sur un foulard pour signaler à Evil Gouv son arrivée imminente.

Nous avons une photo du foulard, mais celle-ci n'est pas très nette et nous n'avons pas pu lire toutes les informations. Le fichier foulard.txt, est la retranscription du foulard.

Nous avons un peu avancé sur les parties illisibles :

(texte illisible 1) est deux lettres un espace deux lettres. Il pourrait y avoir un lien avec le dernier code d'accès que vous avez envoyé à Antoine Rossignol.

(texte illisible 2) a été totalement effacé et enfin (texte illisible 3) semble être deux lettres.

REJEWSKI vient d'envoyer un message (final.txt). Il faut que vous arriviez à le déchiffrer. Je vous conseille d'utiliser openssl pour RSA.

Le flag est de la forme DGSESIEE{MESSAGE} où MESSAGE correspond à la partie centrale du texte en majuscules sans espace.

Les instructions du foulard

Mission Scherbius

Chiffrez un message suivi de votre nom avec la machine de type M3 avec cette disposition :

Uniquement les impairs en ordre croissant
Ringstellung : REJ
Steckerverbindungen : (texte illisible 1)
Grundstellung : MER
(texte illisible 2): B(texte illisible 3)

Le résultat (texte) doit être ensuite chiffré avec RSA en utilisant notre clé publique avant de nous l'envoyer. Je vous rappelle notre clé publique :

Modulus (décimal):

25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216870038352484922422622979684865170307405907272815653581732377164114195025335694039872221524699156538352092782201392513118326772302632498764753996118057437198905106508696675497143847180616766425109043955104189270381382844602871223783458512671511503420521749067165952916834014926827585314522687939452292676577212513301

PublicExponent (décimal) : 65537

Solution

Etape 1: chiffrage RSA

logo RSA

On va utiliser l'outil RsaCtfTool.

C'est l'attaque Fermat (factorisation pour p et q proches) qui permet d'obtenir la clé privée:

RsaCtfTool.py --createpub -n 25195908475657893494027183240048398571429282126204032027777137836043662020707595556264018525880784406918290641249515082189298559149176184502808489120072844992687392807287776735971418347270261896375014971824691165077613379859095700097330459748808428401797429100642458691817195118746121515172654632282216870038352484922422622979684865170307405907272815653581732377164114195025335694039872221524699156538352092782201392513118326772302632498764753996118057437198905106508696675497143847180616766425109043955104189270381382844602871223783458512671511503420521749067165952916834014926827585314522687939452292676577212513301 -e 65537 > public.key

RsaCtfTool.py --publickey public.key --private > private.key

openssl rsautl -decrypt -inkey private.key -in final.txt

final.txt décrypté :

IVQDQT NHABMPSVBYYUCJIYMJBRDWXAXP  THYVCROD

Etape 2: Machine Enigma

logo Enigma

Programme

enigma.c est un programme en C pour coder/décoder Enigma (initialement écrit pour résoudre le challenge Machine Enigma).

Ou le module Python pyenigma, ou cryptii, ou dcode.fr, etc.

Observation du texte

Le texte est composé de 6 lettres, puis 26 en partie centrale et enfin, 8 lettres.

Les 6 premières lettres correspondent peut-être à une clé chiffreur (ou cillies). Ce sont trois lettres choisies par le chiffreur, transmises deux fois. Puis l'opérateur repositionne les rotors sur ces 3 lettres.

Les 8 dernières lettres, au nom de l'agent (REJEWSKI) (instructions du foulard).

Configuration

Le mode opératoire d'Enigma est décrit sur des centaines (voir milliers) de sites. Notamment sur la page Wikipedia et aussi en anglais sur cet excellent site.

Selon les indices et les instructions du foulard, on a :

  • Grundstellung (« position initiale des rotors ») : MER (foulard)
  • Ringstellung (« positionnement de l'anneau ») : REJ (foulard)
  • Walzenlage (« rotor »): I III V (foulard: Uniquement les impairs en ordre croissant)
  • Steckerverbindungen (« tableau de connexion, plugboard ») : BE AZ (deux lettres un espace deux lettres, indice)
  • Umkehrwalze (« réflecteur, reflector ») : B (non mentionné sur le foulard)

Les textes illisibles

  • texte illisible 1 = BE AZ (indice du défi crypto d'Antoine Rossignol b a:e z, et non BA EZ !)
  • texte illisible 2 = ? (certainement clé opérateur, je ne connais pas le terme allemand)
  • texte illisible 3 = B?? (certainement la clé opérateur, ou message key)

Clé opérateur (ou clé chiffreur)

On utilise le programme une première fois pour savoir la clé chiffreur:

$ ./enigma B MER-REJ I III V "BE AZ" "IVQDQT NHABMPSVBYYUCJIYMJBRDWXAXP  THYVCROD"
BFGBFG CMVEJLFJGTMORQGNFZNQMUCPQY  RYSNOOUR

La clé chiffreur est donc BFG (référence amusante et certainement non fortuite 😂).

Décodage du message

./enigma B BFG-REJ I III V "BE AZ" "NHABMPSVBYYUCJIYMJBRDWXAXP  THYVCROD"
LESSANGLOTSLONGSDESVIOLONS  WJVDLOIT

Bingo, sans aucun doute possible, le flag est LESSANGLOTSLONGSDESVIOLONS.

La signature

Curieusement, le nom est codé avec la même position initiale BFG :

./enigma B BFG-REJ I III V "BE AZ" "THYVCROD"
REJEWSKI

Ce qui ne correspond pas tout à fait aux usages d'Enigma pour un même message.

Notes

Le titre du challenge est un jeu de mot autour de « cryptage » et « Enigma ».

Le nom de la mission est inspiré par le créateur d'Enigma, Arthur Scherbius.

Marian Rejewski est un mathématicien et cryptologue polonais à l'origine du cassage du chiffrement Enigma.

Les sanglots longs des violons de l'automne est un message radio diffusé par Radio Londres le 1er juin 1944 pour annoncer le débarquement des troupes alliées.

La localisation GPS correspond à un terrain au milieu d'un triangle Vannes-Nantes-Rennes, proche du village de Fégréac. La référence reste mystérieuse (mais il n'y a peut-être aucune référence à trouver).

Flag

DGSESIEE{LESSANGLOTSLONGSDESVIOLONS}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment