
File Injector è uno script che ti permette di archiviare qualsiasi file in un'immagine usando la steganografia.
File Injector è uno script che ti permette di memorizzare qualsiasi file (.zip, .png, .txt, .gba...) e il suo nome file in un'immagine/audio come rumore, utilizzando la steganografia.
Puoi anche scegliere di crittografare il file di input prima di memorizzarlo.
Quindi, per estrarre il file dall'immagine/audio modificato, NON hai bisogno dell'immagine/audio originale, solo della chiave di crittografia se il file è stato crittografato.
python3 -m pip install -r requirements.txt
Se non funziona, puoi provare:
py -m pip install -r requirements.txt
python3 main.py
Scegli un'immagine/audio di base per memorizzare il file dalla cartella files/base.
Puoi anche aggiungere le tue immagini/audio a questa cartella.
.png o (.jpg/.jpeg), ma verranno convertite in .png durante l'esecuzione dello script..mp3 o .wav, ma verranno convertiti in .mp3 durante l'esecuzione dello script.Scegli un file da memorizzare nell'immagine/audio dalla cartella files/input.
Puoi aggiungere i tuoi file a questa cartella. Possono essere qualsiasi tipo di file.
Scegli un'immagine/audio modificato per estrarre il file dalla cartella files/modified.
Puoi anche aggiungere le tue immagini/audio modificati a questa cartella.
Puoi scegliere una chiave dalla cartella files/$encryption-keys o generarne una lì.
Il file della chiave deve avere l'estensione .key
Non è necessario sceglierne una particolare durante la decifratura di un file; verrà selezionata automaticamente dalla cartella.
Questa immagine 17.1MP contiene un file .zip crittografato da 9MB e il suo nome file memorizzati come rumore.
<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/17"1MP_mod.png" width=500>
Questa immagine 1.7MP contiene un file .zip crittografato da 0.93MB e il suo nome file memorizzati come rumore.
<img src="https://raw.githubusercontent.com/carlospuenteg/file-injector/HEAD/readme-assets/1"7MP_mod.png" width=500>
Questo file audio 42MB contiene un file .zip crittografato da 9MB e il suo nome file memorizzati come rumore.
... 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
Puoi modificare la configurazione nel file config.py.
L'iniezione viene eseguita memorizzando il file nei X bit meno significativi di ogni elemento dell'array creato appiattendo l'array dell'immagine/audio.
| Opzione | Descrizione |
|---|---|
| [0] ESci | Esci dallo script |
| [1] Inietta file | Chiama inject_file_func() |
| [2] Estrai file | Chiama extract_file_func() |
inject_file_func()TEST_MODE == True, utilizzerà l'immagine/audio di base e il file di input predefiniti. Altrimenti, chiederà l'immagine/audio di base e il file di input.get_fernet()inject_file().
extract_file_func()TEST_MODE == True, utilizzerà l'immagine/audio modificato predefinito. Altrimenti, chiederà l'immagine/audio modificato.extract_file()gAAAAA), li decifra con decrypt_contentget_fernet()| Opzione | Descrizione |
|---|---|
| [0] Chiave esistente | Utilizza una chiave esistente |
| [1] Nuova chiave | Genera una nuova chiave |
[0] Chiave esistente
files/$encryption-keys[1] Nuova chiave
decrypt_content()files/$encryption-keys:
inject_file()Restituisce l'array dell'immagine/audio modificato (np.ndarray, con la stessa forma di arr)
extract_file()| Parametro | Tipo | Descrizione |
|---|---|---|
mod_arr_flat | np.ndarray | Immagine/audio modificato appiattito |
Restituisce un dizionario con il file e il nome file estratti, entrambi in formato (bytes)
| Costante | Descrizione | Valore predefinito |
|---|
MOD_PREFIX | Prefisso che avrà l'immagine/audio modificato | "" |
MOD_SUFFIX | Suffisso che avrà l'immagine/audio modificato | "_mod" |
STORE_RANDOM | Memorizza dati casuali nell'immagine modificata in modo che il confine tra la parte con i dati memorizzati e quella senza non sia così evidente | True |
TEST_MODE | Abilita/Disabilita la Modalità Test: Test con immagini/audio e file predefiniti | True |
| Parametro | Tipo | Descrizione |
|---|
arr | np.ndarray | Immagine/audio come array numpy |
file | bytes | File come byte |
filename | bytes | Nome file come byte |
store_random | boolean | Se memorizzare o meno dati casuali nell'immagine/audio modificato |