Intrinsèquement chaque élément qui constitue le brouilleur a été écrit et testé dans les démonstrateurs précédents. Maintenant il va falloir commencer à mettre en cascade trois Rotors parmi les cinq sur la machine virtuelle. Pour le moment on ne va que vérifier les quatre rotors qui sont logés en EEPROM avec la nouvelle approche. Toutefois lors de l’initialisation, le nouveau démonstrateur P09_Mise en place_des_Rotors.ino se charge également de placer dans l’ordre en virtuel les trois rotors précisés en initialisation de la machine. Pour conserver les facilités apportées par les paramétrages utilisés lors des manipulations précédentes, P9 est directement construit à partir de P8 et pour le cryptage ne prend en charge que le Rotor de Droite. En principe on suppose ici que vous avez téléversé et activé P00C dans le chapitre précédent.
Installer le Rotor II indexé en A-1 à Droite et tester en sens Direct.
Exactement comme pour P8 les paramètres en tête de listage sont prévus pour commencer cette vérification directement sans avoir à le modifier. Il est temps d’aller ouvrir dans le dossier <Documents> joint à ce didacticiel le fichier FICHES.pdf et éventuellement imprimer les fiches au format A5 qu’il contient. Ces dernières étant éventuellement plastifiées et découpée, c’est la Fiche n°2 et la Fiche n°3 qu’il faut avoir sous la main pour valider le Rotor II.
MANIPULATIONS :
01) Téléverser P09_Mise en place_des_Rotors.ino et activer le Moniteur de l’IDE.
02) Frapper un « er » pour initialiser les Rotors.
03) Indiquer ‘4‘, ‘3‘, ‘2‘, ‘1‘, ‘1‘, ‘1‘, ‘a‘, ‘a‘, ‘a‘, et enfin ‘b‘ pour le Réflecteur.
04) Proposer ensuite ‘s‘ suivi de ‘o‘ pour enregistrer cette configuration en EEPROM.
05) Passer en mode CRYPTAGE avec ‘&‘.
06) Tester dans l’ordre toutes les lettres de l’alphabet : ‘a‘, ‘b‘, ‘c‘ … ‘x‘, ‘y‘, ‘z‘ pour vérifier qu’en sortie du chiffrage on obtient bien les permutations prévues dans le tableau du haut de la Fiche n°2.
07) Revenir au mode COMMANDE avec ‘&‘.
08) Proposer ‘t‘ pour imposer le mode TEXTE.
09) Retourner en CRYPTAGE avec ‘&‘.
10) Proposer la chaîne des 26 lettres « abcdefghijklmnopqrstuvwxyz« .
Installer le Rotor II indexé en A-1 à Droite et tester en sens Réfléchi.
Copiant impunément sur les exercices du chapitre précédent, pour tester le sens Réfléchi il suffit de refaire les même manipulation, mais d’avoir au préalable modifié comme montré sur la Fig.78 les déclarations en tête de P09.
MANIPULATIONS : (Suite)
11) Activer le Moniteur de l’IDE.
12) Tester dans l’ordre toutes les lettres de l’alphabet : ‘a‘, ‘b‘, ‘c‘ … ‘x‘, ‘y‘, ‘z‘ pour vérifier qu’en sortie
du chiffrage on obtient bien les permutations prévues dans le tableau du bas de la Fiche n°2.
13) Reprendre le mode COMMANDE avec ‘&‘.
14) Imposer ‘t‘ pour valider l’option TEXTE.
15) Reprendre le CRYPTAGE avec ‘&‘.
16) « Copier / Coller » la chaîne des 26 lettres « abcdefghijklmnopqrstuvwxyz« .
Installer le Rotor III indexé en A-1 à Droite et tester en sens Direct.
Sans que ce ne soit obligatoire, je vous propose en fin de ce chapitre de tester entièrement les Rotors logés en EEPROM, et ce dans les deux sens d’utilisation. Si ces exercices assez répétitif il faut bien l’avouer « vous barbent », n’hésitez-pas à passer directement au chapitre 18. Comme on va commencer par tester les trois autres Rotors dans le sens Direct, il faut revenir à l’état initial de P9 dont la Fig.79 en rappelle la combinatoire logique des paramètres. La Fiche n°3 en main on peut passer à la vérification du Rotor III que l’on doit placer à Droite sur la machine.
MANIPULATIONS : (Suite)
17) Téléverser P9 modifié conformément à la Fig.79 et activer le Moniteur de l’IDE.
18) Frapper un « er » pour initialiser les Rotors.
19) Indiquer ‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘1‘, ‘1‘, ‘a‘, ‘a‘, ‘a‘, et enfin ‘c‘ pour le Réflecteur.
20) Proposer ensuite ‘s‘ suivi de ‘o‘ pour enregistrer cette configuration en EEPROM.
21) Passer en mode CRYPTAGE avec ‘&‘.
22) Tester dans l’ordre toutes les lettres de l’alphabet : ‘a‘, ‘b‘, ‘c‘ … ‘x‘, ‘y‘, ‘z‘ pour vérifier qu’en sortie du chiffrage on obtient bien les combinaisons prévues dans le tableau du haut de la Fiche n°3.
Installer le Rotor IV indexé en A-1 à Droite et tester en sens Direct.
23) Revenir en mode COMMANDES avec ‘&‘.
24) Consigner un « er » pour initialiser les Rotors.
25) Proposer ‘2‘, ‘3‘, ‘4‘, ‘1‘, ‘1‘, ‘1‘, ‘a‘, ‘a‘, ‘a‘, et enfin ‘c’ pour le Réflecteur.
26) Reprendre le mode CRYPTAGE avec ‘&‘.
27) Manipuler dans l’ordre toutes les lettres de l’alphabet : ‘a‘, ‘b‘, ‘c‘ … ‘x‘, ‘y‘, ‘z‘ pour vérifier qu’en sortie du codage on obtient bien les résultats prévues dans le tableau du haut de la Fiche n°4.
Installer le Rotor V indexé en A-1 à Droite et tester en sens Direct.
Travail routinier … vous étiez prévenus. Du reste dans les manipulations on a bien un sentiment de Copier/Coller ». C’est incontournable, si l’on veut un jeu d’essais complet. Vous pouvez en faire l’impasse, en espérant que mes vérifications seront totales et vraiment valides. Pour ma part je suis obligé de tout valider dix fois plutôt qu’une, car, lorsque l’on va chaîner tous les éléments, si en sortie le résultat n’est pas correct, la combinatoire des erreurs possibles sera explosive. La rigueur et la méthode sont plus que jamais indispensables.
28) Repasser en mode COMMANDES avec ‘&‘.
29) Réitérer « er » pour initialiser les Rotors.
30) Proposer ‘3‘, ‘4‘, ‘5‘, ‘1‘, ‘1‘, ‘1‘, ‘a‘, ‘a‘, ‘a‘ suivi de ‘b‘ pour le Réflecteur.
31) Adopter à nouveau le CRYPTAGE avec ‘&‘.
32) Transmettre dans l’ordre toutes les lettres de l’alphabet : ‘a‘, ‘b‘, ‘c‘ … ‘x‘, ‘y‘, ‘z‘ pour vérifier qu’en éclairage des ampoules virtuelles on a bien les lettres prévues dans le tableau du haut de la Fiche n°5.
Installer le Rotor III indexé en A-1 à Droite et tester en sens Réfléchi.
33) Téléverser P9 modifié conformément à la Fig.78 et activer le Moniteur de l’IDE.
34) Imposer « er » pour initialiser une fois de plus les Rotors.
35) Indiquer ‘1‘, ‘2‘, ‘3‘, ‘1‘, ‘1‘, ‘1‘, ‘a‘, ‘a‘, ‘a‘ puis ‘b‘ pour le Réflecteur.
36) Passer en CRYPTAGE avec ‘&‘.
37) Transmettre dans l’ordre toutes les lettres de l’alphabet : ‘a‘, ‘b‘, ‘c‘ … ‘x‘, ‘y‘, ‘z‘ pour vérifier qu’en permutations on obtient bien les données prévues dans le tableau du bas de la Fiche n°3.
Installer le Rotor IV indexé en A-1 à Droite et tester en sens Réfléchi.
MANIPULATIONS : (Suite)
38) Revenir en mode COMMANDES avec ‘&‘.
39) Frapper « er » pour initialiser les Rotors.
40) Indiquer ‘2‘, ‘3‘, ‘4‘, ‘1‘, ‘1‘, ‘1‘, ‘a‘, ‘a‘, ‘a‘, et enfin ‘b‘ pour le Réflecteur.
41) Reprendre le mode CRYPTAGE avec ‘&‘.
42) Taper dans l’ordre toutes les lettres de l’alphabet : ‘a‘, ‘b‘, ‘c‘ … ‘x‘, ‘y‘, ‘z‘ pour vérifier qu’en sortie du chiffrage on obtient bien le cryptage prévu dans le tableau du bas de la Fiche n°4.
43) Retrouver le mode COMMANDES avec ‘&‘.
Installer le Rotor V indexé en A-1 à Droite et tester en sens Réfléchi.
44) Imposer « er » pour initialiser une « dernière » fois les Rotors.
45) Indiquer ‘3‘, ‘4‘, ‘5‘,’1‘, ‘1‘, ‘1‘, ‘a‘, ‘a‘, ‘a‘ et ‘b’ pour finir.
46) Passer en CRYPTAGE avec ‘&‘.
47) Proposer dans l’ordre toutes les lettres de l’alphabet : ‘a‘, ‘b‘, ‘c‘ … ‘x‘, ‘y‘, ‘z‘ pour vérifier qu’en sortie de la machine on obtient bien le codage prévu dans le tableau du bas de la Fiche n°5.
48) Par discipline repasser en COMMANDES avec ‘&‘.
49) Pour être complet donner ‘t‘ pour valider l’option TEXTE suivi de ‘&‘.
48) Enfin « Copier / Coller » la chaîne des 26 lettres « abcdefghijklmnopqrstuvwxyz« .
48) Sortir du chiffrage avec ‘&‘.
Ce dernier test de validation s’achève sur le résultat dont la Fig.80 montre une copie d’écran partielle. C’est fait, notre magasin contient tous les éléments d’Énigma dont nous aurons besoin, et ils sont « certifiés conformes ». En principe, sauf catastrophe imprévue, en principe le contenu de l’EEPROM est désormais figé. Il est détaillé dans la Fiche n°10 pour le bas de la mémoire, c’est à dire les textes du dialogue H/M et dans la Fiche n°11 pour le haut contenant les Rotors et les deux Réflecteurs.
U
n bilan sur l’évolution du programme.
Avec l’émulation des cinq Rotors, leur Indexation et la procédure de Rotation de celui qui sera placé à Droite, on a franchi une étape qui est loin d’être dérisoire. La mise en place des trois Rotors avec leur Indexation ainsi que la Rotation systématique de l’élément de droite fait passer le programme de 9740 octets soit 31 % de l’espace réservé au programme occupé à 10206 octets soit 33% de consommation de place. L’augmentation de température sur le thermomètre fictif reste assez dérisoire et l’on ne peut qu’envisager l’avenir avec sérénité. Il est certainement probable qu’au final il restera une bonne partie de la zone réservée au code inutilisée. Il serait-donc possible de se laisser glisser vers la facilité. C’est totalement contraire à l’approche que l’on s’est fixé dans ces lignes. Aussi, bien que ce ne soit certainement pas vraiment nécessaire, nous allons continuer à optimiser à outrance le code ne serait-ce que pour « faire de la belle ouvrage ». Pour clore ce chapitre, le filtrage en initialisation n’a pas tenu compte du fait que l’opérateur peut actuellement mettre en place deux fois ou trois fois le même Rotor. Sur la codeuse réelle ce n’était naturellement pas possible. Aussi, dans notre contexte virtuel il va falloir absolument parer ce type d’erreur de logique ce qui va induire encore du dialogue H/M et plus de code objet. C’est là que l’on sera content d’avoir optimisé notre C++ à tous les niveaux.
La suite est ici.