Skip to content

Commit 7dcedd7

Browse files
committed
Implémentation de la méthode identifier_algo() de la classe Aes_Cbc_Analyzer
1 parent b6765e5 commit 7dcedd7

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

src/analyzers/aes_cbc_analyzer.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from ..crypto_analyzer import CryptoAnalyzer
2+
from ..utils import calculer_entropie_shannon
3+
4+
class Aes_Cbc_Analyzer(CryptoAnalyzer):
5+
6+
def identifier_algo(self, chemin_fichier_chiffre: str) -> float:
7+
'''
8+
Détermine la probabilité que l'algo de chiffrement utilisé soit l'aes cbc.
9+
10+
Args:
11+
chemin_fichier_chiffre(str): Le chemin du fichier chiffré à traiter (mission1.enc).
12+
13+
Returns:
14+
float: probabilité calculée.
15+
'''
16+
17+
try:
18+
with open(chemin_fichier_chiffre, "rb") as f:
19+
contenu_fichier = f.read()
20+
21+
if len(contenu_fichier) < 16: #Heuristique IV probable en début de fichier (Vérifie si le fichier est assez grand pour contenir déjà l'IV)
22+
return 0.0
23+
24+
initialization_vector = contenu_fichier[0:16] # type: ignore
25+
donnees_chiffres = contenu_fichier[16:]
26+
27+
if len(donnees_chiffres) % 16 == 0: #Heuristique taille multipe de 16 bytes (Vérifie si les donnéese chiffrés sont en bloc de 16 octets, caractéristique de l'aes cbc)
28+
probabilite = 0.6
29+
else:
30+
return 0.0
31+
32+
entropie = calculer_entropie_shannon(donnees_chiffres)
33+
34+
if entropie > 7.5: #Heuristique entropie élevée (L'entropie doit être supérieur à 7.5 pour confirmer le chiffrement robuste caractéristique des algos de chiffrement)
35+
probabilite += 0.4
36+
else:
37+
return 0.0
38+
39+
except FileNotFoundError:
40+
print("Le fichier spécifié n'existe pas.")
41+
return 0.0
42+
43+
return probabilite

0 commit comments

Comments
 (0)