1
Malbolge Chritosphe Delagarde, septembre 2000 I.U.T., Université de la Méditerrainée 2
3 Définition du Malbolge
4 Malbolge Origine du mot Il tire son nom du huitième cercle de l'enfer dans L'Enfer de Dante, le Malebolge. Cependant, la programmation reste évidente une fois les principes acquis. Origine du langage Parmi tous les langages existants, leur objectif est toujours d'être simpliste ; le Malbolge tenta de contraster, en vain. (voir fr.wikipedia.org/wiki/Malbolge ) fr.wikipedia.org/wiki/Malbolge
5 Instructions Définition du Malbolge
6 En Malbolge, il n’y a que 8 instructions. Malbolge trouve quelle instruction exécuter en prenant la valeur à [c], en lui ajoutant la valeur de c et en lui soustrayant 94 jusqu'à ce que le nombre soit inférieur à 94. Le résultat final dit à l'interpréteur ce qu'il doit faire :
7
8 Instructions Hello Word ! Définition du Malbolge
9 Un premier programme : Le traditionnel « Hello Word ! » begin 666 copy.mb M1"="04 _/CT\.SHY.# WIY>'=V M=71S 75Q;6EE85U955%-245!/3DU,2TI) M2$=&141#0D% M>7AW=G5T<W)Q<&]N;6QK:FEH9V9E9&-B86!?7EU<6UI96%=655134E%03TY- M3$M*24A'1D5$0R9?O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V] MO;V]Y+V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V] MO;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V] MO;V]O>2]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V] DO;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;T* end Attention : Cette écriture a été simplifiée dans le but de permettre une compréhension plus rapide, cependant une écriture plus rigoureuse permettrait au code de gagner en efficience et de réduire son grand nombre de lignes
10 Le programme peut donc être écrit ainsi : (=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk** Un placement dans des anneaux génériques modulo N aurait également permis d'optimiser la compilation, cependant ces notions (quoique évidentes) seront abordées dans le prochain cours.
11 Instructions Hello Word ! Opérateur OP Définition du Brainfuck
12 | A trit: ________|_0__1___2_ 0 | *D 1 | Trit 2 | Si la mémoire (*D) est entièrement composée de 1, alors le résultat est seulement le registre A avec 1s et 0s échangés. Si le A trit est à 2s, alors le résultat est la mémoire avec 1 et 2 échangés. Toutes les valeurs triviales auront 0s dans leurs « upper trits ». De ce fait tout OP aura 1s dans ses positions respectives.
13 Instructions Hello Word ! Cycles dans le chiffrement Définition du Malbolge
14 La cryptanalyse de Malbolge par Lou Scheffer mentionne six cycles différents dans le chiffrement. Ils sont listés ici : * 33 ⇒ 53 ⇒ 45 ⇒ 119 ⇒ 78 ⇒ 49 ⇒ 87 ⇒ 48 ⇒ 123 ⇒ 71 ⇒ 83 ⇒ 94 ⇒ 57 ⇒ 91 ⇒ 106 ⇒ 77 ⇒ 65 ⇒ 59 ⇒ 92 ⇒ 115 ⇒ 82 ⇒ 118 ⇒ 107 ⇒ 75 ⇒ 104 ⇒ 89 ⇒ 56 ⇒ 44 ⇒ 40 ⇒ 121 ⇒ 35 ⇒ 93 ⇒ 98 ⇒ 84 ⇒ 61 ⇒ 100 ⇒ 97 ⇒ 46 ⇒ 101 ⇒ 99 ⇒ 86 ⇒ 95 ⇒ 109 ⇒ 88 ⇒ 47 ⇒ 52 ⇒ 72 ⇒ 55 ⇒ 110 ⇒ 126 ⇒ 64 ⇒ 81 ⇒ 54 ⇒ 90 ⇒ 124 ⇒ 34 ⇒ 122 ⇒ 63 ⇒ 43 ⇒ 36 ⇒ 38 ⇒ 113 ⇒ 108 ⇒ 39 ⇒ 116 ⇒ 69 ⇒ 112 ⇒ 68 ⇒ * 37 ⇒ 103 ⇒ 117 ⇒ 111 ⇒ 120 ⇒ 58 ⇒ * 41 ⇒ 102 ⇒ 96 ⇒ 60 ⇒ 51 ⇒ * 42 ⇒ 114 ⇒ 125 ⇒ 105 ⇒ * 50 ⇒ 80 ⇒ 66 ⇒ 62 ⇒ 76 ⇒ 79 ⇒ 67 ⇒ 85 ⇒ 73 ⇒ * 70 ⇒ 74 ⇒ Ces cycles peuvent être utilisés pour créer des boucles qui font des choses différentes à chaque fois et qui deviennent finalement répétitives. Lou Scheffer a utilisé cette idée pour créer un programme Malbolge (inclus dans sa cryptanalyse sur laquelle un lien ci-dessous pointe) qui répète tout ce que l'utilisateur donne en entrée.
15 Instructions Hello Word ! Cycles dans le chiffrement Définition du Malbolge Propositions d'ajout
16 Malgré les tentatives, le malbolge reste un langage simple à utiliser et comprendre, en y mettant un peu du sien, bien entendu. Voici quelques suggestions pour le rendre plus compliqué : - Refaire la table de permutation des instructions afin d'enlever les cycles courts. - Retirer le surlignage de l'interpreteur qui permet à l'utilisateur de charger des valeurs non-ascii directement - Modifier les instructions lorsqu'elles sont traitées, pas terminées. De ce fait, les branches se modifieraient également toutes seules. - Introduire une randomisation polymorphique nilpotente permettant l'ajout sigmaré de différentes teta-valeurs
17 Préparer le prochain cours Propositions d'ajout Définition du Malbolge Instructions Hello Word ! Cycles dans le chiffrement
18 A travailler : -Commencer à voir les macro-définition du Malbolge -Voir les opérations atomiques sig N -Découvrir la Trivialité omnipotente -Réviser ce cours (contrôle en fin de séance)