Обновить README.md

This commit is contained in:
2025-12-11 15:05:58 +03:00
parent 6267449205
commit 1d5cd340b1

View File

@@ -14,7 +14,7 @@
- показать, как **спрятать фрагмент книги** в бинарный контейнер (encrypt); - показать, как **спрятать фрагмент книги** в бинарный контейнер (encrypt);
- показать, как **корректно его восстановить** по ключу (verify); - показать, как **корректно его восстановить** по ключу (verify);
- продемонстрировать, что при знании исходной книги и наличии стего-контейнера можно выполнить **оптимизированный многопоточный перебор смещений** и восстановить и **ключ**, и **сам фрагмент текста** (hack). :contentReference[oaicite:1]{index=1} - продемонстрировать, что при знании исходной книги и наличии стего-контейнера можно выполнить **оптимизированный многопоточный перебор смещений** и восстановить и **ключ**, и **сам фрагмент текста** (hack).
--- ---
@@ -30,9 +30,9 @@
- Генерирует ключ (набор битовых масок для 10 эталонов). - Генерирует ключ (набор битовых масок для 10 эталонов).
- Сохраняет: - Сохраняет:
- стего-контейнер: `--out <имя>.bin` (по умолчанию `output.bin`); - стего-контейнер: `--out <имя>.bin` (по умолчанию `output.bin`);
- ключ: `<имя>.key.bin`. :contentReference[oaicite:2]{index=2} - ключ: `<имя>.key.bin`.
Фрагмент книги берётся из обычного текстового файла (например, художественного произведения). :contentReference[oaicite:3]{index=3} Фрагмент книги берётся из обычного текстового файла (например, художественного произведения).
--- ---
@@ -45,7 +45,7 @@
- `--key <файл.key.bin>` — файл с ключом. - `--key <файл.key.bin>` — файл с ключом.
- Программа инициализирует систему `AssocStego` с заданным ключом. - Программа инициализирует систему `AssocStego` с заданным ключом.
- Через поток `AssocStegoStream` последовательно читает скрытые байты. - Через поток `AssocStegoStream` последовательно читает скрытые байты.
- Восстановленный текст выводится в консоль. :contentReference[oaicite:4]{index=4} - Восстановленный текст выводится в консоль. :contentReference
--- ---
@@ -58,20 +58,20 @@
- `--data <файл.bin>` — стего-контейнер; - `--data <файл.bin>` — стего-контейнер;
- `--book <книга.txt>` — текст книги, в которой прятался фрагмент; - `--book <книга.txt>` — текст книги, в которой прятался фрагмент;
- опционально `--threads <N>` — максимальное количество потоков; - опционально `--threads <N>` — максимальное количество потоков;
- флаг `--verbose` для подробного вывода. :contentReference[oaicite:5]{index=5} - флаг `--verbose` для подробного вывода.
Алгоритм: Алгоритм:
1. Читает стего-контейнер и текст книги. 1. Читает стего-контейнер и текст книги.
2. По длине контейнера вычисляет количество скрытых байт. 2. По длине контейнера вычисляет количество скрытых байт.
3. Разбивает контейнер на блоки фиксированной длины (каждый байт → 3 стего-блока). :contentReference[oaicite:6]{index=6} 3. Разбивает контейнер на блоки фиксированной длины (каждый байт → 3 стего-блока).
4. Запускает многопоточный перебор всех возможных смещений в книге: 4. Запускает многопоточный перебор всех возможных смещений в книге:
- для каждого смещения: - для каждого смещения:
- рассматривает последовательность байт книги длиной, равной длине скрытого текста; - рассматривает последовательность байт книги длиной, равной длине скрытого текста;
- для каждого байта вычисляет десятичные цифры (d2, d1, d0); - для каждого байта вычисляет десятичные цифры (d2, d1, d0);
- по соответствующим стего-блокам и эталонам строит битовые маски для цифр 09; - по соответствующим стего-блокам и эталонам строит битовые маски для цифр 09;
- быстрыми побитовыми операциями (`FastAndNotXor`, `FastPopCount`) отбрасывает заведомо неверные смещения; - быстрыми побитовыми операциями (`FastAndNotXor`, `FastPopCount`) отбрасывает заведомо неверные смещения;
- как только обнаружено смещение, дающее достаточно «информативные» маски (достаточное количество единичных битов), перебор останавливается. :contentReference[oaicite:7]{index=7} - как только обнаружено смещение, дающее достаточно «информативные» маски (достаточное количество единичных битов), перебор останавливается.
5. При успехе: 5. При успехе:
- извлекает фрагмент книги по найденному смещению; - извлекает фрагмент книги по найденному смещению;
- формирует ключ (набор битовых масок) из полученных масок; - формирует ключ (набор битовых масок) из полученных масок;