Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
File-Injector — File Injector — это скрипт, который позволяет хранить любой файл в изображении с помощью стеганографии. | Kitploit
Инструменты/GitHubGitHub/carlospuenteg/file-injector
Инструменты шифрования/дешифрованияЭксфильтрация данныхСтеганографияКриптография
GitHubcarlospuenteg/file-injector

File-Injector

File Injector — это скрипт, который позволяет хранить любой файл в изображении с помощью стеганографии.

Репозиторий
443293 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Инжектор файлов

Если вы хотите использовать предыдущую версию (1.0.2 или ниже), где для извлечения файла требовалось исходное изображение, вы можете скачать её здесь.

Содержание

  • 1. Описание
  • 2. Начало работы
    • Установка зависимостей
    • Запуск скрипта
    • Выбор входных данных
      • Выбор базового изображения/аудио
      • Выбор входного файла
      • Выбор/генерация ключа шифрования
  • 3. Результаты
  • 4. Примеры использования
    • Внедрение
    • Извлечение
  • 5. Конфигурация
  • 6. Что делает скрипт
  • 7. Как это работает
    • Опции
    • inject_file_func
    • extract_file_func
    • get_fernet
    • decrypt_content
    • inject_file
    • extract_file

1. Описание

File Injector — это скрипт, который позволяет хранить любой файл (.zip, .png, .txt, .gba...) и его имя в изображении/аудио в виде шума, используя стеганографию.

Вы также можете зашифровать входной файл перед сохранением.

Затем для извлечения файла из изменённого изображения/аудио НЕ требуется исходное изображение/аудио, достаточно ключа шифрования, если файл был зашифрован.

2. Начало работы

Установка зависимостей

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

Если это не сработает, попробуйте:

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

Запуск скрипта

root@kitploit:~
python3 main.py

Выбор входных данных

Выбор базового изображения/аудио

Выберите базовое изображение/аудио для хранения файла из папки files/base.

Вы также можете добавить свои изображения/аудио в эту папку.

  • Изображения могут быть .png или (.jpg/.jpeg), но при запуске скрипта они будут преобразованы в .png.
  • Аудиофайлы должны быть .mp3 или .wav, но при запуске скрипта они будут преобразованы в .mp3.

Выбор входного файла

Выберите файл для сохранения в изображении/аудио из папки files/input.

Вы можете добавить свои файлы в эту папку. Это могут быть файлы любого типа.

Выбор изменённого изображения/аудио

Выберите изменённое изображение/аудио для извлечения файла из папки files/modified.

Вы также можете добавить свои изменённые изображения/аудио в эту папку.

Выбор/генерация ключа шифрования

Вы можете выбрать ключ из папки files/$encryption-keys или сгенерировать его там.

Файл ключа должен иметь расширение .key.

Вам не нужно выбирать конкретный ключ при расшифровке файла — он будет выбран автоматически из папки.

3. Результаты

Это изображение 17,1 МП содержит зашифрованный 9 МБ .zip файл и его имя, сохранённые как шум.

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

Это изображение 1,7 МП содержит зашифрованный 0,93 МБ .zip файл и его имя, сохранённые как шум.

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

Этот аудиофайл 42 МБ содержит зашифрованный 9 МБ .zip файл и его имя, сохранённые как шум.

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

4. Примеры использования

Внедрение

root@kitploit:~
... 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

Извлечение

root@kitploit:~
... 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

5. Конфигурация

Вы можете изменить конфигурацию в файле config.py.

6. Что делает скрипт

Внедрение выполняется путём сохранения файла в X младших битах каждого элемента массива, полученного уплощением (flatten) массива изображения/аудио.

  • Каждый элемент имеет 8 бит (если базовый файл — изображение) или 16 бит (если базовый файл — аудио).
  • Этот скрипт изменяет от 1 до всех битов каждого элемента в зависимости от размера сохраняемого файла по сравнению с базовым изображением/аудио.
  • Если вы сохраняете больший файл или базовое изображение/аудио меньше, будет изменено больше битов, и изменения будут более заметны.
  • Если вы сохраняете меньший файл или базовое изображение/аудио больше, будет изменено меньше битов, и изменения будут менее заметны.
  • Если базовое изображение/аудио слишком мало для сохранения файла, скрипт остановится и предупредит вас.
  • Если вы решите зашифровать файл, его размер увеличится примерно на 1/3.

7. Как это работает

Опции

ОпцияОписание
[0] EXITВыход из скрипта
[1] Inject fileВызывает inject_file_func()
[2] Extract fileВызывает extract_file_func()

inject_file_func()

  1. Если TEST_MODE == True, используются предопределённые базовое изображение/аудио и входной файл. Иначе запрашиваются базовое изображение/аудио и входной файл.
  2. Чтение файла (в байтах)
  3. Чтение изображения/аудио и сохранение в массив numpy
  4. Чтение имени файла (в байтах)
  5. Если пользователь хочет зашифровать файл:
    1. Получение ключа с помощью get_fernet()
    2. Шифрование файла и имени файла
  6. Попытка внедрить файл и имя файла в изображение/аудио с помощью inject_file()
    1. Если изображение/аудио слишком мало для хранения файла, вызывается ошибка
    2. Иначе возвращается изменённое изображение/аудио
  7. Сохранение изменённого изображения/аудио

extract_file_func()

  1. Если TEST_MODE == True, используется предопределённое изменённое изображение/аудио. Иначе запрашивается изменённое изображение/аудио.
  2. Чтение изменённого изображения/аудио
  3. Извлечение файла и имени файла в виде байтов с помощью extract_file()
  4. Если файл и имя файла были зашифрованы (начинаются с gAAAAA), они расшифровываются с помощью decrypt_content
  5. Декодирование имени файла в UTF-8
  6. Сохранение файла с декодированным именем

get_fernet()

ОпцияОписание
[0] Existing keyИспользовать существующий ключ
[1] New keyСгенерировать новый ключ

[0] Existing key

  1. Выбор ключа для использования из папки files/$encryption-keys

[1] New key

  1. Выбор имени файла для нового ключа (или оставить пустым для имени по умолчанию, например key8.key)
  2. Генерация нового ключа и сохранение с выбранным именем
  3. Возврат объекта Fernet с новым ключом

decrypt_content()

  1. Для каждого ключа в папке files/$encryption-keys:
    1. Попытка расшифровать файл и имя файла с его помощью
    2. Если возникает InvalidToken:
      1. Это означает, что ключ не подходит
      2. Переход к следующему ключу
    3. Иначе возврат ключа
  2. Если ни один ключ не подошёл, вызывается исключение

inject_file()

Возвращает массив изменённого изображения/аудио (np.ndarray той же формы, что и arr)

extract_file()

ПараметрТипОписание
mod_arr_flatnp.ndarrayУплощённый массив изменённого изображения/аудио

Возвращает словарь с извлечёнными файлом и именем файла, оба в формате (bytes)

Скачать инструмент
КонстантаОписаниеЗначение по умолчанию
MOD_PREFIXПрефикс, который будет добавлен к изменённому изображению/аудио""
MOD_SUFFIXСуффикс, который будет добавлен к изменённому изображению/аудио"_mod"
STORE_RANDOMСохранять случайные данные в изменённом изображении, чтобы граница между частью с сохранёнными данными и частью без них была не так заметнаTrue
TEST_MODEВключает/отключает тестовый режим: тестирование с предопределёнными изображениями/аудио и файламиTrue
ПараметрТипОписание
arrnp.ndarrayИзображение/аудио в виде массива numpy
filebytesФайл в виде байтов
filenamebytesИмя файла в виде байтов
store_randombooleanСохранять ли случайные данные в изменённом изображении/аудио