Séparation fichiers .py && Màj README.md
This commit is contained in:
parent
153c5a6535
commit
e412c45486
58
README.md
58
README.md
|
@ -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]
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
|
Coucou à tous !
|
||||||
|
]
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
|
@ -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();
|
|
@ -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);
|
|
|
@ -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);
|
Loading…
Reference in New Issue