Skip to content

Commit 64611ee

Browse files
authored
Merge branch 'main' into feature/chacha20_analyzer
2 parents 6ba0a41 + 77177f8 commit 64611ee

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

src/analyzers/chacha20_analyzer.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
from rich import print
55
import os, struct
66
import math
7-
8-
# Import de la classe CryptoAnalyzer et utils
97
import sys
10-
import os
118
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
129
from crypto_analyzer import CryptoAnalyzer
1310
from utils import calculer_entropie
@@ -108,14 +105,17 @@ def identifier_algo(self, chemin_fichier_chiffre: str) -> float:
108105
print(f"Erreur lors de l'identification de l'algorithme: {e}")
109106
return 0.0
110107

108+
111109
def filtrer_dictionnaire_par_indices(self, chemin_fichier_chiffre):
112110
pass
113111

114112
def generer_cles_candidates(self, chemin_fichier_chiffre):
113+
115114
'''
116115
Cette fonction se charge de générer les clés candidates pour le déchiffremment du fichier chiffré en utilisant
117116
la dérivation sha256 pour renforcer les clées de chiffrement.
118117
118+
119119
Args:
120120
chemin_fichier_chiffre(str) : Le chemin vers le fichier chiffré
121121
@@ -157,6 +157,29 @@ def dechiffrer(self, chemin_fichier_chiffre: str, cle_donnee: bytes) -> bytes:
157157
except Exception as e:
158158
print(f"Une erreur est survenue : {e}")
159159
return b""
160+
cle_candidates.append(hashlib.sha256(cle).encode(encoding="utf-8"))
161+
162+
return cle_candidates
163+
164+
def dechiffrer(self,chemin_fichier_chiffer : str ,clef :bytes)->str:
165+
if len(clef) != 32 : return ValueError("Erreur : La clé a pas la taille correcte ")
166+
else:
167+
try:
168+
with open(f"data/{chemin_fichier_chiffer}",'rb') as f:
169+
nonce = f.read(16)
170+
texte_chiffrer = f.read()
171+
172+
counter=0
173+
algorithm_chacha20 = algorithms.ChaCha20(clef,nonce)
174+
cipher = Cipher(algorithm_chacha20,mode=None)
175+
decrypteur = cipher.decryptor()
176+
return decrypteur.update(texte_chiffrer)
177+
178+
179+
180+
except Exception as e:
181+
print(f"Une erreur est survenu : {e}")
182+
160183

161184

162185
# print(ChaCha20_Analyzer().dechiffrer("mission2.enc",os.urandom(32)))

0 commit comments

Comments
 (0)