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
### 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)
# Utilisation
### Initialiser
### Initialisation
######Se positionner dans le dossier __enigmail/__.
```bash
cd enigmail/
cd chemin/enigmail/
```
######Créer un __alias__ pour l'utilisation d'enigmail.
```bash
@ -41,22 +23,46 @@ alias enigmail="sh $(pwd)/enigmail.sh"
enigmail config
```
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
```bash
enigmail write
```
######Modifier les paramètres
```bash
enigmail config
```
######Réinitialiser les paramètres
```bash
enigmail init
```
######Lire
```bash
enigmail read
```
######Crypter+Envoyer par mail/Crypter seulement/Décrypter seulement
######Effacer
```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
4. Gestion de serveur SMTP [FAIT~50]
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
# ouvre en lecture le bucket file
'read') echo "\n======================================="; cat "$path/bucket-file"; echo "\n=======================================";;
'encode') python "$path/source/interface.py" encode;;
'decode') python "$path/source/interface.py" decode;;
'send') python "$path/source/interface.py" send;;
'encode') python "$path/source/encode.py";;
'decode') python "$path/source/decode.py";;
'send') python "$path/source/send.py";;
*) echo "Erreur";
esac;
else
python "$path/source/interface.py";
echo "Parametre manquant: enigmail help";
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