Le module Base64 de Python est un outil puissant pour encoder et décoder les messages. Vous pouvez l'utiliser pour envoyer des données en toute sécurité sur Internet. C'est une procédure standard pour les sites Web, les applications et les services de communication d'utiliser ce type d'encodage pour protéger les données sensibles des pirates informatiques hostiles.
Le module Base64 a une paire de fonctions que vous pouvez utiliser pour encoder et décoder les messages, ajoutant une sécurité supplémentaire à vos transferts de données.
Le module Tkinter et Base64
Tkinter vous permet de créer des applications de bureau. Il offre une variété de widgets tels que des boutons, des étiquettes et des zones de texte qui facilitent le développement d'applications sans trop d'effort. Vous pouvez créer des programmes GUI incroyables avec Tkinter. Tu pourrais
construire une calculatrice simple, une application de liste de tâches ou un jeu de test de dactylographie. Pour installer Tkinter dans votre système, ouvrez votre terminal et tapez :pip installer tkinter
BASE64 fournit des fonctions pour coder les données binaires en ASCII pour les décoder en binaire. Il prend en charge à la fois le codage standard et sécurisé par URL, ce qui rend la transmission des informations plus sécurisée. Pour convertir une chaîne en un caractère Base64, obtenez la valeur ASCII de chaque caractère et calculez son binaire 8 bits. Convertissez ce morceau de 6 bits en regroupant les chiffres et en les reconvertissant en leurs valeurs décimales respectives. Enfin, utilisez la table d'encodage Base64 pour obtenir les valeurs Base64 pour chaque décimale.
Comment encoder et décoder des messages en Python
Vous pouvez trouver le code source de ce projet dans son Référentiel GitHub.
Commencez par importer les deux modules. Initialisez l'instance de Tkinter et affichez la fenêtre racine. Définissez le titre, les dimensions en pixels et la couleur d'arrière-plan de la fenêtre.
depuis tkinter importer *
importer base64
racine = Tk()
root.geometry('750x400')
root.configure (arrière-plan='aqua')
racine.titre("Encoder et décoder les messages à l'aide de Python")
Utilisez les widgets Label pour afficher des informations utiles sur l'application. L'étiquette accepte une fenêtre parent dans laquelle vous souhaitez la placer, le texte qu'elle doit afficher, ainsi que le style de police, la couleur et la couleur d'arrière-plan. Utiliser paquet() pour organiser le widget dans un bloc de mise en page avant de le placer dans le widget parent. StringVar facilite le contrôle de la valeur d'un widget comme une étiquette ou une entrée.
Libellé (racine, texte='Encodeur et décodeur de messages Python', police='arial 25 gras', fg='blanc', bg="violet").paquet()
Texte = StringVar()
clé = StringVar()
mode = StringVar()
Résultat = StringVar()
Définir une fonction Encoder() qui accepte une clé pour encoder et décoder avec le message. Définissez une liste vide et parcourez jusqu'à la longueur du message. Définissez l'index de la clé comme module de l'opération et stockez sa valeur dans la variable key_c. Utiliser commande() pour obtenir la valeur Unicode du caractère et utiliser chr() pour obtenir le caractère qui représente la valeur spécifiée.
Ajoutez cette valeur à la liste. Joignez chaque élément de la liste avec une chaîne vide et utilisez le encoder() méthode pour renvoyer une version encodée en utf-8 de la chaîne. Le base64.urlsafe_b64encode() code cette entrée et remplace - par + et _ par /.
définitivementEncoder(message clé):
enc = []pour je dans plage (len (message)):
key_c = clé[i % len (clé)]
enc.append (chr((ord (message[i]) + ord (key_c)) % 256))
retour base64.urlsafe_b64encode("".join (enc).encode()).decode()
Définir une fonction Décoder() qui accepte une clé pour encoder et décoder avec le message. Définissez une liste vide et décodez le message. Itérez jusqu'à la longueur du message et définissez le module de l'opération comme index et stockez sa valeur dans key_c. Ajoutez le caractère du décodage du message de chaîne Unicode comme indiqué ci-dessous. Renvoie la chaîne décodée.
définitivementDécoder(message clé):
déc = []
message = base64.urlsafe_b64decode (message).decode()pour je dans plage (len (message)):
key_c = clé[i % len (clé)]
déc.append (chr((256 + ord (message[i]) - ord (key_c)) % 256))
retour"".join (déc)
Définir une fonction Mode() qui obtient le mode entré par l'utilisateur dans le widget Entrée et appelle la fonction appropriée selon la sélection. Si l'utilisateur n'entre pas une réponse valide, affichez un message d'erreur.
définitivementMode():
si (mode.get() == 'E'):
Result.set (Encoder (key.get(), Text.get()))
elif (mode.get() == 'D'):
Result.set (Décoder (key.get(), Text.get()))
autre:
Result.set('Mode invalide')
Définir une fonction Sortie() pour tuer et terminer l'interpréteur fonctionnant en arrière-plan. Définissez une fonction Reset() pour effacer le contenu du champ Entry.
définitivementSortie():
root.destroy()
définitivementRéinitialiser():
Texte.set("")
clé.set("")
mode séléctionné("")
Result.set("")
Définissez les widgets Étiquette et Entrée pour Message, Clé, Mode et Texte. Spécifiez la fenêtre parente dans laquelle vous souhaitez les placer, le style de police, le texte et la couleur d'arrière-plan. Définissez également les coordonnées pour les organiser.
Libellé (racine, font='arial 17 gras', texte='Message', fg='noir', bg="aqua").lieu (x=60, y=100)
Entrée (racine, font='arial 15', textvariable=Texte, bg='blanc').lieu (x=450, y=100)Libellé (racine, font='arial 17 gras', texte='Clé', fg='noir', bg="aqua").lieu (x=60, y=130)
Entrée (racine, font='arial 15', variable texte=clé, bg='blanc').lieu (x=450, y=130)Libellé (racine, font='arial 17 gras', texte='Mode (E-Encode, D-Decode)', fg='noir', bg="aqua").lieu (x=60, y=160)
Entrée (racine, font='arial 15', variabletexte=mode, bg='blanc').lieu (x=450, y=160)
Libellé (racine, font='arial 17 gras', texte='Texte', fg='noir', bg="aqua").lieu (x=60, y=190)
Entrée (racine, font='arial 15 gras', textvariable=Résultat, bg='blanc').lieu (x=450, y=190)
De même, définissez trois boutons pour afficher le résultat, réinitialiser les champs et arrêter le programme. Les boutons ont un paramètre spécial appelé commande qui prend une fonction et l'exécute au clic.
Bouton (racine, font='arial 15 gras', texte='Résultat', padx=2, bg='Gris clair', commande=Mode).place (x=100, y=240)
Bouton (racine, font='arial 15 gras', texte='Réinitialiser', largeur=6, commande=Réinitialiser, bg='Vert', padx=2).lieu (x=300, y=240)
Bouton (racine, font='arial 15 gras', texte='Arrêt', largeur=6, commande=Quitter, bg='Rouge', padx=2, paddy=2).lieu (x=500, y=240)
Le boucle principale() La fonction indique à Python d'exécuter la boucle d'événements Tkinter et d'écouter les événements (tels que les pressions sur les boutons) jusqu'à ce que vous fermiez la fenêtre.
root.mainloop()
L'encodeur/décodeur de messages en action
Lors de l'exécution du programme, le programme affiche une fenêtre dans laquelle vous devez saisir un message, une clé et un mode. En sélectionnant le mode Encodage avec une clé de 2009, le message Se servir de se transforme en f8KRwpvCnlLChcKjwp5Sf8KW.
De même, en copiant le message codé et en le recollant dans l'entrée pour le décoder avec le même, vous récupérez le message d'origine.
Cybersécurité avec Python
Vous pouvez utiliser Python pour écrire des scripts qui automatisent les contrôles de sécurité, surveillent les réseaux et recherchent les vulnérabilités. Vous pouvez l'utiliser pour créer des applications robustes qui utilisent l'authentification pour réduire les risques qu'un attaquant compromette vos données.
Les experts en cybersécurité utilisent souvent Python pour créer des pare-feu d'applications Web afin de surveiller une application. Ils peuvent effectuer une analyse de détection des menaces à l'aide de Machine Learning. Avec cette architecture, il est beaucoup plus facile de créer des tests de pénétration personnalisés et de valider les protocoles de sécurité.