File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ * @ mouwaficbdr
Original file line number Diff line number Diff line change 1+ name : CI Minimal
2+
3+ on :
4+ pull_request :
5+ branches :
6+ - main
7+
8+ jobs :
9+ dummy :
10+ runs-on : ubuntu-latest
11+ steps :
12+ - uses : actions/checkout@v3
13+ - name : Dummy check
14+ run : echo "✅ OK"
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 1- from abc import ABC
2- class Crypto_analyzers (ABC ):
3- @abs
4- def identifier_algo (self , fichier ):
1+ from abc import ABC , abstractmethod
2+
3+ class CryptoAnalyzer (ABC ):
4+ @abstractmethod
5+ def identifier_algo (self , chemin_fichier_chiffre : str ) -> float :
56 pass
67
7- @abs
8- def dechiffrer (self , fichier , cle ) :
8+ @abstractmethod
9+ def dechiffrer (self , chemin_fichier_chiffre : str , cle_donnee : bytes ) -> bytes :
910 pass
1011
11- @abs
12- def generer_cles_candidates (self , algo ):
13- pass
14-
12+ @abstractmethod
13+ def generer_cles_candidates (self , chemin_dictionnaire : str ) -> 'list[bytes]' :
14+ pass
You can’t perform that action at this time.
0 commit comments