Skip to content

Commit 77177f8

Browse files
wesley-kamiEunock-webe-mandymouwaficbdr
authored
Feature/chacha20 analyzer (#24)
* Intégration de AesCbcAnalyzer dans DetecteurCryptoOrchestrateur. * Debut de l'implementation du code dans la classe principale avec le menu * Documentation de la fonction d'entropie * Suite de l'implementation du code dans la classe principale avec le menu * Essai de fusion (1/2) * Récupération du main (1/2) * Mise en place des tests unitaires (1/4) * Revert "Mise en place des tests unitaires (1/4)" This reverts commit e965801. * Mise en place des tests unitaires (1/4) * Update de l'option quitter * Mise en place des tests liés à l'analyzer aes cbc * Corrections de typage et de logique * Correction du comportement à la levée de l'exception * Correction de la lgoque de test de test_exception_déchiffrer * Corection de la logique de test_verification_texte_dechiffre * fix: Utilisation de pathlib pour une gestion portable des chemins. * Revu des fonctions pour une meilleure optimisation * Ajout du guide d'utilisation * Unsaved files * Mise en place de la fonction de génération de clés candidates * prémices du déchiffrement Chacha20 * logique ddecryptage --------- Co-authored-by: Eunock-web <izumishinishi7@gmail.com> Co-authored-by: e-mandy <andymfrd02@gmail.com> Co-authored-by: mouwaficbdr <badaroumouwafic@gmail.com>
1 parent 63a81ff commit 77177f8

1 file changed

Lines changed: 55 additions & 0 deletions

File tree

src/analyzers/chacha20_analyzer.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import hashlib
2+
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
3+
from rich import print
4+
import os, struct
5+
6+
class ChaCha20_Analyzer:
7+
8+
def filtrer_dictionnaire_par_indices(self, chemin_fichier_chiffre):
9+
pass
10+
11+
12+
13+
def generer_cle_candidates(self, chemin_fichier_chiffre):
14+
'''
15+
Cette fonction se charge de générer les clés candidates pour le déchiffremment du fichier chiffré en utilisant
16+
la dérivation sha256 pour renforcer les clées de chiffrement.
17+
18+
19+
Args:
20+
chemin_fichier_chiffre(str) : Le chemin vers le fichier chiffré
21+
22+
Returns:
23+
cles_candidates (list[bytes]) : Un tableau de clés, chaque clé étant une séquence d'octets
24+
25+
'''
26+
27+
donnees_fichier_filtre = self.filtrer_dictionnaire_par_indices(chemin_fichier_chiffre)
28+
29+
cle_candidates: list[bytes] = []
30+
for cle in donnees_fichier_filtre:
31+
cle_candidates.append(hashlib.sha256(cle).encode(encoding="utf-8"))
32+
33+
return cle_candidates
34+
35+
def dechiffrer(self,chemin_fichier_chiffer : str ,clef :bytes)->str:
36+
if len(clef) != 32 : return ValueError("Erreur : La clé a pas la taille correcte ")
37+
else:
38+
try:
39+
with open(f"data/{chemin_fichier_chiffer}",'rb') as f:
40+
nonce = f.read(16)
41+
texte_chiffrer = f.read()
42+
43+
counter=0
44+
algorithm_chacha20 = algorithms.ChaCha20(clef,nonce)
45+
cipher = Cipher(algorithm_chacha20,mode=None)
46+
decrypteur = cipher.decryptor()
47+
return decrypteur.update(texte_chiffrer)
48+
49+
50+
51+
except Exception as e:
52+
print(f"Une erreur est survenu : {e}")
53+
54+
55+
# print(ChaCha20_Analyzer().dechiffrer("mission2.enc",os.urandom(32)))

0 commit comments

Comments
 (0)