# Mirage

## 📌 Description

Ce projet est un **outil graphique** développé en Python qui permet de :

- **Chiffrer** et **déchiffrer** du texte en utilisant l'algorithme **Fernet** (chiffrement symétrique).
- **Cacher** et **extraire** du texte dans des images (stéganographie).

L'interface utilise **Tkinter** pour une interaction simple et intuitive, avec des zones de texte (`ScrolledText`) pour faciliter le **copier-coller** et la manipulation de données.

---

Dans les répertoires Windows et linux, vous avez les binaires compilés exécutable.

---

## 🛠 Prérequis pour la compilation ou execution du script python

Pour exécuter ce projet, assurez-vous d'avoir installé les dépendances suivantes :


| Dépendance     | Version            | Description                             |
| -------------- | ------------------ | --------------------------------------- |
| Python         | 3.8+               | Langage principal                       |
| `tkinter`      | Inclus avec Python | Bibliothèque pour l'interface graphique |
| `Pillow`       | 9.0.0+             | Traitement des images                   |
| `numpy`        | 1.21.0+            | Calculs numériques                      |
| `cryptography` | 36.0.0+            | Chiffrement Fernet                      |


---

### 🪟 Windows

installer IDE Python3
puis les extentions dans requierements.txt

Puis lancer le script dans IDEpython3.

### 🐧 Linux

### Installation des dépendances

1. **Python** :
   ```bash
   apt install python3 python3-pip python3-tk
   ```
2. **Cloner le dépôt** (si applicable) :
  ```bash
   git clone fra1od.freeboxos.fr/Mirage
   cd Mirage
  ```
3. **Créer un environnement virtuel** (recommandé) :
  ```bash
   python -m venv venv
   source venv/bin/activate  # Linux/Mac
   venv\Scripts\activate     # Windows
  ```
4. **Installer les dépendances** :
  ```bash
   pip install -r requirements.txt
  ```
  &nbsp;

---

## 🚀 Utilisation

### 1. Lancer l'application

Exécutez le script principal :

```bash
python3 mirage.py
```

### 2. Fonctionnalités disponibles

- **Chiffrement/Déchiffrement** :
  - Saisissez du texte dans la zone prévue.
  - Cliquez sur **Encoder** pour chiffrer le texte.
  - Cliquez sur **Décoder** pour déchiffrer le texte (nécessite la même clé).
- **Stéganographie** *(si implémenté)* :
  - Chargez une image via le bouton **Ouvrir une image**.
  - Cachez du texte dans l'image ou extrayez-le.

### 3. Build

près-requis pyinstaller


pour windows le .bat
pour linux le .sh


---

## 🔐 Sécurité

- **Mot de passe** : Le chiffrement utilise une clé générée à partir d'un mot de passe (par défaut : `votre_mot_de_passe`).  
**Pour plus de sécurité**, modifiez le code pour demander le mot de passe à l'utilisateur via une boîte de dialogue.
- **Clé Fernet** : La clé est dérivée du mot de passe en utilisant **SHA-256** et encodée en **base64**.

---

## 📂 Structure du projet

```
.
├── mirage.py          # Script principal de l'application
├── README.md          # Documentation (ce fichier)
├── requirements.txt   # Liste des dépendances (optionnel)
├── mirage_icon.png    # image pour icon linux
├── mirage_test.png    # image pour les tests de chiffrement
├── mirage.ico         # icone 
├── LICENSE            # la license MIT
├── build.bat          # compilation du binaire executable pour windows
└── build.sh           # compilation du binaire executable pour linux
```

 build.bat 	Téléverser les fichiers vers "/" 	il y a 1 heure
build.sh 	Téléverser les fichiers vers "/" 	il y a 1 heure
LICENSE 	Initial commit 	il y a 1 heure
mirage_icon.png 	Téléverser les fichiers vers "/" 	il y a 1 heure
mirage_test.png 	Téléverser les fichiers vers "/" 	il y a 1 heure
mirage.ico 	Téléverser les fichiers vers "/" 	il y a 1 heure
mirage.py 	Téléverser les fichiers vers "/" 	il y a 1 heure
README.md 	Actualiser README.md 	il y a 2 minutes
requierments.txt 	Téléverser les fichiers vers "/" 


---

## 🤝 Contribution

Les contributions sont les bienvenues ! Ouvrez une **issue** ou soumettez une **pull request** pour :

- Ajouter des fonctionnalités (ex : support de fichiers audio).
- Améliorer l'interface utilisateur.
- Corriger des bugs.

---

## ⚠️ Limitations

- **Pas de gestion des erreurs avancée** : Les erreurs de décodage (ex : clé incorrecte) sont affichées dans une boîte de dialogue.
- **Stéganographie basique** : Actuellement, seul le chiffrement de texte est implémenté. La partie stéganographie (cacher du texte dans des images) peut être ajoutée.

---

## 📜 Licence

Ce projet est sous licence **MIT**. Vous êtes libre de l'utiliser, le modifier et le distribuer.