LINUX.ORG.RU
ФорумTalks

Стеганография и шизофазия


0

0

Недавно прочёл историю о том, как при помощи цепей Маркова преобразовывали шестнадцатеричные хеши в слова похожие на естественный язык: http://thedailywtf.com/Articles/The-Automated-Curse-Generator.aspx (предварительно набрав статистику по употреблению букв и их сочетаний в соответствующем языке). В связи с обсуждением возможностей стеганографии в http://www.linux.org.ru/view-message.jsp?msgid=4215983 подумал: а нельзя ли применить то же к языку на уровне слов? В языке, скажем, 2^13=8192 слов (множественные числа, роды, лица и падежи не считаем). Пусть каждые 13 бит преобразуются в слово, а слова составляются в грамматически правильные предложения и бессмысленный текст.

Вопросы. Кто-нибудь подобное делать пытался? Знаете ли примеры алгоритмов преобразования последовательности байт в слоги, как по ссылке?

Зачем всё это? А просто так. Без намёка на профит.

★★★★★

Короче говоря, ты хочешь грепать /dev/urandom на "осмысленные" комбинации. Это возможно. Но оооочень долго.

Macil ★★★★★
()

И кстати, по ссылке нет никакого "преобразования". Там с помощью цепи Маркова генерятся уникальные идентификаторы.

Macil ★★★★★
()

Для питания лампочки достаточно 120 кирпичей, так как её структура похожа на кирпич.

matich
()
Ответ на: комментарий от Macil

> Короче говоря, ты хочешь грепать /dev/urandom на "осмысленные" комбинации.

Нет, по ссылке сделали программу, дающую произносимые комбинации на любую последовательность байтов. Я спрашиваю как это можно сделать.

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

>Нет, по ссылке сделали программу

Нет. По ссылке сделали программу, которая генерирует последовательность байт с определенной закономернстью (которая определяется цепью Маркова и в которой, по определению, присутствует некая слуячайная составляющая).

Ты же хочешь из этой последовательности выделить последовательость, с определенной закономерностью (уже той которая тебе нужна для стеганографии), что по сути дела и является grep'ом /dev/urandom.

Macil ★★★★★
()

> Зачем всё это?

С корпоративной проверяемой почты слать секретные данные подельникам, дада.

ierton ★★
()
Ответ на: комментарий от ierton

Да только вот максимально допустимый объем внедренной информации наверняка получится ничтожна. Так придется "войну и мир" слать, чтобы передать в ней 10килобайтный файлик.

ierton ★★
()
Ответ на: комментарий от ierton

> Да только вот максимально допустимый объем внедренной информации наверняка получится ничтожна. Так придется "войну и мир" слать, чтобы передать в ней 10килобайтный файлик.

Если каждое слово будет нести закодированную информацию, получим 13 бит на слово (для русского языка ~20 байт в UTF, для английского ~6 в ASCII). Получается разбухание, максимум, раз в 12. Если придавать тексту более осмысленный вид — да, текста понадобится больше.

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

question4 ★★★★★
() автор топика
Ответ на: комментарий от Macil

> По ссылке сделали программу, которая генерирует последовательность байт с определенной закономернстью (которая определяется цепью Маркова и в которой, по определению, присутствует некая слуячайная составляющая).

Может, я неправильно понял. Приму такой вариант.

> Ты же хочешь

...пример такого генератора и пример анализатора текстов, делающего исходную базу (в данном случае — слогов в словах) для этого генератора. А если кто-то это применил к словам в предложениях — ещё лучше.

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

Пока нашёл только программу для написания стихов с lleo.aha.ru. Но читать те исходники достаточно тяжело :)

question4 ★★★★★
() автор топика
Ответ на: комментарий от question4

УФф. Наверно нужно почитать матчасть. Правда, к своему стыду, формальное определение цепи Маркова я не осилил. Но неформальное определенеие такое:

Цепь Маркова - конечный автомат, функция переходов которого стохастическая т.е. имеет случайную состовляющую.

Например, у нас есть автомат с состояниями A, B и C. Из состояния A в состояние A автомат переходит с вероятностью 0.0, в состояние B с вероятностью 0.50, с состояние C с вероятностью 0.50. Из состояния B в A - 0.95, B - 0.05, C - 0. Из состояния C в A - 0.95, B - 0, C - 0.05.

На самом деле цифры взяты абсолютно от балды.

Цепочка ABAC будет сгенерирована с большей вероятностью, чем ABBA, а цепочка ABCA сгенерирована не может быть вообще.

Пример кода я тебе не приведу. Слишком сложно. Делается хеш-таблица, значениями которой будет список кортежей (ключ, число вхождений) т.е. вероятность будет длинна списка/число вхождений. Это "обучение".

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

Если не хочешь трахаться с real числами - сделай вместо [0;1] [0;2^32-1]. Будет быстрее.

Macil ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.