Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
File-Injector — File Injector est un script qui vous permet de stocker n'importe quel fichier dans une image en utilisant la stéganographie | Kitploit
Outils/GitHubGitHub/carlospuenteg/file-injector
Outils de Chiffrement/DéchiffrementExfiltration de DonnéesStéganographieCryptographie
GitHubcarlospuenteg/file-injector

File-Injector

File Injector est un script qui vous permet de stocker n'importe quel fichier dans une image en utilisant la stéganographie

Voir le dépôt
44329il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

File Injector

Si vous souhaitez utiliser une version précédente (1.0.2 ou inférieure), où vous aviez besoin de l'image originale pour extraire le fichier, vous pouvez la télécharger ici.

Sommaire

  • 1. Description
  • 2. Pour commencer
    • Installer les dépendances
    • Exécuter le script
    • Choisir l'entrée
      • Choisir une image/audio de base
      • Choisir un fichier d'entrée
      • Choisir/Générer une clé de chiffrement
  • 3. Résultats
  • 4. Exemples d'utilisation
    • Injection
    • Extraction
  • 5. Configuration
  • 6. Ce qu'il fait
  • 7. Comment ça marche
    • Options
    • inject_file_func
    • extract_file_func
    • get_fernet
    • decrypt_content
    • inject_file
    • extract_file

1. Description

File Injector est un script qui vous permet de stocker n'importe quel fichier (.zip, .png, .txt, .gba...) ainsi que son nom de fichier dans une image/audio sous forme de bruit, en utilisant la stéganographie.

Vous pouvez également choisir de chiffrer le fichier d'entrée avant de le stocker.

Ensuite, pour extraire le fichier de l'image/audio modifiée, vous n'avez PAS besoin de l'image/audio originale, seulement de la clé de chiffrement si le fichier a été chiffré.

2. Pour commencer

Installer les dépendances

root@kitploit:~
python3 -m pip install -r requirements.txt

Si cela ne fonctionne pas, vous pouvez essayer :

root@kitploit:~
py -m pip install -r requirements.txt

Exécuter le script

root@kitploit:~
python3 main.py

Choisir l'entrée

Choisir une image/audio de base

Choisissez une image/audio de base pour stocker le fichier dans le dossier files/base.

Vous pouvez également ajouter vos propres images/audios dans ce dossier.

  • Les images peuvent être .png ou (.jpg/.jpeg), mais elles seront converties en .png lors de l'exécution du script.
  • Les audios doivent être .mp3 ou .wav, mais ils seront convertis en .mp3 lors de l'exécution du script.

Choisir un fichier d'entrée

Choisissez un fichier à stocker dans l'image/audio depuis le dossier files/input.

Vous pouvez ajouter vos propres fichiers dans ce dossier. Ils peuvent être de n'importe quel type.

Choisir une image/audio modifiée

Choisissez une image/audio modifiée pour extraire le fichier depuis le dossier files/modified.

Vous pouvez également ajouter vos propres images/audios modifiées dans ce dossier.

Choisir/Générer une clé de chiffrement

Vous pouvez choisir une clé dans le dossier files/$encryption-keys ou en générer une dans ce dossier.

Le fichier de clé doit avoir l'extension .key

Vous n'avez pas besoin d'en choisir une particulière lors du déchiffrement d'un fichier, elle sera sélectionnée automatiquement dans le dossier.

3. Résultats

Cette image 17,1 MP contient un fichier .zip chiffré de 9 Mo ainsi que son nom de fichier stocké sous forme de bruit.

<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/17"1MP_mod.png" width=500>

Cette image 1,7 MP contient un fichier .zip chiffré de 0,93 Mo ainsi que son nom de fichier stocké sous forme de bruit.

<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/1"7MP_mod.png" width=500>

Ce fichier audio de 42 Mo contient un fichier .zip chiffré de 9 Mo ainsi que son nom de fichier stocké sous forme de bruit.

https://user-images.githubusercontent.com/65092569/202014519-24514110-4bd2-4c2b-9307-237964df0c2b.mp4

4. Exemples d'utilisation

Injection

root@kitploit:~
... File-Injector % python3 main.py
[0] QUITTER
[1] Injecter un fichier
[2] Extraire un fichier

Option : 1
Fichier à stocker : images.zip
Nom de l'image de base : 2'2MP
Chiffrer le fichier ? (o/n) : o

Voulez-vous utiliser une clé existante ou en générer une nouvelle ?
[0] Clé existante
[1] Nouvelle clé

Option : 1
Nom du nouveau fichier de clé (laisser vide par défaut) : 
Clé générée et sauvegardée dans files/$encryption-keys/key9.key

Préparation...

Bits modifiés par canal : 2
Modification de l'image : 1,56 %

✅ Stockage... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [100,0 %]

Génération de valeurs aléatoires...

Stockage de valeurs aléatoires...

Reformation...

Image modifiée sauvegardée dans files/modified-images/2'2MP_mod.png

Terminé en 7,5892 secondes

Extraction

root@kitploit:~
... File-Injector % python3 main.py
[0] QUITTER
[1] Injecter un fichier
[2] Extraire un fichier

Option : 2
Nom de l'image modifiée : 2'2MP_mod

Préparation...

Récupération du nom de fichier...

Récupération du fichier d'entrée...
Déchiffré avec "files/$encryption-keys/key2.key"

Fichier de sortie sauvegardé dans files/output-files/images.zip

Terminé en 1,4083 secondes

5. Configuration

Vous pouvez modifier la configuration dans le fichier config.py.

6. Ce qu'il fait

L'injection consiste à stocker le fichier dans les X bits les moins significatifs de chaque élément du tableau créé en aplatissant le tableau de l'image/audio.

  • Chaque élément possède 8 bits (si le fichier de base est une image) ou 16 bits (si le fichier de base est un audio)
  • Ce script modifie de 1 à tous les bits de chaque élément, en fonction de la taille du fichier à stocker par rapport à l'image/audio de base.
  • Si vous stockez un fichier plus grand ou si l'image/audio de base est plus petite, plus de bits seront modifiés et les modifications seront plus visibles.
  • Si vous stockez un fichier plus petit ou si l'image/audio de base est plus grande, moins de bits seront modifiés et les modifications seront moins visibles.
  • Si l'image/audio de base est trop petite pour stocker le fichier, le script s'arrêtera et vous avertira.
  • Si vous choisissez de chiffrer le fichier, sa taille augmentera d'environ 1/3.

7. Comment ça marche

Options

OptionDescription
[0] QUITTERQuitter le script
[1] Injecter un fichierAppelle inject_file_func()
[2] Extraire un fichierAppelle extract_file_func()

inject_file_func()

  1. Si TEST_MODE == True, il utilisera l'image/audio de base et le fichier d'entrée prédéfinis. Sinon, il demandera l'image/audio de base et le fichier d'entrée.
  2. Lire le fichier (en octets)
  3. Lire l'image/audio et la stocker dans un tableau numpy
  4. Lire le nom du fichier (en octets)
  5. Si l'utilisateur souhaite chiffrer le fichier :
    1. Obtenir la clé avec get_fernet()
    2. Chiffrer le fichier et le nom du fichier
  6. Essayer d'injecter le fichier et le nom du fichier dans l'image/audio avec inject_file().
    1. Si l'image/audio est trop petite pour stocker le fichier, lever une erreur
    2. Sinon, retourner l'image/audio modifiée.
  7. Sauvegarder l'image/audio modifiée

extract_file_func()

  1. Si TEST_MODE == True, il utilisera l'image/audio modifiée prédéfinie. Sinon, il demandera l'image/audio modifiée.
  2. Lire l'image/audio modifiée
  3. Extraire le fichier et le nom du fichier sous forme d'octets avec extract_file()
  4. Si le fichier et le nom du fichier ont été chiffrés (ils commencent par gAAAAA), les déchiffrer avec decrypt_content
  5. Décoder le nom du fichier en UTF-8
  6. Sauvegarder le fichier avec le nom de fichier décodé

get_fernet()

OptionDescription
[0] Clé existanteUtiliser une clé existante
[1] Nouvelle cléGénérer une nouvelle clé

[0] Clé existante

  1. Choisir une clé à utiliser depuis le dossier files/$encryption-keys

[1] Nouvelle clé

  1. Choisir un nom de fichier pour la nouvelle clé (ou laisser vide pour le nom par défaut (ex. key8.key))
  2. Générer une nouvelle clé et la sauvegarder avec le nom choisi
  3. Retourner l'objet Fernet avec la nouvelle clé

decrypt_content()

  1. Pour chaque clé dans le dossier files/$encryption-keys :
    1. Essayer de déchiffrer le fichier et le nom du fichier avec celle-ci
    2. Si InvalidToken est levée :
      1. Cela signifie que la clé n'est pas la bonne
      2. Essayer avec une autre clé
    3. Sinon, retourner la clé
  2. Si aucune clé n'est trouvée, lever une Exception

inject_file()

Retourne le tableau de l'image/audio modifiée (np.ndarray, de même forme que arr)

extract_file()

ParamètreTypeDescription
mod_arr_flatnp.ndarrayImage/audio modifiée aplatie

Retourne un dictionnaire contenant le fichier et le nom du fichier extraits, tous deux au format (bytes)

Télécharger l’outil
ConstanteDescriptionValeur par défaut
MOD_PREFIXPréfixe que l'image/audio modifiée aura""
MOD_SUFFIXSuffixe que l'image/audio modifiée aura"_mod"
STORE_RANDOMStocker des données aléatoires dans l'image modifiée pour que la limite entre la partie avec les données stockées et la partie sans soit moins évidenteTrue
TEST_MODEActive/Désactive le mode test : Tester avec des images/audios et des fichiers prédéfinisTrue
ParamètreTypeDescription
arrnp.ndarrayImage/audio sous forme de tableau numpy
filebytesFichier sous forme d'octets
filenamebytesNom du fichier sous forme d'octets
store_randombooleanIndique s'il faut stocker ou non des données aléatoires dans l'image/audio modifiée