Skip to content

Commit 125d97c

Browse files
authored
Merge branch 'main' into feature/DetecteurCryptoOrchestrateur
2 parents e8d9f12 + c46ee92 commit 125d97c

4 files changed

Lines changed: 68 additions & 10 deletions

File tree

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @mouwaficbdr

.github/workflows/ci.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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"

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

src/crypto_analyzer.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
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

0 commit comments

Comments
 (0)