Skip to content

Commit 2513ebd

Browse files
committed
tests aes_gcm
1 parent eb8edb5 commit 2513ebd

File tree

4 files changed

+47
-6
lines changed

4 files changed

+47
-6
lines changed

src/detecteur_crypto.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from .analyzers.blowfish_analyzer import Blowfish_Analyzer
1111
from .analyzers.aes_gcm_analyzer import Aes_Gcm_Analyzer
1212
from .rapport_mission import generer_rapport_mission
13-
13+
from .analyzers.fernet_analyzer import FernetAnalyzer
1414
# Import des modules utilitaries
1515
from utils import est_dechiffre
1616

@@ -42,7 +42,8 @@ def __init__(self):
4242
"AES-CBC": Aes_Cbc_Analyzer(),
4343
"ChaCha20": ChaCha20_Analyzer(),
4444
"Blowfish": Blowfish_Analyzer(),
45-
"AES-GCM": Aes_Gcm_Analyzer()
45+
"AES-GCM": Aes_Gcm_Analyzer(),
46+
"Fernet": FernetAnalyzer(),
4647
}
4748
self.missions_completees: list[dict[str, Union[str, list[ResultatAnalyse], float]]] = []
4849
self.statistiques_globales: dict[str, Union[int, float]] = {

src/utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import math
2+
import re
23
import string
34
from pathlib import Path
45
from typing import Any, Dict, List, TypedDict
@@ -58,7 +59,7 @@ def est_dechiffre(texte:str) -> bool:
5859
if stats['ponctuation_valide'] > 50 :
5960
pourcent += 20
6061

61-
return True if pourcent > 70 else False
62+
return True if pourcent > 80 else False
6263

6364

6465

@@ -119,7 +120,7 @@ def verifier_texte_dechiffre(texte: str) -> Dict[str, Any]:
119120
try:
120121
with open(chemin, 'r', encoding='latin-1') as f:
121122
for ligne in f:
122-
if ligne.strip() == mot:
123+
if re.match(ligne.strip().removesuffix('\n'), mot, re.I):
123124
mots_valides += 1
124125
trouve=True
125126
break
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
_���� ̎��~�lY{�攳F���y�x��FN��fY��k]8]0���ވ�M��[DW�&��W�Z�3�A��� p~�uV�

tests/test_analyzers.py

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
import sys
44
import hashlib
55
from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305
6-
6+
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
7+
from pathlib import Path
78
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
89
sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
910

1011
from src.analyzers.aes_cbc_analyzer import Aes_Cbc_Analyzer
1112
from src.analyzers.chacha20_analyzer import ChaCha20_Analyzer
13+
from src.analyzers.aes_gcm_analyzer import Aes_Gcm_Analyzer
1214

1315

1416
class AesCbcAnalyzerTester(TestCase):
@@ -104,6 +106,42 @@ def test_chacha20_dechiffrer_fichier_non_existant(self):
104106
with self.assertRaises(FileNotFoundError):
105107
self.analyser_chacha.dechiffrer("chemin_invalide.enc", cle_valide)
106108

107-
109+
class AesGcmTester(TestCase) :
110+
_wordlist = "keys/wordlist.txt"
111+
_analyzer=Aes_Gcm_Analyzer()
112+
_fichier="data/mission3.enc"
113+
_fichier_test = Path('tests/fichiers_pour_tests') / 'aes_gcm_invalide.enc'
114+
_texte_test = b"Test effectue pour AesGcm, encore. Nous en sommes a la.fin"
115+
116+
117+
def setUp(self):
118+
"""
119+
Crée un fchier de test crypté en AESGCM pour les tests unitaires
120+
"""
121+
key = AESGCM.generate_key(128)
122+
nonce = os.urandom(12)
123+
aad = os.urandom(16)
124+
texte_chiffre = AESGCM(key).encrypt(nonce, self._texte_test, aad)
125+
with open(self._fichier_test, '+wb') as f:
126+
f.write(nonce)
127+
f.write(texte_chiffre)
128+
f.close()
129+
130+
def test_aesgcm_generer_cles_candidates(self):
131+
#Vérifie que les clés candidates générés par cet algorithme sont une liste de bytes
132+
with self.assertRaises(ValueError):
133+
self.assertIsInstance(self._analyzer.generer_cles_candidates(self._wordlist), list[bytes])
134+
135+
def test_aes_gcm_identifier_algo(self):
136+
#Vérifie que la probabilité retournée pour le fichier mission3.enc est un float et élevée
137+
with self.assertRaises(ValueError):
138+
self.assertIsInstance(self._analyzer.identifier_algo(self._fichier_test), float)
139+
self.assertAlmostEqual(self._analyzer.identifier_algo(self._fichier_test, 0))
140+
141+
def test_aes_gcm_dechiffrer(self):
142+
self.assertIsInstance(self._analyzer.dechiffrer(self._fichier_test), bytes)
143+
144+
145+
108146
if __name__ == '__main__':
109147
main()

0 commit comments

Comments
 (0)