GACB (Genetic Algorithm for Code Breaking) est un petit projet réalisé afin de mettre en pratique des connaissances apprises en cours d'IA: les algorithmes génétiques. Une application possible de ces algorithmes est le cassage de code simple. C'est ce que j'ai choisit.
GACB a donc pour but de casser un chiffrement simple (chiffrement par substitution polyalphabétique).
Pour cela, il faut pouvoir évaluer les différentes tentatives de déchiffrement, et fusionner les meilleurs solutions. Pour cette évaluation, j'utilise une analyse fréquentielle ainsi qu'une recherche de mot courant.
Algorithme:
* Création d'une population (des clefs) aléatoire
* Boucle
{
- Evaluation des solutions
- Mémorisation de la meilleur solution
- Si la meilleur solution est inchangée depuis plusieurs génération,
-> fin de la boucle
- Choix aléatoire pondérée de reproducteur,
- Fusion des clefs choisies pour créer la génération suivante
- Quelques mutations sur les clefs générées
}
Outils:
J'ai codé plusieurs petit outils pour accompagner GACB. Ils fournissent une interface simple pour une utilisation en ligne de commandes des fonctions nécessaires à l'application finale.
* frequency
* cipher
* decipher
* eval
Utilisation:
cat test.txt | ./case lower | ./cipher abcdefghijklmnopqrstuvwxyz0123456789 hello42 | ./gacb debug
Download:
Version alpha (10 Avril 2011)
-> sources