Skip to content

Commit 94ff070

Browse files
committed
test de l'analyzer Fernet
1 parent 8f20bfc commit 94ff070

File tree

4 files changed

+51
-3
lines changed

4 files changed

+51
-3
lines changed

src/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,4 +194,4 @@ def rangerDico() -> None:
194194
print('Fichier non trouvé.')
195195
# rangerDico()
196196

197-
print(verifier_texte_dechiffre("je talk !a mamamia:?\n"))
197+
# print(verifier_texte_dechiffre("je talk !a mamamia:?\n"))
0 Bytes
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
gAAAAABomRFQlKp52Rye3Z1vgFS_n2BOoG4C9eY2kCSga8HN_OLs7PcjvvAfbLk1WXOwgk0bs8iUzvOSCmiqKRVeintPVEhQNEEUUU1gcCvaS3QOqdIi2dlFcLruMjlXZ0-bWanXro2HI0813g4NArEggiWYE_si-w==

tests/test_analyzers.py

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
1+
import base64
12
from unittest import TestCase, main
23
import os
34
import sys
45
import hashlib
56
from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305
67
from cryptography.hazmat.primitives.ciphers.aead import AESGCM
8+
from cryptography.fernet import Fernet
79
from pathlib import Path
810
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
911

1012
from src.analyzers.aes_cbc_analyzer import Aes_Cbc_Analyzer
1113
from src.analyzers.chacha20_analyzer import ChaCha20_Analyzer
1214
from src.analyzers.aes_gcm_analyzer import Aes_Gcm_Analyzer
15+
from src.analyzers.fernet_analyzer import FernetAnalyzer
16+
1317

1418

1519
class AesCbcAnalyzerTester(TestCase):
@@ -146,7 +150,50 @@ def test_aes_gcm_dechiffrer(self):
146150
resultat = self._analyzer.dechiffrer(self._fichier_test, cle_test)
147151
self.assertIsInstance(resultat, bytes)
148152

149-
153+
class FernetTester(TestCase) :
154+
_wordlist = "keys/wordlist.txt"
155+
_analyzer=FernetAnalyzer()
156+
_fichier_test = Path('tests/fichiers_pour_tests') / 'fernet_invalide.enc'
157+
_texte_test = b"Test effectue pour Fernet, encore. Nous en sommes a la.fin"
158+
_key = os.urandom(32)
150159

160+
def setUp(self):
161+
"""
162+
Crée un fichier pour les tests relatifs à Fernet
163+
"""
164+
try :
165+
with open(self._fichier_test, 'wb') as f:
166+
texte_chiffre = Fernet(base64.urlsafe_b64encode(self._key)).encrypt(self._texte_test)
167+
f.write(texte_chiffre)
168+
f.close()
169+
except FileNotFoundError :
170+
raise
171+
172+
def test_fernet_gk(self):
173+
resultat = self._analyzer.generer_cles_candidates(self._wordlist)
174+
self.assertIsInstance(resultat, list)
175+
# Vérifier que tous les éléments sont des bytes
176+
for cle in resultat:
177+
self.assertIsInstance(cle, bytes)
178+
179+
def test_fernet_id_algo(self):
180+
#Vérifier que seul le fichier mission 5 a plus de 0.8 de score pour l'identification de Fernet
181+
for i in range(5) :
182+
if i+1 != 5 and self._analyzer.identifier_algo(f"mission{i+1}.enc") >= 0.8:
183+
raise Exception('Non correspondance entre probabilité et algorithme.')
184+
185+
def test_dechiffrer(self) :
186+
#Vérifie que le déchiffrement de fernet est opérationnel
187+
resultat = self._analyzer.dechiffrer
188+
self.assertEqual(resultat(self._fichier_test, self._key), self._texte_test)
189+
190+
#Vérifie le cas de clé non correspondante
191+
with self.assertRaises(ValueError) :
192+
self.assertIsInstance(resultat(self._fichier_test, os.urandom(16)), ValueError)
193+
194+
#Vérifie le cas de fichier non trouvé
195+
with self.assertRaises(FileNotFoundError):
196+
self.assertIsInstance(resultat('dohi.txt', os.urandom(32)), FileNotFoundError)
197+
151198
if __name__ == '__main__':
152-
main()
199+
main()

0 commit comments

Comments
 (0)