Want to create interactive content? It’s easy in Genially!
Proget NSI cryptage -final
Prénom Nom
Created on March 31, 2022
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Audio tutorial
View
Pechakucha Presentation
View
Desktop Workspace
View
Decades Presentation
View
Psychology Presentation
View
Medical Dna Presentation
View
Geometric Project Presentation
Transcript
projet s3Cr3t
Création d'un système de messagerie crypté
éléves : Loqmann ; Abou-Bakr ; Madavan ; Mohammed-Amine Professeur: Mme.Vezie ; M.Mollard
Date 01-04-2022
SOMMAIRE
04. Cryptage N°2
07. Réseaux
01. Explications
08. Conclusion
05. Cryptage N°3
02. Objectifs
09. Remerciements
06. Interface
03. Cryptage N°1
01. explICATIONS
Quel est le but de notre projet ?
Le principe est simple...
- Chaque utilisateur a une interface
- Envoyer un message (il sera crypté)
- Recevoir un message (le décrypter)
- Envoyer un fichier (il sera crypté)
- Recevoir un fichier (le décrypter)
Tout d’abord notre projet consiste à créer une messagerie crypté avec une interface graphique.Il y sera développé la partie de l'émetteur (celui qui envoi le message crypté) et celle du récepteur (celui qui doit décrypter le message pour le lire).
02. Objectifs
Etapes à réaliser
Détails
- Une interface graphique ressemblant à une messagerie
- LAN : Local Area Network
- Trois programmes différents
- Méthode XOR
- Méthode César
- Méthode Skez
Voici les grandes lignes de ce que nous devons faire :
- Créer l'interface graphique
- Faire le lien entre 2 machines ( LAN )
- Créer des programmes de dé/chiffrement
03. cryptage n°1
Méthode César
Algorithme
- entrer texte à chiffrer
- remplacer chaque lettre du texte à chiffrer par la lettre qui se situe n places plus loin dans l'alphabet.
- renvoie le texte chiffré
03. cryptage n°1
Méthode César
Programme
03. Décryptage n°1
Méthode César
Algorithme
- entrer texte à déchiffrer
- remplacer chaque lettre du texte à déchiffrer par la lettre qui se situe n places avant dans l'alphabet.
- renvoie le texte déchiffré
03. Décryptage n°1
Méthode César
Programme
04. Dé/cryptage n°2
Méthode XOR
Tableau XOR
Algorithme
- Lire le fichier à chiffrer
- Ouvrir le fichier final pour pouvoir écrire
- Répéter tant que le dernier bit n’est pas crypté
- Lire bit par bit le fichier à crypter en binaire
- On fait un XOR entre le texte du fichier en binaire et la clé en binaire
- Ecrire dans le fichier de sortie le message crypté
04. Dé/cryptage n°2
Méthode XOR (pour fichier)
Tableau XOR
Programme
05. Cryptage N°3
Cryptage de la clé de chiffrement
Et oui ! Plus de chiffrement rend l'accès aux données plus difficile pour tout individu externe. C'est pourquoi nous utilisons une méthode efficace pour rendre la clé illisible lors de l'envoi
05. Cryptage N°3
<Saisie du nom de la clé>
Déroulement du programme
Fonction cryptage
key (str)
table ascii (list)
Entrée: code, list1, list2
Boucle autant de fois que de caractères dans code
...
<c0de clé> +
...
Boucle autant de fois que de caractères dans list1
new table ascii (list)
...
...
new chaine ascii (str)
...
...
return
def convertir_cle
def creer_le_message
05. deCryptage N°3
récupérer le texte chiffré
Déroulement du programme 1/2
Fonction decryptage
key (.txt)
ascii (list)
Taille: 104
Taille: 100
z # , 9 # Y . ? $
...
...
separation = len(cle)-len(ascii)
chaine_cle = key.read()
chaine cle (str)
100
104
...
la_cle (str)
retourne la cle et la chaine
la_liste (str)
...
def separer_cle_liste
def recuperer_le_texte
05. deCryptage N°3
Déroulement du programme 2/2
Fonction decryptage
Entrée: cle, liste_melange
liste_melange (str)
ascii (str)
...
...
lien_2_chaines(dict)
# : 0 , Y : 1 , . : 2 , ? : a , $ : b , z : c , u : A , 7 : B , ... : ...
cle_finale (str)
la_cle (str)
def avoir_la_vraie_cle
05. cryptage générale
Méthode skez/César
Programme
Algorithme
- cryptage de la clé (methode skez)
- crypter le message (César)
- renvoyer le message crypté avec la clé crypté séparer à l'aide d'un séparateur
05. Décryptage générale
Méthode skez/César
Programme
Algorithme
- Sélectionner la partie gauche avant le séparateur et faire un decryptage de césar
- Sélectionner la partie droite aprés le séparateur et faire un decryptage avce la méthode Skez
- Renvoyer le message décrypté
06. Interface
Rendu à l'image
Programme Python
Interface finale avec l'utilisation principale de Gui ainsi que d'autre bibliothèques comme pour la scrollbar
Nous avons utilisé la bibliothèque Gui afin de créer une interface grafique où nous afficherons les messages envoyés et reçus
INTERFACE 6.1
Début du programme : Initialisation et connexion entre les deux PC qui communiquent
Toutes les bibliothèques et les modules utilsés définit en haut de page
INTERFACE 6.2
La fonction qui met à jour le chat à chaque message envoyé
On discerne ici clairement deux partie dans le programme- celle qui gère les fonctions -celle qui gère la fenêtre
INTERFACE 6.3
Deuxième Partie: L a partie du programme qui s'occupe purement du visuel et appelle les fonctions lorsque que l'on en a besoin
Première Partie:Toutes les fonctions appelées durant l'exécution du programme
INTERFACE 6.4
Interface finale avec les messages de 2 PC qui communiquent
Visuel finale avec la bibliohèque Gui
INTERFACE 6.5
Améliorations possibles :
Changement :
Choix de changement total de la bibliothèques qui nous a permis un meilleur rendu et qui es plus facil une fois comprise, on y retrouve des similitude avec Tkinter
- Rendre plus attrayant visuellement
- La fonction pour importer et crypter des fichier
- Ajout de l'application dans le bureau avec un exécutable
Conclusion :
- Beaucoup d'idée au départ très gourmant mais pas réussi a tout réaliser bien que il y a eu des problèmes on c'est remis en question et on les surmontés
- Avec plus de temps on aurait pu réussir totalement tout ce qui était voulu et envisager
07.Communication Reseaux
Comment va ce faire la communication entre reseaux ?
La communication va se faire par le module socket (Le module socket de Python permet de gérer les connexions, un socket est un objet qui permet d'ouvrir une connexion avec une machine, locale ou distante, et d'échanger avec elle.)
07.Communication Reseaux
def initialize_client(): s = socket(AF_INET,SOCK_STREAM) host = port = s.connect((host, port)) return conn
def initialize_server(): s = socket(AF_INET,SOCK_STREAM) host = port = s.bind((host, port)) s.listen(1) conn, addr = s.accept() return conn
Adresse IP - serveur
Adresse IP - serveur
Port - serveur
Port - serveur
Nombres de clients
client side
server side
07.Communication Reseaux
def receive(): while 1: try: data = conn.recv(1024) msg = data.decode('utf-8') print("Message recu le ", {date}, " : \n", msg) dc_msg = decrypt_general(msg) if dc_msg != "": update_chat(dc_msg, 1) except: pass
def send(): msg = textbox.get("0.0", END) update_chat(msg, 0) c_msg = crypt_general(msg) conn.send(c_msg.encode('utf-8')) textbox.delete("0.0", END) return conn
def press(event): send()
recevoir le message
envoyer le message
07.Communication Reseaux
Très Très Important !
textbox.bind("<KeyRelease-Return>", press) # lance le programme en mémoire (thread) _thread.start_new_thread(receive, ()) # tkinter: boucle de la fenêtre gui.mainloop()
08. Conclusion
Plus de chiffrement -> Plus de sécurité
Ce projet nous permet de communiquer en sécurité à l'abris des hackeurs.Nous mettons ainsi en relation deux machines connectés localement. Les messages qui transitent sont chiffrés et illisibles sans la fonction et la clé le permettant.
MERCI DE VOTRE ATTENTION
Avez-vous des questions?