Привет, Хабр! Сегодня я приглашаю вас в путешествие во времени. Туда, где не было привычных окон и гигабайт оперативной памяти, а цифровой вселенной правил он — MS-DOS. В этом мире, где каждый байт был на счету, родилась и расцвела своя, особая форма искусства — стеганография, искусство сокрытия тайны на самом видном месте, а главным инструментом исследователя был легендарный Norton Commander.

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

Философия цифрового партизана в мире дискет

Стеганография стара как мир. Древние греки выбривали рабу голову, писали донесение и ждали, пока отрастут волосы. Суть не в том, чтобы зашифровать послание, а в том, чтобы скрыть сам факт его существования. Это не криптография, где враг видит непонятный набор символов. Это игра в прятки, где сам факт общения является секретом.

В эпоху MS-DOS эта философия обрела новую жизнь. Не было SSL, мессенджеров со сквозным шифрованием или анонимных сетей. Любой обмен информацией на дискетах или через редкие BBS (Bulletin Board System) был словно разговор на людной площади. Именно в этих условиях стеганография стала способом обрести личное, суверенное пространство. Спрятать дневник, пароли или послание другу в безобидной на вид картинке — в этом был акт тихой, элегантной анархии.

Театр действий: Norton Commander и 640 килобайт

Чтобы понять гениальность тех методов, нужно вспомнить контекст. Жесткий диск на 20 мегабайт был роскошью. Стандарт в 640 КБ оперативной памяти был суровой реальностью. В таких условиях сама идея "спрятать" что-то казалась абсурдной.

Но именно ограничения порождали творчество. Неэффективность файловой системы FAT, избыточность форматов, недокументированные возможности — всё это становилось полем для игр разума. И главным швейцарским ножом этого цифрового исследователя был он — Norton Commander. Его синие панели были порталом в закулисье операционной системы.

Давайте рассмотрим три классических техники, где "Нортон" был незаменим.

Norton Commander
Norton Commander

Техника №1: Матрешка для данных — магия конкатенации

Простейший, но оттого не менее изящный метод. Он эксплуатировал тот факт, что многие форматы файлов (особенно GIF) имели четкий маркер конца. Всё, что шло после этого маркера, программа-просмотрщик просто игнорировала. Это позволяло буквально "приклеить" один файл к другому.

Представьте: у вас есть картинка CAT.GIF (25 КБ) и секретный архив SECRET.ZIP (10 КБ). В командной строке MS-DOS это выглядело как заклинание:

Фрагмент кода

COPY /B CAT.GIF + SECRET.ZIP STEGO_CAT.GIF

Ключ /B указывал, что файлы двоичные. В результате получался файл STEGO_CAT.GIF размером 35 КБ. Любой графический редактор открывал его и показывал котика, потому что, дойдя до конца данных GIF, он прекращал чтение. Но вы-то знали, что дальше, в "хвосте" файла, лежит ваш архив.

Роль Norton Commander: "Нортон" был здесь дирижером.

  • Наглядность: Вы сразу видели в панели, что размер файла STEGO_CAT.GIF увеличился ровно на размер архива.

  • Извлечение: Чтобы достать секрет, не нужны были сложные утилиты. Достаточно было открыть "котика" в любом архиваторе, который умел искать свою сигнатуру внутри другого файла.

Техника №2: Тайники в "мертвой зоне" — Slack Space

Это уже высший пилотаж. Файловая система FAT16 распределяла место на диске кластерами (например, по 2048 байт). Даже если ваш файл AUTOEXEC.BAT весил 100 байт, на диске он все равно занимал целый кластер. Оставшиеся 1948 байт были "ничейной землей" — slack space.

Это был идеальный тайник. Информация, спрятанная там, не меняла ни размер файла, ни его дату, ни контрольную сумму. С точки зрения ОС, файл оставался прежним.

Роль Norton Commander: Здесь в игру вступал его мощнейший инструмент — Disk Editor (Diskedit). Это был портал в матрицу файловой системы. С его помощью можно было:

  1. Найти на диске физическое расположение нужного файла.

  2. Перейти в конец его реальных данных (End of File).

  3. И в пустующее пространство кластера вручную, в HEX-режиме, вписать свой секретный текст.

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

Техника №3: Невидимые чернила в 256 цветах — LSB

Классический метод, который в 90-е набрал популярность с появлением утилит для DOS. Суть метода Least Significant Bit (LSB) — в замене наименее значимых битов в байтах, описывающих цвет пикселей.

В 256-цветном .BMP или .PCX файле каждый пиксель кодируется одним байтом (8 бит). Этот байт — просто номер цвета в палитре. Например, байт 11010101 (213) указывает на 213-й цвет. Последний бит ("1") — наименее значимый. Если изменить его на 11010100 (212), цвет пикселя изменится на соседний в палитре. Для человеческого глаза эта разница абсолютно неуловима. Но если взять тысячи пикселей и в каждый последний бит записать один бит вашего секретного сообщения, можно спрятать в картинке целый текст.

Вот как выглядел бы концептуальный код на Turbo Pascal:

program StegoLSB;
// ... (описание переменных и типов)
begin
  // ... (открытие файлов: контейнера, секрета и выходного)

  // Копируем заголовок BMP/PCX без изменений
  BlockRead(ContainerFile, HeaderData, SizeOf(HeaderData));
  BlockWrite(OutputFile, HeaderData, SizeOf(HeaderData));

  // Начинаем прятать сообщение
  while not Eof(MessageFile) do
  begin
    Read(MessageFile, MessageByte); // Читаем байт секрета 'A' (01000001b)

    for i := 0 to 7 do // Прячем каждый из 8 битов этого байта
    begin
      BlockRead(ContainerFile, PixelByte, 1); // Читаем байт пикселя

      // Извлекаем i-й бит из нашего MessageByte
      MessageBit := (MessageByte shr i) and 1;

      // Обнуляем LSB пикселя и вставляем наш бит
      PixelByte := (PixelByte and 254) or MessageBit; // 254 это 11111110b

      BlockWrite(OutputFile, PixelByte, 1); // Записываем измененный пиксель
    end;
  end;

  // ... (копируем остаток контейнера и закрываем файлы)
  Writeln('Сообщение успешно спрятано!');
end.

Роль Norton Commander: "Нортон" был идеальным командным центром для запуска таких утилит. Типичный сценарий выглядел так: вы видите в одной панели картинку-контейнер CASTLE.PCX и файл с секретом TEXT.TXT. Перейдя в командную строку, вы запускали процесс:

Фрагмент кода

REM Прячем сообщение из text.txt в картинку 'castle.pcx'
WNS.EXE -embed -in:CASTLE.PCX -msg:TEXT.TXT -out:NEW_CASTLE.PCX

REM Для извлечения секрета команда была бы такой:
WNS.EXE -extract -in:NEW_CASTLE.PCX -out:SECRET_MSG.TXT

На выходе вы получали файл NEW_CASTLE.PCX того же размера, который выглядел идентично исходному, но уже нёс в себе тайну. А после этого можно было надежно уничтожить исходный TEXT.TXT с помощью встроенной в Norton Commander функции Wipe, которая многократно перезаписывала место на диске, не оставляя шансов на восстановление.

В середине 90-х уже существовали утилиты для DOS, реализующие этот алгоритм. Одной из таких была White Noise Storm, которая работала с популярным в то время форматом PCX.

White Noise Storm
White Noise Storm

Наследие синих панелей и переход в современность

Эпоха MS-DOS была временем прямого диалога с машиной. Стеганография в тех условиях была не просто набором алгоритмов, а захватывающим приключением, гимном человеческой изобретательности. Она доказывала, что даже в самых жестких рамках ограничений всегда есть место для хитрости и свободы.

Дух того времени — дух исследователя, который с помощью верного Norton Commander вглядывался в HEX-коды в поисках лазейки — жив. Он жив в каждом, кто сегодня борется за цифровую приватность.

Спасибо за внимание!

Присоединяйтесь к нашему Telegram-каналу https://t.me/ChameleonLab!

Комментарии (4)


  1. Kerman
    10.09.2025 07:38

    Если изменить его на 11010100 (212), цвет пикселя изменится на соседний в палитре. Для человеческого глаза эта разница абсолютно неуловима.

    256-цветные картинки всегда шли с палитрой. Палитра объявляла 24-битный или 16=битный цвет для каждого индекса. Так что заметность зависела исключительно от того, как сделана палитра. Для целей LSB палитра должна быть одинаковыми парами - 128 цветов вместо 256. Но если её поменять на "зебру" чёрный-белый-чёрный-белый, то вместо картинки будет как раз тот самый "шум" спрятанных данных.


  1. baldr
    10.09.2025 07:38

    Роль Norton Commander: "Нортон" был идеальным командным центром для запуска таких утилит. Типичный сценарий выглядел так: вы видите в одной панели картинку-контейнер CASTLE.PCX и файл с секретом TEXT.TXT. Перейдя в командную строку, вы запускали процесс

    И так всю статью. Для чего тут приплетён Norton Commander? Чтобы размер файла увидеть или в командной строке запустить exe-файл?

    Зато ссылка на телеграм канал, конечно, не забыта.


    1. OlegZH
      10.09.2025 07:38

      Зато ссылка на телеграм канал, конечно, не забыта.

      Согласно нынешним веяниям, наверное, имеет смысл оставлять ссылку на другой мессенджер.


  1. DenisArd
    10.09.2025 07:38

    В Norton Commander не было никакого Disk Editor. В комплект файл-менеджера входили только текстовый редактор и просмотрщики файлов. Набор утилит Norton Utilities продавался совершенно независимо от коммандера, вот там средства для работы с диском были.

    И на дискетах, ЕМНИП, применялась FAT12, а не FAT16.