From 69e1c79cd7bc835ebd0ce7800d1defba1d99e143 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 24 May 2015 23:05:58 +0200 Subject: [PATCH] =?UTF-8?q?Gestion=20config=20finie=20+=20niveau=20complex?= =?UTF-8?q?it=C3=A9=20[stable~80]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md~ | 83 +++++++++++++++++++++++++++++++++++ enigmail/.config | 14 +++--- enigmail/bucket-file | 9 +--- enigmail/enigmail.sh | 14 +++--- enigmail/source/decode.py | 7 ++- enigmail/source/encode.py | 5 ++- enigmail/source/enigmail.py | 22 +++++++--- enigmail/source/enigmail.pyc | Bin 6680 -> 6923 bytes enigmail/source/receive.py | 4 -- enigmail/source/send.py | 4 -- 10 files changed, 126 insertions(+), 36 deletions(-) create mode 100644 README.md~ diff --git a/README.md~ b/README.md~ new file mode 100644 index 0000000..d75d8f8 --- /dev/null +++ b/README.md~ @@ -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] diff --git a/enigmail/.config b/enigmail/.config index c470950..89be7b0 100644 --- a/enigmail/.config +++ b/enigmail/.config @@ -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 diff --git a/enigmail/bucket-file b/enigmail/bucket-file index d6e47ab..28d0af9 100644 --- a/enigmail/bucket-file +++ b/enigmail/bucket-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 diff --git a/enigmail/enigmail.sh b/enigmail/enigmail.sh index 38966c3..2b34580 100644 --- a/enigmail/enigmail.sh +++ b/enigmail/enigmail.sh @@ -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 ] diff --git a/enigmail/source/decode.py b/enigmail/source/decode.py index 8ce8b18..2a56234 100644 --- a/enigmail/source/decode.py +++ b/enigmail/source/decode.py @@ -38,8 +38,11 @@ ROTOR.append( [] ); 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'); diff --git a/enigmail/source/encode.py b/enigmail/source/encode.py index 435a714..29a21ac 100644 --- a/enigmail/source/encode.py +++ b/enigmail/source/encode.py @@ -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') ); diff --git a/enigmail/source/enigmail.py b/enigmail/source/enigmail.py index 5581dc5..fc8c53f 100644 --- a/enigmail/source/enigmail.py +++ b/enigmail/source/enigmail.py @@ -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]; \ No newline at end of file diff --git a/enigmail/source/enigmail.pyc b/enigmail/source/enigmail.pyc index 2a8d82bd5a12cf30458582bdf6fd6d87e59a9e66..b2ddc5d915e3fc448bc5726555558d194e8ed509 100644 GIT binary patch delta 1157 zcmaKqO>9(E6vywGnNHt)Im6h}X$fVZRA2dMOM(Qdgp#I!DcE`kQb1)G`tD30ee>RU z-z{N+$k&nt6HiQt3ted9LKi}#E?tAjsot2AFf^P742#9QCv8d7zDPdu1$AsrfaiZ zo9o(FI<~Ut+ah6lh3OIXm{>^*T?YD`yf}KySi&iYTOe+N@Ijn*gs9jXsQo)(hBz^f zso2h8!+zK_t!k+BC8bU3dE5%L!T)-PubC{Rnl;y})*MHxFr;omctOMUO&@tRuMue1 zEH|r5L9^wl%dTmMJ7{25YqhGU%5`^X*;TsisPaS|kfH+HPgpyv~LJzE+kB>lJ@SAZo8aU1?ALG- zM{`GD2)AS__;aoRZG4#fWB)1cbe3R8dKbxyj<7X1dq$q)h>xyy+zpKZ@;o_2l+|dN z>3jxm;qm;#5p@Q%ot<(ihf1KFS^?`IS}4@YtKJDl(Pd+eo4 zNRKD3&#uFd_^AJ@t_=UZ!ku z*lEDthYZb#HXV`|y+=o}YNukfT%}W9Om`9#|Bg>fn~E`;w=EAdrWhlb9XxP!nB9Gh n6O0Pu4C6dQF(Of{N3JlUT}2u%ad??vi|AgT4whm2r$eP@8fN*E delta 849 zcmZvZO=uHQ5Xax_ZZ_Ry^Vv3QV$;;>Vf{cTlxhzaY-zO>wRua$FVL8*Z8S|{vK2)| z(Th;6=v;~yLA_K#kf4HiZPkNP^dNZf=BY;&!Hd3m#nyuh``h{W&wDeo(>=4@y80~? z_z`-lTM+Rx#&q!xh`0Wp;TCw7zNoTmzzR+5w2##mm~b7>&zu5dj&0zW(&H~uiQR-< z>PWLH%#vI7eBwKlE7e`wkN4HxmY9< zhoKk02g@*qdGnT!n?i@b%&U;YOQDC5#m?{$#BpcL!B^oZl<-~nYdeYf0Rfvfz#Rck z6R7SPJj4&RAe!n2F86b$k+gkvc(v<*2Z1+6K=P3V1m_ z1-FIBLbG{)>#9as(a5f%LE%?x#j?jMUZqyQiyxamZ(osfgXE;~0s_wYy5~*~o-2Ab z^(!}69hk_~c0gE3fDS20Ko~65ZWVFfN7zPa$KT1`T{753{s>`| xFh)2^$Pr|R)Eplt$Ps13b#kW!Y$pHyhg3(>GE#<@YjtC#=) diff --git a/enigmail/source/receive.py b/enigmail/source/receive.py index e6c1666..60bf930 100644 --- a/enigmail/source/receive.py +++ b/enigmail/source/receive.py @@ -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 '...'; diff --git a/enigmail/source/send.py b/enigmail/source/send.py index 98aa66c..99f5ff3 100644 --- a/enigmail/source/send.py +++ b/enigmail/source/send.py @@ -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 : ') );