diff --git a/README.md b/README.md index 668211f..7064c43 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ version de développement si compilez le programme vous-même): Il vous suffit de taper (en tant qu'administrateur) les commandes suivantes pour installer le nécessaire: - # apt-get install libglib-2.0-dev + # apt-get install libglib-2.0-dev ### 2.2. Sur un système Apple MacOS X (>= 10.3) @@ -41,7 +41,7 @@ Il est nécessaire d'avoir installé les autotools (automake, autoconf...) dans leur dernière version. À partir de là, il suffit de taper les commandes suivantes dans un terminal : - # sudo fink install glib2-dev + # sudo fink install glib2-dev ### 2.3. Sur un système Microsoft Windows @@ -56,7 +56,7 @@ Vous pouvez télécharger la version la plus récente du projet sur le depôt Gi Afin d'obtenir les sources, il vous suffit d'avoir Git installé sur votre système et de taper la commande suivante : - $ git clone https://github.com/glenux/cryptaffinity.git + $ git clone https://github.com/glenux/cryptaffinity.git ## 4. Utiliser CryptAffinity @@ -66,18 +66,18 @@ Afin d'obtenir les sources, il vous suffit d'avoir Git installé sur votre syst Si vous avez téléchargé une archive, commencez par la decompressez : - $ tar -xzvf CryptAffinity-0.2.tar.gz + $ tar -xzvf CryptAffinity-0.2.tar.gz Rendez vous ensuite dans le dossier qui vient d'etre crée lors de la decompression. - $ cd CryptAffinity-0.2 + $ cd CryptAffinity-0.2 Puis lancez l'auto-configuration du logiciel, puis la compilation. - $ ./autogen - $ ./configure - $ make + $ ./autogen + $ ./configure + $ make Le programme sous forme binaire se trouvera alors dans le sous-dossier src/tools/, sous le nom break_affinity @@ -93,26 +93,26 @@ Usage: break_affinity -a -e -f -p -t Ou les parametres sont les suivants: &nbs p_place_holder; --a, --alphabet +**-a**, **--alphabet** __ : Fichier contenant les lettres de l'alphabet, dans l'ordre. --e, --epsilon +**-e**, **--epsilon** __ : Tolerance pour le test des clefs. --f, --frequencies +**-f**, **--frequencies** __ : Proportion moyenne que représentent les 9 lettres "prioritaires" dans le texte clair. --k, --keylength +**-k**, **--keylength** __ : Taille de la clef maximum (obsolète) --p, --priorities +**-p**, **--priorities** __ : Lettres ordonnées par fréquence décroissante d'apparition dans le texte clair. --t, --text +**-t**, **--text** __ : Fichier contenant le texte chiffre. --m, --mode +**-m**, **--mode** __ : Sélection du mode "Affine" ou "Vigenere" @@ -128,60 +128,58 @@ doc/html de l'application, ou en suivant [ce lien](html/index.html). On génère l'espace des clefs possibles pour l'alphabet donne en entrée: - int alpha_size; //taille de l'alphabet - std::list orb; // nombre premiers avec alpha_size - MathTools mt; // bibliotheque d'outils mathematiques - std::list keyList; - std::list::iterator orbIt; - - for (i=1; i orb; // nombre premiers avec alpha_size + MathTools mt; // bibliotheque d'outils mathematiques + std::list keyList; + std::list::iterator orbIt; + + for (i=1; i::iterator kLIt; - - for (kLIt = keyList.begin(); kLIt != keyList.end(); kLIt++){ - float score = 0; - printf("Trying key %s\n", (*kLIt).toString().c_str()); - - plainText = codec.decode(cypherText, *kLIt); - plainText.setAlphabet(this->_config.getAlphabet()); - - for (int i=0; i<9; i++){ - score += plainText.getCountOf(prio_conf[i]); - } - - score = score / plainText.size(); - - if (fabs(score - frequencies) < epsilon){ - printf("KEY = - %s\n",(*kLIt).toString().c_str()); - - printf("PLAIN TEXT(%f) = %s\n", fabs - (score-frequencies), - - plainText.toAlphabet().c_str()); - } - } - + float frequencies; // frequence cumulee des 9 lettres les + plus presentes + float epsilon; // marge d'erreur + std::list::iterator kLIt; + + for (kLIt = keyList.begin(); kLIt != keyList.end(); kLIt++){ + float score = 0; + printf("Trying key %s\n", (*kLIt).toString().c_str()); + + plainText = codec.decode(cypherText, *kLIt); + plainText.setAlphabet(this->_config.getAlphabet()); + + for (int i=0; i<9; i++){ + score += plainText.getCountOf(prio_conf[i]); + } + + score = score / plainText.size(); + + if (fabs(score - frequencies) < epsilon){ + printf("KEY = %s\n",(*kLIt).toString().c_str()); + + printf("PLAIN TEXT(%f) = %s\n", fabs(score-frequencies), + + plainText.toAlphabet().c_str()); + } + } + ### 5.3. Principe du "decodeur Vigenere"