Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 03-12-2018 12:14:28

fraxn
Membre
Inscription : 27-11-2018
Messages : 22

aide pour decryptage Enigma i

bonjour,
Le message ci-dessous a été chiffré avec une machine ENIGMA qui utilise le réflecteur B et les rotors I-II-III réglés sur
la position par défaut 1-1-1. Aucune fiche de connectée au plugboard. la position des rotors externes est inconnue, comment peut on trouver leurs position et déchiffrer le message en sachant que : sur une machine décente, avec des programmes d'attaque
en force brute en python, le message est résolu en 0,5s

voici les paramètres de la machine et le message chiffré

Reflecteur B
Rotor 1 :I - RING = 1
Rotor 2 :II - RING = 1
Rotor 3 :III - RING = 1

la position des rotors : Inconnue ???

le message chiffré
------------------------------------------------------------------------
TVDOT JZXGW YPFFQ KTAUN YJLEQ NDXKZ ALYSH WHHMI MOWBW ZHHBY KUJDD URRGO
IPUHN VFJZE PAGVM JBYYA NGHCV DIJDL MGCIP FJODL ZJFNH VGPGU RFZLV ZOWMT
ZBNXM UZZRB NSVIN FLUXZ GTZZM FPYPE RKHJG ZYYQO SLZGM CQUNS VHXDM KNLRJ
QLSJK KZNNO YBKBX FMWKB FONTM HZGTQ WJ
------------------------------------------------------------------------


voici un outil un simulateur de machine enigma qui peut aider

https://cryptii.com/pipes/enigma-decoder


merci d'avance

Hors ligne

#2 05-12-2018 17:11:18

Rossignol
Membre
Inscription : 19-06-2015
Messages : 157

Re : aide pour decryptage Enigma i

Bonjour,

On ne peut pas utiliser un simulateur en ligne pour résoudre ce genre de crypto : il faut pouvoir programmer le simulateur.

Je n'ai pas pu faire tourner le simulateur fourni par le prof  N. Ollinger dans le zip: le script nigma.py est écrit en Python 2.7 (un vieux truc).

Je préfère utiliser le module Py-Enigma.

Voir mon IPython-notebook Enigma1

@+

Hors ligne

#3 06-12-2018 20:19:32

fraxn
Membre
Inscription : 27-11-2018
Messages : 22

Re : aide pour decryptage Enigma i

Bonjour, merci bcp pour votre simulateur c'est vraiment intéréssant:
regardez ce que j'ai rajouté la mais ça compile pas :

start = time.time()
best_score = float('inf')
for r in itertools.permutations(['I', 'II', 'III'], 3):
    print('Rotors = ', r)
    for ri in itertools.permutations(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'], 3):
        print('rings = ', ri)
        machine = EnigmaMachine.from_key_sheet(
        rotors = r,
        reflector = 'B',
        ring_settings = ri,
        plugboard_settings = '')
        for init in itertools.permutations('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 3):
            machine.set_display(init)      # position initiale des rotors
            txt = machine.process_text(k3)
            score = logscore(txt)
            if score < best_score:
                best_score = score
                print(best_score, init)
                print(txt)
delta = int(time.time()-start)
print('----- termine en ',delta//60, 'min', delta%60, 'sec')

Hors ligne

#4 08-12-2018 10:06:12

fraxn
Membre
Inscription : 27-11-2018
Messages : 22

Re : aide pour decryptage Enigma i

voila le journal:

('Rings = ', ('A', 'B', 'C'))
('Rotors = ', ('I', 'II', 'III'))
Traceback (most recent call last):
  File "attack.py", line 45, in <module>
    plugboard_settings = '')
  File "/usr/local/lib/python2.7/dist-packages/enigma/machine.py", line 111, in from_key_sheet
    rotor_list = [create_rotor(r[0], r[1]) for r in zip(rotors, ring_settings)]
  File "/usr/local/lib/python2.7/dist-packages/enigma/rotors/factory.py", line 17, in create_rotor
    return Rotor(model, data['wiring'], ring_setting, data['stepping'])
  File "/usr/local/lib/python2.7/dist-packages/enigma/rotors/rotor.py", line 117, in __init__
    raise RotorError("invalid ring_setting")
enigma.rotors.RotorError: invalid ring_setting

Hors ligne

#5 09-12-2018 08:48:14

Rossignol
Membre
Inscription : 19-06-2015
Messages : 157

Re : aide pour decryptage Enigma i

Le message d'erreur est clair : le format du ring_setting est mauvais. Il faut regarder la doc du module.
D'autre part, il est inutile de faire varier l'index du rotor 3 : ce rotor n'entraine aucun rotor car il n'y a pas de rotor 4 ! 
On peut faire :

start = time.time()
best_score = float('inf')
for r in itertools.permutations(['I', 'II', 'III'], 3):
    print('Rotors = ', r)
    for ri in itertools.permutations('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 2):
        ri = 'A '+' '.join(ri)
        print('rings = ', ri)
        machine = EnigmaMachine.from_key_sheet(
        rotors = r,
        reflector = 'B',
        ring_settings = ri,
        plugboard_settings = '')
        for init in itertools.permutations('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 3):
            machine.set_display(init)      # position initiale des rotors
            txt = machine.process_text(k3)
            score = logscore(txt)
            if score < best_score:
                best_score = score
                print(best_score, init)
                print(txt)
delta = int(time.time()-start)
print('----- termine en ',delta//60, 'min', delta%60, 'sec')

Je vous conseille de trouver d'abord l'ordre des rotors comme pour l'échauffement #2.
Ensuite, vous fixez cet ordre dans votre programme. Le work factor est alors de $26^5 = 11881376$.
Ça prend déjà "un certain temps", vous allez voir.

À noter que le message du défi #1 est brouillé au début. Mais le token tout à la fin est bien lisible !

@+

Hors ligne

#6 09-12-2018 12:21:12

fraxn
Membre
Inscription : 27-11-2018
Messages : 22

Re : aide pour decryptage Enigma i

Ah Ouiii bien vu! j'ai bien remarqué une partie de texte clair mais j'avais pas pensé a fixer la position du premier ring ! franchement merci,
j'ai bien trouvé le token du Défi 1!


Défi #2 : Voici enfin un défi plus costaud à déchiffrer ! Il a été
chiffré par une machine ENIGMA à l'aide de trois rotors parmi I, II, III
Le réflecteur est le réflecteur B. Il y a 5 fiches dans le plugboard.

k= 'UIHSE AVZYB KVMYS LGHLW BJHKM TPSLW BOEDR VYFQO FWKZA TEKOZ MSVLX BUKQX
BAXNM DDFFJ XFQCP WQHAH HNGXX ZIVAC NRCKK VIQUF VLXXS UJYTE HCKXT EYSAV
PNCOV MPZWX DHXEO MXCGG GIHPS VVQZM DWFCW ATJWP BBWBO YXEKW QPNIU MNWJE
ULQVU HOPGL IBVVF GMXQH WTXGB EETYK AECWM VIABT QCHTW XAXHA ARARE OUAXY
MBLAJ KYFFQ QXRPF WNNGU VVDJL QJTOP WTCRY JZSZL ULIXC QFXSF KBHPS '

j'ai pas vraiment trouvé une idée pour commencer l'injection du plugboard, est ce que vous en avez une ?

Dernière modification par fraxn (09-12-2018 12:22:43)

Hors ligne

#7 Aujourd'hui 11:08:11

vigevénère
Membre
Inscription : Aujourd'hui
Messages : 5

Re : aide pour decryptage Enigma i

Afin d'optimiser un peu tout ça, il n'est pas possible de faire un peu de multiprocessing ?

est ce que ça vaut le coup ? J'ai tenté les thread mais ça ralenti le calcul... par contre le multiprocess...

Un avis ?

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quatre-vingt plus vingt et un
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums