Séparation fichiers .py && Màj README.md

This commit is contained in:
xdrm-brackets 2015-05-24 14:54:46 +02:00
parent 153c5a6535
commit e412c45486
8 changed files with 161 additions and 146 deletions

View File

@ -4,33 +4,15 @@ Implémentation enigma alternative en python
##### Note: Je ne suis pas expert en cryptographie, ceci n'est qu'une ébauche ##### Note: Je ne suis pas expert en cryptographie, ceci n'est qu'une ébauche
### Paramètres internes
1. Alphabet utilisé
### Paramètres externes
1. Clé (hex ou int)
2. Fichier d'entrée
3. Encodage+mail OU encodage OU décodage
### Sortie
1. Message encodé ou décodé dans le fichier de sortie OU mail
### Points forts
1. Rapide
2. Complexe
3. Modulable
4. Appel en shell
# Utilisation (terminal linux)
### Initialisation
# Utilisation
### Initialiser
######Se positionner dans le dossier __enigmail/__. ######Se positionner dans le dossier __enigmail/__.
```bash ```bash
cd enigmail/ cd chemin/enigmail/
``` ```
######Créer un __alias__ pour l'utilisation d'enigmail. ######Créer un __alias__ pour l'utilisation d'enigmail.
```bash ```bash
@ -41,22 +23,46 @@ alias enigmail="sh $(pwd)/enigmail.sh"
enigmail config enigmail config
``` ```
Il vous faudra ensuite entrer vos paramètres en remplaçant les valeurs déjà écrites puis enregistrer le fichier Il vous faudra ensuite entrer vos paramètres en remplaçant les valeurs déjà écrites puis enregistrer le fichier
Si vous obtenez une erreur, retournez à la première étape vous n'êtes pas dans bon dossier. Si vous obtenez une erreur, retournez à la première étape vous n'êtes pas dans le bon dossier.
### Utiliser ### Utilisation
######Ecrire ######Ecrire
```bash ```bash
enigmail write enigmail write
``` ```
######Modifier les paramètres
```bash
enigmail config
```
######Réinitialiser les paramètres
```bash
enigmail init
```
######Lire ######Lire
```bash ```bash
enigmail read enigmail read
``` ```
######Crypter+Envoyer par mail/Crypter seulement/Décrypter seulement ######Effacer
```bash ```bash
enigmail enigmail del
```
######Crypter
```bash
enigmail encode
```
######Décrypter
```bash
enigmail decode
```
######Envoyer par mail
```bash
enigmail send
```
######Obtenir de l'aide
```bash
enigmail help
``` ```
@ -66,4 +72,4 @@ enigmail
3. Améliorer le cryptage car pour un même caractère n fois, on obtient un schéma répétitif 3. Améliorer le cryptage car pour un même caractère n fois, on obtient un schéma répétitif
4. Gestion de serveur SMTP [FAIT~50] 4. Gestion de serveur SMTP [FAIT~50]
5. Fichier de config [FAIT~80] 5. Fichier de config [FAIT~80]
6. Appel en shell 6. Appel en shell [FAIT]

View File

@ -1 +1,2 @@
Coucou à tous !
]

View File

@ -15,11 +15,11 @@ then # si 1 paramètre
'del') echo "">"$path/bucket-file";; # vide le bucket file 'del') echo "">"$path/bucket-file";; # vide le bucket file
# ouvre en lecture le bucket file # ouvre en lecture le bucket file
'read') echo "\n======================================="; cat "$path/bucket-file"; echo "\n=======================================";; 'read') echo "\n======================================="; cat "$path/bucket-file"; echo "\n=======================================";;
'encode') python "$path/source/interface.py" encode;; 'encode') python "$path/source/encode.py";;
'decode') python "$path/source/interface.py" decode;; 'decode') python "$path/source/decode.py";;
'send') python "$path/source/interface.py" send;; 'send') python "$path/source/send.py";;
*) echo "Erreur"; *) echo "Erreur";
esac; esac;
else else
python "$path/source/interface.py"; echo "Parametre manquant: enigmail help";
fi; fi;

49
enigmail/source/decode.py Normal file
View File

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
from enigmail import *
import getpass, sys, os
# RECUPERATION DU CHEMIN ABSOLU
path = os.path.abspath( os.path.dirname(sys.argv[0]) )
# OUVERTURE ET LECTURE DU FICHIER
inFile = open(path + '/../bucket-file', 'r');
m = inFile.read().decode('utf-8');
inFile.close();
# DEFINITION DE L'ALPHABET
SIGMA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; # maj
SIGMA += 'abcdefghijklmnopqrstuvwxyz'; # min
SIGMA += '&=+^~@%,.?!:;[](){}-_#$*/ \\"\'\n'; # ponctuation + retour charriot
SIGMA += '0123456789'; # digit
SIGMA += 'éèêàùç'; # accents
SIGMA = SIGMA.decode('utf-8');
# ALPHABET FORMATE EN LISTE
SIGMA = list(SIGMA);
# CHOIX DE LA CLE
userkey = int( raw_input('Cle (hex ou int): '), 0);
# CALCUL de LEVEL en fonction de la clé (LEVEL = nombre de rotors)
LEVEL = calcLevel(userkey, SIGMA);
# DECOMPOSITION DE LA CLE PRIMAIRE EN CLES SECONDAIRES
KEY = decomposeKey(userkey, len(SIGMA), LEVEL);
# CREATION DES ROTORS EN FONCTION DES CLES SECONDAIRES
ROTOR = [];
ROTOR.append( [] );
# on cree les rotors grace a SIGMA et aux cles recuperees
for i in range(0, LEVEL):
ROTOR.append( shuffle( SIGMA, KEY[i]) ); # on creer le rotor et le melange suivant la cle
ROTOR[0].append( ROTOR[i+1][0] ); # on enregistre la l&ettre en premiere position dans la premiere entree du rotor
M = decodeStr(m, SIGMA, ROTOR); # DECODAGE DU MESSAGE
# ECRITURE FICHIER
outFile = open(path + '/../bucket-file', 'w');
outFile.write( M.encode('utf-8') );
outFile.close();

49
enigmail/source/encode.py Normal file
View File

@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
from enigmail import *
import getpass, sys, os
# RECUPERATION DU CHEMIN ABSOLU
path = os.path.abspath( os.path.dirname(sys.argv[0]) )
# OUVERTURE ET LECTURE DU FICHIER
inFile = open(path + '/../bucket-file', 'r');
m = inFile.read().decode('utf-8');
inFile.close();
# DEFINITION DE L'ALPHABET
SIGMA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; # maj
SIGMA += 'abcdefghijklmnopqrstuvwxyz'; # min
SIGMA += '&=+^~@%,.?!:;[](){}-_#$*/ \\"\'\n'; # ponctuation + retour charriot
SIGMA += '0123456789'; # digit
SIGMA += 'éèêàùç'; # accents
SIGMA = SIGMA.decode('utf-8');
# ALPHABET FORMATE EN LISTE
SIGMA = list(SIGMA);
# CHOIX DE LA CLE
userkey = int( raw_input('Cle (hex ou int): '), 0);
# CALCUL de LEVEL en fonction de la clé (LEVEL = nombre de rotors)
LEVEL = calcLevel(userkey, SIGMA);
# DECOMPOSITION DE LA CLE PRIMAIRE EN CLES SECONDAIRES
KEY = decomposeKey(userkey, len(SIGMA), LEVEL);
# CREATION DES ROTORS EN FONCTION DES CLES SECONDAIRES
ROTOR = [];
ROTOR.append( [] );
# on cree les rotors grace a SIGMA et aux cles recuperees
for i in range(0, LEVEL):
ROTOR.append( shuffle( SIGMA, KEY[i]) ); # on creer le rotor et le melange suivant la cle
ROTOR[0].append( ROTOR[i+1][0] ); # on enregistre la l&ettre en premiere position dans la premiere entree du rotor
M = encodeStr(m, SIGMA, ROTOR); # ENCODAGE DU MESSAGE
# ECRITURE FICHIER
outFile = open(path + '/../bucket-file', 'w');
outFile.write( M.encode('utf-8') );
outFile.close();

View File

@ -1,115 +0,0 @@
# -*- coding: utf-8 -*-
from enigmail import *
import getpass, sys, os
# on teste l'existence du paramètre passé à l'appel (encode/decode/send)
if( len(sys.argv) == 2 ):
if( sys.argv[1] == 'encode' or sys.argv[1] == 'decode' or sys.argv[1] == 'send' ):
arg = sys.argv[1];
else:
print("Erreur: enigmail help");
raise SystemExit(0);
else:
print("Erreur: enigmail help");
raise SystemExit(0);
path = os.path.abspath( os.path.dirname(sys.argv[0]) );
# OUVERTURE ET LECTURE DU FICHIER
inFile = open(path + '/../bucket-file', 'r');
m = inFile.read().decode('utf-8');
inFile.close();
# DEFINITION DE L'ALPHABET
SIGMA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; # maj
SIGMA += 'abcdefghijklmnopqrstuvwxyz'; # min
SIGMA += '&=+^~@%,.?!:;[](){}-_#$*/ \\"\'\n'; # ponctuation + retour charriot
SIGMA += '0123456789'; # digit
SIGMA += 'éèêàùç'; # accents
SIGMA = SIGMA.decode('utf-8');
# ALPHABET FORMATE EN LISTE
SIGMA = list(SIGMA);
if( arg == 'encode'):
# CHOIX DE LA CLE
userkey = int( raw_input('Cle (hex ou int): '), 0);
# CALCUL de LEVEL en fonction de la clé (LEVEL = nombre de rotors)
LEVEL = calcLevel(userkey, SIGMA);
# DECOMPOSITION DE LA CLE PRIMAIRE EN CLES SECONDAIRES
KEY = decomposeKey(userkey, len(SIGMA), LEVEL);
# CREATION DES ROTORS EN FONCTION DES CLES SECONDAIRES
ROTOR = [];
ROTOR.append( [] );
# on cree les rotors grace a SIGMA et aux cles recuperees
for i in range(0, LEVEL):
ROTOR.append( shuffle( SIGMA, KEY[i]) ); # on creer le rotor et le melange suivant la cle
ROTOR[0].append( ROTOR[i+1][0] ); # on enregistre la l&ettre en premiere position dans la premiere entree du rotor
M = encodeStr(m, SIGMA, ROTOR); # ENCODAGE DU MESSAGE
# ECRITURE FICHIER
outFile = open(path + '/../bucket-file', 'w');
outFile.write( M.encode('utf-8') );
outFile.close();
elif( arg == 'decode' ):
# CHOIX DE LA CLE
userkey = int( raw_input('Cle (hex ou int): '), 0);
# CALCUL de LEVEL en fonction de la clé (LEVEL = nombre de rotors)
LEVEL = calcLevel(userkey, SIGMA);
# DECOMPOSITION DE LA CLE PRIMAIRE EN CLES SECONDAIRES
KEY = decomposeKey(userkey, len(SIGMA), LEVEL);
# CREATION DES ROTORS EN FONCTION DES CLES SECONDAIRES
ROTOR = [];
ROTOR.append( [] );
# on cree les rotors grace a SIGMA et aux cles recuperees
for i in range(0, LEVEL):
ROTOR.append( shuffle( SIGMA, KEY[i]) ); # on creer le rotor et le melange suivant la cle
ROTOR[0].append( ROTOR[i+1][0] ); # on enregistre la l&ettre en premiere position dans la premiere entree du rotor
M = decodeStr(m, SIGMA, ROTOR); # DECODAGE DU MESSAGE
# ECRITURE FICHIER
outFile = open(path + '/../bucket-file', 'w');
outFile.write( M.encode('utf-8') );
outFile.close();
elif( arg == 'send' ):
# paramètres utilisateurs
conf = getConf(path);
if( conf == False ): # si manque des paramètres
print "parametres manquants";
raise SystemExit(0);
To = str( raw_input('Destinataire : ') );
Subj = str( raw_input('Objet : ') );
Pass = str( getpass.getpass('Mot de passe : ') );
print '...';
sendMail(conf, Pass, To, Subj, m);

25
enigmail/source/send.py Normal file
View File

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from enigmail import *
import getpass, sys, os
# RECUPERATION DU CHEMIN ABSOLU
path = os.path.abspath( os.path.dirname(sys.argv[0]) );
# OUVERTURE ET LECTURE DU FICHIER
inFile = open(path + '/../bucket-file', 'r');
m = inFile.read().decode('utf-8');
inFile.close();
# paramètres utilisateurs
conf = getConf(path);
if( conf == False ): # si manque des paramètres
print "parametres manquants";
raise SystemExit(0);
To = str( raw_input('Destinataire : ') );
Subj = str( raw_input('Objet : ') );
Pass = str( getpass.getpass('Mot de passe : ') );
print '...';
sendMail(conf, Pass, To, Subj, m);

View File