IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Town Ground

Solution de chiffrement tous OS avec Python 3

Noter ce billet
par , 18/07/2021 à 04h51 (146 Affichages)
J'avais déjà réalisé un petit utilitaire de chiffrement (cryptage de fichiers) en VB.NET, mais justement en utilisant ce langage je limitais son utilisation aux ordinateurs Windows. Voici donc qu'après plusieurs heures de tripatouillages, j'ai tiré une version Python de ce grand classique, puisqu'en effet c'est selon ce modèle (cet algorithme) que fonctionnait le tout premier logiciel de cryptage inventé par les "hackers" de l'époque du début de l'informatique et de MS-DOS.

Avantages: qui dit version Python, dit compatibilité tous OS donc Linux. C'est d'ailleurs sous Linux, avec mon Raspberry Pi 400 (dont j'ai du réinstaller le Raspbian [Raspberry Pi OS] suite à un virus probablement dû à l'installation puis la désinstallation de vs-codium; ça mériterait un retour utilisateurs le fameux vs-codium) que je l'ai codé.

Désavantage: traitant les octets (oui il agit par octets et non caractères) comme des caractères en soi, donc avec Python version récente au format UTF-8, il n'est compatible ce programme qu'avec Python 3 (toutes versions). Cela exclu donc de le programmer ou de l'exécuter via VS-Code (qui utilise ms-python, une version ancienne et abandonnée par la PSF [Python Software Foundation] et qui utilise des caractères ASCII, ce qui pour un OS Linux ou Mac est une injure).

Bref ci-dessous le code-source suivi du fichier d'utilitaire en langage Python à télécharger directement.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# -*- coding:Utf-8 -*-#
#Utilitaire de (Dé)Chiffrement
#version 2.0 du 17/07/2021
#by Philippe Le Bihan (Town Ground
#anciennement Igor Gorovitch)
#
#Non compatible avec VS-Code/Codium
#


nfs=input("Nom du fichier source :")
nfc=input("Nom du fichier cible  :")
if nfc==nfs:
    print("")
    print("Vous ne pouvez surécrire sur le fichier source!")
    r=input("")
    exit()


try:
    fs=open(nfs,"rb")
except:
    print("")
    print(nfs,"n'existe pas dans ce répertoire.")
    r=input()
    exit()
fc=open(nfc,"wb")


print("")
sens=""
while sens!="C" and sens!="c" and sens!="D" and sens!="d":
    sens=input("[C]hiffrer ou [D]échiffrer ? ")
if sens=="C" or sens=="c":
    sens=1
elif sens=="D" or sens=="d":
    sens=-1


print("")
mdp=input("Mot de passe :")
if mdp=="":
    mdp=chr(0)


octets=fs.read()
taille=len(octets)
print("")
print("Traitement de",taille,"octets en cours...")
octetc=""
cdp=-1
longueur=0
rap=0
print("")
print("Effectués:")
print(rap,"%\r",end="")
for o in octets:
    longueur=longueur+1
    rap=round((longueur*100/taille),2)
    if rap%5==0:
        print(round(rap),"%\r",end="")
    cdp=cdp+1
    if cdp==len(mdp):
        cdp=0
    ncars=int(o)
    ncarw=ord(mdp[cdp])
    ncarc=ncars+(ncarw*sens)
    if ncarc<1:
        ncarc=ncarc+255
    if ncars==0:
        ncarc=0
    if ncarc>255:
        ncarc=ncarc-255
    carc=chr(ncarc)
    octetc=octetc+carc


octetc=bytes(octetc,encoding="Latin-1")
fc.write(octetc)
fs.close()
fc.close()
print("\n")
print("")
print("Traitement de",longueur,"octets fini.")
print("Appuyez sur Entrée pour quitter.")
r=input()
Deux fonctions clés comme on le voit: bytes facilement découvert grâce au message d'erreur et également grâce à un message d'erreur une fonction (ou option) plus difficilement déterminable: encoding="Latin-1". Ce dernier est la clé de voûte permettant de réellement chiffrer et déchiffrer en tant qu'octet par octet tous types de fichiers (même des MP3)!

Néanmoins qui dit Python dit non-compilé et interpréteur donc... lenteur.

Donc on veillera à ne crypter que des fichiers d'environ 2 Mo maximum.

Et voici le fichier: DChiffre_2-0.py

Envoyer le billet « Solution de chiffrement tous OS avec Python 3 » dans le blog Viadeo Envoyer le billet « Solution de chiffrement tous OS avec Python 3 » dans le blog Twitter Envoyer le billet « Solution de chiffrement tous OS avec Python 3 » dans le blog Google Envoyer le billet « Solution de chiffrement tous OS avec Python 3 » dans le blog Facebook Envoyer le billet « Solution de chiffrement tous OS avec Python 3 » dans le blog Digg Envoyer le billet « Solution de chiffrement tous OS avec Python 3 » dans le blog Delicious Envoyer le billet « Solution de chiffrement tous OS avec Python 3 » dans le blog MySpace Envoyer le billet « Solution de chiffrement tous OS avec Python 3 » dans le blog Yahoo

Commentaires