Назад к обновлениям
UpdatedAug 11, 2026

jdvrif — Updated!

Инструмент стеганографии для изображений JPG

Поделиться

jdvrif

jdvrif — это быстрый и простой в использовании инструмент стеганографии для командной строки, предназначенный для скрытия и извлечения файлов любого типа с помощью изображения в формате JPG.

Также доступна веб-версия, которую можно использовать сразу, как удобную альтернативу загрузке и компиляции исходного кода CLI. Загрузка файлов на веб-версию ограничена 20MB.

Для тех, кто интересуется языком Rust, доступен экспериментальный порт jdvrif-rs.

Demo Image
Демонстрационное изображение: «Место сокрытия» / PIN: 2190398302048725932

В отличие от распространённого метода LSB-стеганографии, при котором данные скрываются в пикселях изображения-носителя, jdvrif в основном скрывает данные внутри сегментов приложения изображения JPG (ICC, EXIF, XMP и т. д.).

Исключением является режим скрытия для платформы Reddit (-r), где используется метод стеганографии QIM (модуляция индекса квантования в DCT-области JPEG), поскольку это единственный метод хранения, который в настоящее время работает для Reddit.

Вы можете скрыть файл любого типа размером до 2GB в режиме скрытия по умолчанию, хотя другие режимы скрытия для платформ и совместимые сайты (перечисленные ниже) имеют свои собственные гораздо меньшие ограничения по размеру и *другие требования.

Для увеличения ёмкости хранилища и повышения безопасности ваш встроенный файл данных сжимается с помощью libdeflate/zlib — если только это не уже сжатый тип файла размером более 10 МБ — и шифруется с помощью XChaCha20-Poly1305 с использованием криптографической библиотеки libsodium.

jdvrif частично основан на методе, реализованном исследователем безопасности Дэвидом Бьюкененом.

Компиляция и использование (Linux)

$ sudo apt update
$ sudo apt install g++ cmake ninja-build util-linux libsodium-dev libturbojpeg0-dev zlib1g-dev libdeflate-dev

$ chmod +x compile_jdvrif.sh
$ ./compile_jdvrif.sh

$ sudo cp jdvrif /usr/bin
$ jdvrif 

Usage: jdvrif conceal [-b] <cover_image> <secret_file>
       jdvrif recover <cover_image>  
       jdvrif --info

$ jdvrif conceal your_cover_image.jpg your_secret_file.doc
 
Platform compatibility for output image:-

  ✓ X-Twitter
  ✓ Tumblr
  ✓ Mastodon
  ✓ Pixelfed
  ✓ PostImage
  ✓ ImgBB
  ✓ ImgPile
  ✓ Flickr
  
Saved "file-embedded" JPG image: jrif_4e87c566c.jpg (143029 bytes).

Recovery PIN: [***2166776980318349924***]

Important: Keep your PIN safe, so that you can extract the hidden file.

Complete!
        
$ jdvrif recover jrif_4e87c566c.jpg

PIN: *******************

Extracted hidden file: your_secret_file.doc (6165 bytes).

Complete! Please check your file.

Совместимые платформы

******************
Примечание: Bluesky теперь по умолчанию сохраняет изображения в формате WEBP.

Чтобы сохранить изображение в формате JPG, чтобы вы могли по-прежнему извлекать скрытые данные с помощью jdvrif.
Сначала нажмите на изображение в посте, чтобы открыть его, затем щёлкните правой кнопкой мыши по изображению. В меню выберите Открыть изображение в новой вкладке.

Выберите новую вкладку и в адресной строке перейдите в конец адреса, добавьте @jpg и нажмите Enter.
Щёлкните правой кнопкой мыши по изображению и в меню выберите Сохранить изображение как...

Теперь ваше изображение должно быть загружено в формате JPG, который будет работать с jdvrif.

Если вам нужен инструмент для скрытия данных с помощью изображений WEBP для публикации на Bluesky, вы можете использовать мой инструмент стеганографии для WEBP — CLI-утилиту wbpdv
******************

Ограничение размера публикации измеряется совокупным размером изображения-носителя + сжатого файла данных:

● Flickr (200MB), ImgPile (100MB), ImgBB (32MB),
● PostImage (32MB), Pixelfed (15MB).

Ограничение размера измеряется только размером сжатого файла данных:

● Mastodon (~6MB), Tumblr (~64KB), X-Twitter (~10KB).

Например, для Mastodon, если ваше изображение-носитель имеет размер 1MB, вы всё равно можете встроить файл данных размером до ~6MB.

*Другое: платформа Bluesky имеет отдельные ограничения по размеру для изображения-носителя и сжатого скрытого файла данных:

● Bluesky (опция -b). Максимальный размер изображения-носителя (2 000 000 байт / ~1.9MB). Максимальный размер вашего сжатого скрытого файла данных (полезной нагрузки) (~171KB).

Итоговое встроенное изображение-носитель (изображение-носитель + скрытый файл) не должно превышать 2 000 000 байт (~1.9MB). Для публикации изображений на Bluesky требуется скрипт "create_bsky_post.py". Более подробная информация об этом скрипте ниже на странице.

● Reddit (опция -r). Хотя платформа Reddit имеет ограничение на загрузку изображений в 20MB, ёмкость хранилища данных для изображения-носителя значительно меньше и зависит от размеров изображения.

Например, изображение-носитель с размерами 1024x1024 может хранить только ~6KB данных, изображение с размерами 4096x4096 может хранить ~109KB, а изображение с максимальными размерами 6324×6324 может хранить ~254KB.

Для таких платформ, как X-Twitter, Reddit и Tumblr, которые имеют небольшие ограничения по размеру данных, вы можете сосредоточиться на данных, которые хорошо сжимаются, например, на текстовых файлах и т. д.

https://github.com/user-attachments/assets/c8c38e6d-ea23-4d67-98d9-cebdcd82b449

https://github.com/user-attachments/assets/88aaa5f7-3272-4d0c-aa59-1a5bfe2f08dc

Аргументы режима jdvrif:

conceal — Сжимает, шифрует и встраивает ваш секретный файл данных в изображение-носитель JPG.
recover — Расшифровывает, распаковывает и извлекает скрытый файл данных из изображения-носителя JPG.

Опции платформы для режима conceal jdvrif:

"-r" Чтобы создавать совместимые изображения JPG со "встроенным файлом" для публикации на платформе Reddit, вы должны использовать опцию -r с режимом conceal.

$ jdvrif conceal -r my_image.jpg hidden.doc

Эти изображения совместимы только для публикации на Reddit. Ваш встроенный файл данных будет удалён, если изображение будет опубликовано на другой платформе.

При сохранении/загрузке изображения с Reddit обязательно нажмите на изображение в посте, чтобы полностью развернуть его, перед сохранением.

https://github.com/user-attachments/assets/9f1b4607-e7f1-4c5f-8929-b42c1a85bb88

"-b" Чтобы создавать совместимые изображения JPG со "встроенным файлом" для публикации на платформе Bluesky, вы должны использовать опцию -b с режимом conceal.

$ jdvrif conceal -b my_image.jpg hidden.doc

Категории