
File Injector ist ein Skript, mit dem Sie jede beliebige Datei mithilfe von Steganographie in einem Bild speichern können.
File Injector ist ein Skript, mit dem Sie jede Datei (.zip, .png, .txt, .gba...) und ihren Dateinamen in einem Bild/Audio als Rauschen speichern können, mittels Steganographie.
Sie können auch wählen, die Eingabedatei vor dem Speichern zu verschlüsseln.
Um die Datei aus dem modifizierten Bild/Audio zu extrahieren, benötigen Sie NICHT das Originalbild/-audio, sondern nur den Verschlüsselungsschlüssel, falls die Datei verschlüsselt wurde.
python3 -m pip install -r requirements.txt
Falls das nicht funktioniert, versuchen Sie:
py -m pip install -r requirements.txt
python3 main.py
Wählen Sie ein Basisbild/-audio zum Speichern der Datei aus dem Ordner files/base aus.
Sie können auch Ihre eigenen Bilder/Audios in diesen Ordner hinzufügen.
.png oder (.jpg/.jpeg) sein, werden jedoch beim Ausführen des Skripts in .png konvertiert..mp3 oder .wav sein, werden jedoch beim Ausführen des Skripts in .mp3 konvertiert.Wählen Sie eine Datei, die im Bild/Audio gespeichert werden soll, aus dem Ordner files/input aus.
Sie können Ihre eigenen Dateien in diesen Ordner hinzufügen. Es können beliebige Dateitypen sein.
Wählen Sie ein modifiziertes Bild/Audio zum Extrahieren der Datei aus dem Ordner files/modified aus.
Sie können auch Ihre eigenen modifizierten Bilder/Audios in diesen Ordner hinzufügen.
Sie können einen Schlüssel aus dem Ordner files/$encryption-keys auswählen oder dort einen generieren.
Die Schlüsseldatei muss die Erweiterung .key haben.
Beim Entschlüsseln einer Datei müssen Sie keinen bestimmten auswählen; er wird automatisch aus dem Ordner ausgewählt.
Dieses 17,1 MP Bild enthält eine verschlüsselte 9 MB .zip-Datei und ihren Dateinamen, die als Rauschen gespeichert sind.
<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/17"1MP_mod.png" width=500>
Dieses 1,7 MP Bild enthält eine verschlüsselte 0,93 MB .zip-Datei und ihren Dateinamen, die als Rauschen gespeichert sind.
<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/1"7MP_mod.png" width=500>
Diese 42 MB Audiodatei enthält eine verschlüsselte 9 MB .zip-Datei und ihren Dateinamen, die als Rauschen gespeichert sind.
... File-Injector % python3 main.py
[0] EXIT
[1] Inject file
[2] Extract file
Option: 1
File to be stored: images.zip
Filename of the base image: 2'2MP
Encrypt the file? (y/n): y
Do you want to use an existing key or generate a new one?
[0] Existing key
[1] New key
Option: 1
Filename of the new key file (blank for default):
Key generated and saved to files/$encryption-keys/key9.key
Preparing...
Modified bits per channel: 2
Image modification: 1.56%
✅ Storing... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [100.0%]
Generating random values...
Storing random values...
Reshaping...
Modified image saved in files/modified-images/2'2MP_mod.png
Done in 7.5892 seconds
... File-Injector % python3 main.py
[0] EXIT
[1] Inject file
[2] Extract file
Option: 2
Filename of the modified image: 2'2MP_mod
Preparing...
Retrieving filename...
Retrieving input file...
Decrypted with "files/$encryption-keys/key2.key"
Output file saved in files/output-files/images.zip
Done in 1.4083 seconds
Sie können die Konfiguration in der Datei config.py ändern.
Die Injektion erfolgt durch Speichern der Datei in den X niederwertigsten Bits jedes Elements des Arrays, das durch Abflachen des Bild-/Audio-Arrays erstellt wurde.
| Option | Beschreibung |
|---|---|
| [0] EXIT | Skript beenden |
| [1] Inject file | Ruft inject_file_func() auf |
| [2] Extract file | Ruft extract_file_func() auf |
inject_file_func()TEST_MODE == True ist, wird das vordefinierte Basisbild/-audio und die Eingabedatei verwendet. Andernfalls werden Sie nach dem Basisbild/-audio und der Eingabedatei gefragt.get_fernet() holeninject_file() in das Bild/Audio zu injizieren.
extract_file_func()TEST_MODE == True ist, wird das vordefinierte modifizierte Bild/Audio verwendet. Andernfalls werden Sie nach dem modifizierten Bild/Audio gefragt.extract_file() extrahierengAAAAA), entschlüsseln Sie sie mit decrypt_contentget_fernet()| Option | Beschreibung |
|---|---|
| [0] Vorhandener Schlüssel | Vorhandenen Schlüssel verwenden |
| [1] Neuer Schlüssel | Neuen Schlüssel generieren |
[0] Vorhandener Schlüssel
files/$encryption-keys aus[1] Neuer Schlüssel
decrypt_content()files/$encryption-keys:
inject_file()Gibt das modifizierte Bild/Audio-Array zurück (np.ndarray, mit derselben Form wie arr)
extract_file()| Parameter | Typ | Beschreibung |
|---|---|---|
mod_arr_flat | np.ndarray | Abgeflachtes modifiziertes Bild/Audio |
Gibt ein dictionary mit der extrahierten Datei und dem Dateinamen zurück, beide im (bytes)-Format
| Konstante | Beschreibung | Standardwert |
|---|
MOD_PREFIX | Präfix, den das modifizierte Bild/Audio haben wird | "" |
MOD_SUFFIX | Suffix, den das modifizierte Bild/Audio haben wird | "_mod" |
STORE_RANDOM | Speichere zufällige Daten im modifizierten Bild, damit die Grenze zwischen dem Teil mit gespeicherten Daten und dem Teil ohne nicht so offensichtlich ist | True |
TEST_MODE | Aktiviert/Deaktiviert den Testmodus: Test mit vordefinierten Bildern/Audios und Dateien | True |
| Parameter | Typ | Beschreibung |
|---|
arr | np.ndarray | Bild/Audio als numpy-Array |
file | bytes | Datei als Bytes |
filename | bytes | Dateiname als Bytes |
store_random | boolean | Ob zufällige Daten im modifizierten Bild/Audio gespeichert werden sollen oder nicht |