Gestion config finie + niveau complexité [stable~80]

This commit is contained in:
xdrm-brackets 2015-05-24 23:05:58 +02:00
parent 3c63a646b7
commit 69e1c79cd7
10 changed files with 126 additions and 36 deletions

83
README.md~ Normal file
View File

@ -0,0 +1,83 @@
# Enigmail.py
Implémentation enigma alternative en python
##### Note: Je ne suis pas expert en cryptographie, ceci n'est qu'une ébauche
# Utilisation (terminal linux)
### Initialisation
######Se positionner dans le dossier __enigmail/__.
```bash
cd chemin/enigmail/
```
######Créer un __alias__ pour l'utilisation d'enigmail.
```bash
alias enigmail="sh $(pwd)/enigmail.sh"
```
######Entrez vos paramètres personnels
```bash
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 le bon dossier.
### Utilisation
######Ecrire
```bash
enigmail write
```
######Modifier les paramètres
```bash
enigmail config
```
######Réinitialiser les paramètres
```bash
enigmail init
```
######Lire
```bash
enigmail read
```
######Effacer le contenu
```bash
enigmail empty
```
######Crypter
```bash
enigmail encode
enigmail encode 168
enigmail encode 0x1f2e85
```
######Décrypter
```bash
enigmail decode
enigmail decode 168
enigmail decode 0x1285
```
######Envoyer par mail
```bash
enigmail send
```
######Récupérer le contenu du dernier mail
```bash
enigmail receive
```
######Obtenir de l'aide
```bash
enigmail help
```
### A faire
1. Prise en compte: accents + utf-8 [FAIT]
2. Gestion: fichiers [FAIT]
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 [FAIT]

View File

@ -1,11 +1,13 @@
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_server = smtp.gmail.com
smtp_port = 587
imap_server = imap.gmail.com
imap_port = 993
imap_server = imap.gmail.com
imap_port = 993
mail_address = test@mail.com
login = equal_mailadress_or_different_login
login = equal_mailadress_or_different_login
text_editor = nano
algorithm_complexity = 1
text_editor = nano

View File

@ -1,8 +1 @@
Chère Thalees,
J'ai toujours eu cette envie soudaine et secrète de vous communiquer
mes amitiées et mes plus sincères salutations.
Miaow !
Votre admirateur secret.
coucou

View File

@ -28,17 +28,19 @@ then # si 1 paramètre au moins
case $1 in
'help') cat "$path/source/help"|less;;
'init') # initialise le contenu du fichier de config
echo "smtp_server = smtp.gmail.com" > "$path/.config";
echo "smtp_port = 587" >> "$path/.config";
echo "smtp_server = smtp.gmail.com" > "$path/.config";
echo "smtp_port = 587" >> "$path/.config";
echo "" >> "$path/.config";
echo "imap_server = imap.gmail.com" >> "$path/.config";
echo "imap_port = 993" >> "$path/.config";
echo "imap_server = imap.gmail.com" >> "$path/.config";
echo "imap_port = 993" >> "$path/.config";
echo "" >> "$path/.config";
echo "mail_address = test@mail.com" >> "$path/.config";
echo "" >> "$path/.config";
echo "login = equal_mailadress_or_different_login" >> "$path/.config";
echo "login = equal_mailadress_or_different_login" >> "$path/.config";
echo "" >> "$path/.config";
echo "text_editor = nano" >> "$path/.config";
echo "algorithm_complexity = 1" >> "$path/.config";
echo "" >> "$path/.config";
echo "text_editor = nano" >> "$path/.config";
;;
'config')
if [ -z $param ]

View File

@ -39,7 +39,10 @@ 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, 1); # DECODAGE DU MESSAGE (dernier arg = nombre de fois)
# Récupère le niveau de complexité dans le fichier de configuration si il y est
Complexity = int( getConf(path)['algorithm_complexity'], 0 );
M = decodeStr(m, SIGMA, ROTOR, Complexity); # DECODAGE DU MESSAGE (dernier arg = nombre de fois)
# ECRITURE FICHIER
outFile = open(path + '/../bucket-file', 'w');

View File

@ -35,7 +35,10 @@ 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, 1); # ENCODAGE DU MESSAGE (dernier arg = nombre de fois)
# Récupère le niveau de complexité dans le fichier de configuration si il y est
Complexity = int( getConf(path)['algorithm_complexity'], 0 );
M = encodeStr(m, SIGMA, ROTOR, Complexity); # ENCODAGE DU MESSAGE (dernier arg = nombre de fois)
# ECRITURE FICHIER
outFile = open(path + '/../bucket-file', 'w');
outFile.write( M.encode('utf-8') );

View File

@ -25,10 +25,23 @@ def getConf(pPath):
except ValueError:
pass;
if( len(conf) >= 6 ): # si le fichier de config est bien récupéré et qu'il est complet
allPropertiesOk = False;
try:
conf['smtp_server'];
conf['smtp_port'];
conf['imap_server'];
conf['imap_port'];
conf['mail_address'];
conf['login'];
conf['algorithm_complexity'];
return conf;
else:
return False;
except (KeyError, ValueError):
print "Erreur: fichier de configuration incomplet";
raise SystemExit(0);
@ -85,7 +98,7 @@ def getMail(pConf, pPass):
def getSigma():
SIGMA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; # maj
SIGMA += 'abcdefghijklmnopqrstuvwxyz'; # min
SIGMA += '&=+^~@%,.?!:;[](){}-_#$*/ \\"«»\'\n'; # ponctuation + retour charriot
SIGMA += '&=+^~@%,.?!:;[](){}-_#$*/ \t\\"«»\'\n'; # ponctuation + retour charriot
SIGMA += '0123456789'; # digit
SIGMA += 'éèêàâùçîô'; # accents
SIGMA = SIGMA.decode('utf-8');
@ -209,6 +222,5 @@ def decodeStr(pM, pSIGMA, pROTOR, pTimes):
decodedStr += decodeChar(c, pSIGMA, pROTOR); # on lit le caractere
rotateRotorsAnticlockwise(pROTOR); # on tourne les rotors dans le sens inverse
tmp = decodedStr[::-1];
# on retourne la chaine
return decodedStr[::-1];

Binary file not shown.

View File

@ -8,10 +8,6 @@ path = os.path.abspath( os.path.dirname(sys.argv[0]) );
# paramètres utilisateurs
conf = getConf(path);
if( conf == False ): # si manque des paramètres
print "parametres manquants";
raise SystemExit(0);
Pass = str( getpass.getpass('Mot de passe : ') );
print '...';

View File

@ -13,10 +13,6 @@ 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 : ') );