Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Dans ce Instructable, je vais vous montrer comment avec un Python simple, vous pouvez sécuriser vos fichiers à l'aide de la norme AES.
Conditions:
-Python 3.7
- Bibliothèque PyAesCrypt
- bibliothèque hashlib
Si vous ne disposez pas de ces bibliothèques, vous pouvez l'installer facilement en tapant:
pip3 installer hashlib
pip3 installer PyAesCrypt
dans le terminal (ou CMD)
Vous devriez déjà avoir ceux-ci:
- bibliothèque aléatoire
- bibliothèque du système d'exploitation
- bibliothèque système
J'utilise OS X, mais cela ne devrait pas trop avoir d'importance, à l'exception du sens des barres obliques dans les chemins de fichiers (OS X: /, Windows:)
Remarque: En raison de certains problèmes, les indentations dans le code ne s'affichent pas pour une raison quelconque. Il n'y aura donc pas d'indentations dans le code affiché, cependant elles sont présentes dans les fichiers Python que j'ai joints à la fin, et dans les images jointes. Ne prenez pas le code directement à partir du texte affiché, car cela ne fonctionnera pas en raison du manque d'indentations
Si vous avez toutes les dépendances installées, passons à l'étape 1.
Étape 1: écriture du fichier d'installation
L'un des facteurs qui rend cela si sûr est l'utilisation de hachages pour vérifier le mot de passe. Le fichier d'installation (j'appelle le mien setupsafe.py) va:
- Créez un dossier et des fichiers factices pour le mot de passe
- Définir le mot de passe
- Définir le numéro de fichier
- Hacher le mot de passe
Tout d'abord, nous allons importer nos dépendances:
à partir de l'importation sys *
importer le système d'exploitation
importer au hasard
importer hashlib
Ensuite, nous allons créer un dossier pour héberger le hachage du mot de passe et les fichiers factices:
essayez: sinon os.path.exists('desktop/safesetup'):
os.mkdir('desktop/safesetup/')
sauf OSError:
print("Erreur lors de la création du dossier")
Ce code créera un dossier appelé safesetup (à moins qu'il n'existe déjà).
Après cela, nous allons définir le mot de passe et générer un nombre aléatoire entre 1 et 100 pour naviguer dans les fichiers factices:
mot de passe globalpassword = argv[1].encode('utf-8')
n = aléatoire.randint(1, 101)
Maintenant que nous avons notre mot de passe et notre numéro de fichier, nous allons créer 99 fichiers factices dans safesetup, et un vrai fichier qui contiendra notre hachage de mot de passe:
pour x dans la plage (101): if(x != n):
f = open(("desktop/safesetup/"+str(x)), "w+")
f.fermer()
autre:
mot de passe = hashlib.sha256(mot de passe).hexdigest()
f = open(("desktop/safesetup/"+str(x)), "w+")
f.écrire (mot de passe)
f.fermer()
imprimer(n)
Le fichier réel est appelé quel que soit l'entier n. Ce fichier contient notre mot de passe, après avoir été haché à l'aide de l'algorithme sha256 (cet algorithme de hachage est largement utilisé dans les crypto-monnaies, notamment Bitcoin).
Rappelez-vous ce qu'est n (il sera imprimé dans la console), car il est tout aussi important que le mot de passe.
C'est tout ce dont nous avons besoin pour notre programme d'installation, nous allons donc maintenant passer au programme de cryptage/décryptage.
Étape 2: Le fichier de cryptage/décryptage
La section de configuration du fichier principal importe les dépendances, hache le mot de passe saisi et récupère le vrai hachage du mot de passe à l'aide du numéro de fichier saisi.
Tout d'abord, les dépendances:
de sys import *import os
importer pyAesCrypt
importer hashlib
Ensuite, le hachage du mot de passe saisi:
mot de passe = argv[1].encode('utf-8')mot de passe = hashlib.sha256(mot de passe).hexdigest()
Enfin, la récupération du mot de passe haché:
file_key = str(argv[2])hash = open(("desktop/safesetup/" + file_key), ("r+")).read()
La deuxième section du fichier de chiffrement compare les hachages, détermine la véracité de la comparaison et utilise la bibliothèque python AESCrypt pour chiffrer ou déchiffrer le fichier de votre choix. C'est un gros morceau de code, mais je vais le décomposer:
if(mot de passe == hash): print("Mot de passe accepté")
Taille du tampon = 64 * 1024
operation = str(input("Récupérez-vous ou cryptez-vous des fichiers ? (r ou e) "))
if(opération == 'r'):
file_name = str(input("Fichier à récupérer: "))
pyAesCrypt.decryptFile((file_name + ".aes"), file_name, password, bufferSize)
os.remove((nom_fichier + ".aes"))
elif(opération == 'e'):
file_name = str(input("Fichier à crypter: "))
pyAesCrypt.encryptFile(file_name, (file_name + ".aes"), mot de passe, bufferSize)
os.remove(nom_fichier)
autre:
print("Erreur: saisie incorrecte")
autre:
print("Accès refusé")
La première instruction if détermine si les mots de passe hachés correspondent. S'ils le font, il vous demande ensuite si vous souhaitez crypter des fichiers ou récupérer des fichiers cryptés. Selon votre entrée, il chiffrera ou déchiffrera le fichier fourni. Lorsque vous êtes invité à donner le nom du fichier, assurez-vous de spécifier le chemin à moins que le fichier ne se trouve dans le même répertoire que le programme python. Le programme supprime le fichier dans son état précédent, le remplace par un fichier.aes crypté ou le décrypte et le remplace par le fichier d'origine.
À l'avenir, je pourrais mettre à jour cela pour inclure la reconnaissance faciale à l'aide de la bibliothèque Python OpenCV, mais pour l'instant, les mots de passe devront suffire.
Étape 3: Exploitation des fichiers
Pour exécuter le fichier d'installation, procédez comme suit:
1. Tapez dans le terminal:
python3 directory/setupname.py password (en remplaçant le répertoire, le setupname et le mot de passe par leurs valeurs respectives)
2. Le terminal affichera votre numéro de dossier. Garde ça.
Pour exécuter le programme de chiffrement/déchiffrement, procédez comme suit:
1. Tapez dans le terminal:
python3 directory/filename.py password filenumber (remplace le répertoire, le nom de fichier, le mot de passe et le numéro de fichier par leurs valeurs respectives)
2. Le terminal acceptera ou refusera alors votre mot de passe. En cas de refus, réessayez et assurez-vous de saisir les bonnes valeurs. Une fois l'accès accordé, le terminal vous demandera si vous souhaitez crypter un fichier ou récupérer un fichier. Pour crypter un fichier, tapez e, et pour récupérer un fichier crypté, tapez r.
3. Il vous sera alors demandé de fournir le nom du fichier. N'oubliez pas de fournir le répertoire du fichier ainsi que le nom, ainsi que l'extension du fichier. Cependant, si vous déchiffrez un fichier, ne tapez pas la partie.aes de l'extension, car le code en tient compte.
4. Le programme crypte ou décrypte ensuite le fichier fourni et supprime le fichier dans son état précédent (en conservant le fichier crypté ou décrypté).
Voila ! Merci d'avoir fait si loin dans l'instructable, je sais que la lecture de didacticiels de code n'est pas la chose la plus divertissante. Les fichiers python sont inclus dans cette étape, pour ceux d'entre vous qui veulent essayer. Encore une fois, merci d'avoir lu, et je vous souhaite la meilleure des chances dans vos futurs efforts de codage.