Cassage de code par "attaque de dictionnaire"

Mister fk Messages postés 2 Statut Membre -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un problème, j'essaye de faire un programme de cassage de code par "attaque de dictionnaire"

En gros : - j'ai un fichier texte crypté en entrée
- j'ai un fichier texte en sortie dans lequel j'aurais mon texte décrypté par méthode "xor" (tout cela je l'ai déjà)
-j'ai fait un générateur de clef de 3 lettres qui me retourne une clef (de 3 lettres ^^ )
mon problème est maintenant : - j'ai un fichier texte dans lequel se trouve les mots du dictionnaire(en partie, mais suffisant ... normalement) un par ligne et mon fichier texte décrypté et je doit déterminer quel clef générée me procure le décryptage le plus cohérent...

mon prototype du générateur de clef :
- unsigned char *cherche_clef(int *char1,int *char2, int *char3);
/*char1 char2 char3 sont les indices du char trouvé dans le tableau qui contient tout les caracteres acceptables pour le decryptage*/

et voila mes sous programme :

void cassage_de_code(FILE* text, FILE* xor_text)
{
int char1 = 0, char2 = 0, char3 = 0;
unsigned char clef[3];

do{
clef = cherche_clef(&char1, &char2, &char3);
cryptage(text, xor_text, clef, 3); //sous programme deja fait qui me decrypte text et me le renvoie dans xor_text

???????? [c'est ici je pense qu'il me manque des chose dont compare_dico] ??????????

}while(char1 != 80 || char2 != 80 || char3 != 80); // test si toute les clef on étaient générées
}

int compare_dico(FILE* xor_text)
{

?????

}

Merci beaucoup de votre aide je commence à péter un plomb xD
Si certaines choses ne sont pas claires vous pouvez me poser des questions =)

A voir également:

3 réponses

eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

Pas bien compris la question, faut dire que je ne connais pas le C.

Si c'est pour savoir si tu as terminé la meilleure méthode est de connaitre un mot qui doit être présent dans le texte. Mais c'est rarement le cas...

Tu peux te baser sur la fréquence des lettres en français : e 15% s 8% a i t n 7% sur un extrait de texte.
https://fr.wikipedia.org/wiki/Fr%C3%A9quence_d%27apparition_des_lettres_en_fran%C3%A7ais

Ou bien sur la fréquence des mots. Difficile d'imaginer un texte sans ' le ' ou ' la ' dedans.
Auquel tu peux éventuellement ajouter qcq mots que tu soupçonnes d'y être : des noms, prénoms
https://eduscol.education.fr/186/liste-de-frequence-lexicale

eric
0
Mister fk Messages postés 2 Statut Membre
 
Merci pour ton aide mais pour la comparaison fréquentielle (par "force brut " en c) je vais le réaliser mais plus tard pour l'instant c'est plutôt le code en c qui m'interresse car pour la méthode elle est déjà défini... :-/
Mais merci quand même =)
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Je ne parlais pas de force brute, mais d'estimer si la clé utilisée (issue du dictionnaire) fournissait un texte probablement français en se basant sur des statistiques (et donc que la clé avait des chances d'être bonne)
Mais ce n'était peut être pas ta question...

eric
0