Выберите изображение или аудионоситель
Выберите, перетащите или вставьте изображение, WAV или MP3 для хранения данных. Большие файлы вмещают больше, а детальные фотографии и музыка лучше скрывают изменения.
Браузерный порт steghide 0.5.1 с обоими методами: pixel/LSB для BMP и PNG, коэффициенты DCT для JPEG — плюс аудионосители PCM WAV и MP3. Скройте файл или сообщение, затем извлеките по парольной фразе.
Файл и секрет не покидают это устройство. Декодирование, встраивание, шифрование и извлечение выполняются в этой вкладке. На сервер ничего не отправляется, поэтому оттуда нечему утечь.
Большие контейнеры вмещают больше: изображения дают примерно байт на восемь пикселей, PCM WAV — байт на шестнадцать отсчётов, MP3 — свободное место в аудиокадрах.
steghide через командную строку — PNG сохраняет тот же массив пикселей, но steghide CLI не читает PNG.
Чтобы раскрыть секрет этой картинки, произнесём заклинание: обведите изображение указателем тремя полными кругами — по часовой стрелке или против — и скрытые данные появятся.
След светится при рисовании, а после каждого замкнутого круга загорается луна. Отпустите указатель или выйдите за изображение — заклинание исчезнет. Нет указателя? Установите фокус на изображение и нажмите Enter.
Здесь появятся имя, размер и статус контрольной суммы извлечённого файла. Текст показывается текстом, картинки — картинками, аудио получает плеер; остальное можно только скачать.
Без установки и отправки: выберите изображение, WAV или MP3, добавьте секрет и сохраните результат.
Выберите, перетащите или вставьте изображение, WAV или MP3 для хранения данных. Большие файлы вмещают больше, а детальные фотографии и музыка лучше скрывают изменения.
Прикрепите файл или введите сообщение, затем задайте парольную фразу. Она определяет места распределения данных и при желании шифрует их.
Сохраните BMP для совместимости со steghide или PNG для меньшего размера. Любой, у кого есть изображение и парольная фраза, сможет извлечь данные.
ImageSteg — порт steghide 0.5.1 на TypeScript с обеими ветвями: pixel/LSB для BMP и PNG и DCT для JPEG. Также он хранит данные аналогичным образом в PCM WAV и в неиспользуемых хвостах кадров MP3. Ни один метод не обходит файл просто по порядку.
Отсчёты объединяются в вершины, а паросочетание минимального веса решает, что изменить, поэтому затрагивается примерно один отсчёт на скрытое значение.
Встроенный энтропийный кодек JPEG читает квантованные коэффициенты DCT, скрывает данные в их чётности и кодирует обратно — на том же этапе, где останавливается libjpeg в steghide. Поддерживаются baseline и progressive.
Перестановка с seed на основе MD5 распределяет данные по всему изображению, поэтому скрытое содержимое не хранится в предсказуемом порядке.
zlib уменьшает данные перед встраиванием, а необязательная CRC32 сразу показывает, можно ли доверять извлечению.
Rijndael в режиме CBC с тем же выводом ключа, что у libmcrypt, сохраняет содержимое в тайне, даже если изображение вызывает подозрения.
Практические ограничения скрытия данных в пикселях изображения.
Совместимость: структура битов, перестановка отсчётов и шифрование Rijndael/CBC соответствуют steghide 0.5.1, поэтому BMP и JPEG можно прочитать через steghide extract -sf image.bmp -p passphrase или -sf image.jpg, а файлы командного steghide — открыть здесь. Формат результата всегда соответствует носителю: JPEG даёт JPEG, поскольку данные находятся в коэффициентах, которые хранит только JPEG. Для пиксельных носителей вместе с BMP предлагается PNG; steghide CLI не читает PNG.
Поддержка JPEG в steghide вызывает функцию libjpeg jpeg_read_coefficients(), которая останавливает декодирование сразу после Huffman, до деквантования и IDCT. Остаются исходные квантованные коэффициенты DCT. Браузеры не предоставляют API для них, поэтому страница использует собственный энтропийный JPEG-кодек, а не встроенный декодер. Поддерживаются baseline и progressive, включая уточняющие сканы последовательного приближения.
jpeg_write_coefficients() , поэтому арифметический исходник на выходе помечается как baseline или progressive.Встраиватель не видит формат файла — он работает только с декодированным массивом пикселей, поэтому метод BMP/LSB steghide переносится на PNG без изменений. Важны четыре детали:
Да. Скрытие и извлечение бесплатны, без регистрации, водяных знаков и искусственного ограничения размера файла.
Нет. Декодирование, встраивание, сжатие и шифрование выполняются локально JavaScript и WebCrypto в браузере. Сервер 73hi ничего не получает.
Любое декодируемое браузером изображение может быть пиксельным носителем, а baseline и progressive JPEG используют ветвь DCT steghide. Формат результата повторяет носитель: JPEG на входе и выходе; пиксельный носитель даёт BMP и копию PNG. Командный steghide читает BMP и JPEG, но не PNG.
В квантованных коэффициентах DCT, как командный steghide. Страница содержит энтропийный JPEG-кодек, декодирующий скан до коэффициентов, меняющий их чётность и кодирующий обратно.
Да. Progressive-файлы декодируются через всю последовательность сканов — спектральный выбор и уточнение последовательным приближением — и записываются так же. Результат остаётся progressive JPEG с исходными коэффициентами.
Поддерживается чтение. Файлы с QM (двоичным арифметическим) кодированием вместо Huffman — SOF9 для sequential, SOF10 для progressive — читаются тем же арифметическим декодером, что и libjpeg, поэтому коэффициенты идентичны. Результат записывается с Huffman, как у steghide.
Примерно байт содержимого на восемь пикселей за вычетом места для заголовка, имени файла и необязательных накладных расходов шифрования. После выбора изображения инструмент покажет доступную ёмкость.
Да, если скачать BMP. Структура битов, перестановка по парольной фразе и шифрование Rijndael/CBC соответствуют steghide 0.5.1.
Данные хранятся в отдельных значениях пикселей. Повторное сжатие, масштабирование, фильтр или перевод в формат с потерями, например JPEG, уничтожает их. Храните исходный BMP или PNG без потерь.
Не двумя встраиваниями в один файл. Второй проход выбирает свои случайные позиции по всему носителю и перезаписывает часть первого содержимого. Поскольку перед шифрованием данные сжимаются, несколько изменённых битов делают всё сообщение нечитаемым — оно теряется полностью, а не частично. Оригинальный командный steghide ведёт себя так же. Повтор той же парольной фразы не помогает: позиции перезаписываются с начала, остаётся только новое сообщение. Для настоящих слоёв вкладывайте файлы: скройте первый секрет в небольшом изображении, скачайте результат, затем скройте весь файл в большем изображении с другой фразой. Каждый слой сохраняется побайтно, поскольку переносится как защищённые данные, а не изменяемые пиксели.
Нет. Загрузка лишь читает байты: JPEG-носители сразу переходят к квантованным DCT без обратного преобразования или повторного квантования, а пиксельные носители декодируются без потерь. Данные остаются нетронутыми. Размер JPEG может немного измениться из-за перезаписи энтропийного кодирования, но это не влияет на содержимое. Можно безопасно открыть чужой подготовленный файл и извлечь секрет.
Да. Встройте уведомление об авторском праве или доказательство владения прямо в фото. Данные находятся в пикселях или коэффициентах JPEG и невидимы при обычном просмотре, поэтому изображением можно делиться публично. При использовании без разрешения скрытая отметка остаётся в файле. Когда вы публикуете ту же картинку на сторонней платформе для фиксации нарушения, опубликованная копия тоже содержит доказательство, которое поможет обосновать удаление или претензию.
Конечно. Спрячьте «Я тебя люблю» или другие трудные для личного разговора слова в обычном повседневном фото, задав парольной фразой день рождения получателя. Отправьте фото и попросите открыть его в ImageSteg (или на 73hi.com/image-steg.html). Только знающий фразу сможет прочитать слова — так можно выразить чувства без неловкости произнесения вслух.