+shell fini (encode/decode/send/write/read/init/config) +a faire:factoriser encode=decode [stable~70]
This commit is contained in:
parent
9e4c3a6d81
commit
f8fac2f8f1
|
@ -21,4 +21,5 @@ http://www.leboncoin.fr
|
|||
Mobile.leboncoin.fr, découvrez notre nouveau site mobile en vous connectant depuis
|
||||
votre téléphone portable.
|
||||
http://mobile.leboncoin.fr
|
||||
M
|
||||
|
||||
?
|
|
@ -14,6 +14,9 @@ then # si 1 paramètre
|
|||
'write') nano "$path/bucket-file";; # ouvre en modification 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;;
|
||||
*) echo "Erreur";
|
||||
esac;
|
||||
else
|
||||
|
|
|
@ -2,16 +2,35 @@
|
|||
from enigmail import *
|
||||
import getpass, sys, os
|
||||
|
||||
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";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# on teste l'existence du paramètre passé à l'appel (encode/decode/send)
|
||||
if( len(sys.argv) == 2 and sys.argv[1] == 'encode' or sys.argv[1] == 'decode' or sys.argv[1] == 'send' ):
|
||||
arg = sys.argv[1];
|
||||
else:
|
||||
print("Erreur");
|
||||
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
|
||||
|
@ -23,56 +42,70 @@ SIGMA = SIGMA.decode('utf-8');
|
|||
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
|
||||
|
||||
|
||||
# AFFICHAGE DES ROTORS
|
||||
# printRotors(ROTOR);
|
||||
|
||||
# OUVERTURE ET LECTURE DU FICHIER
|
||||
inFile = open(path + '/../bucket-file', 'r');
|
||||
m = inFile.read().decode('utf-8');
|
||||
inFile.close();
|
||||
|
||||
# CHOIX DU TYPE (ENCODE+MAIL / ENCODE / DECODE)
|
||||
type = '';
|
||||
while( type != 'M' and type != 'C' and type != 'D' ):
|
||||
type = ( raw_input('[M] Crypter et envoyer par mail\n[C] Crypter\n[D] Décrypter\n> ') ).upper();
|
||||
print;
|
||||
# VARIABLE DU HASH
|
||||
M = '';
|
||||
|
||||
|
||||
if( type == 'M' or type == 'C' ):
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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
|
||||
else:
|
||||
# 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);
|
||||
|
||||
# ENVOI DU MAIL
|
||||
if( type == 'M' ):
|
||||
To = str( raw_input('Destinataire : ') );
|
||||
Subj = str( raw_input('Objet : ') );
|
||||
Pass = str( getpass.getpass('Mot de passe : ') );
|
||||
print '...';
|
||||
|
||||
sendMail(conf, Pass, To, Subj, M);
|
||||
|
||||
# ECRITURE FICHIER
|
||||
else:
|
||||
outFile = open(path + '/../bucket-file', 'w');
|
||||
outFile.write( M.encode('utf-8') );
|
||||
outFile.close();
|
||||
sendMail(conf, Pass, To, Subj, m);
|
||||
|
|
Loading…
Reference in New Issue