Сохранен 79
https://2ch.hk/crypt/res/169.html
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Наноборды тред

 НаноОП OP !!P7AFLWRkhg 15/11/14 Суб 13:56:34 #1 №169 
14160489942270.png
Наноборда - борда, основанная на стеганографии.

Пользователи наноборды создают нанопосты - изображения, являющиеся стеганографическими контейнерами, затем постят их на обычной имиджборде, в тумблере, инстаграме, где угодно. Затем создают правило в клиенте наноборды, по этому правилу клиент загружает нанопосты. Все нанопосты шифруются ключем борды.

Терминология:
нанопост - данные, содержащиеся в стеганографическом контейнере (пока что это PNG LSB), они зашифрованы с AES, но можно попробовать и другие алгоритмы.
Нанопост содержит:
- Свой SHA-256 хеш
- SHA-256 хеш того поста, на который он отвечает (хеш родителя), либо нули, если он не отвечает на какой-либо пост
- Пакет данных в формате JSON, в котором содержится таймстемп создания и текст поста, в будущем там могут содержаться любые данные, в том числе правила для других нанопостов,что угодно
- Данные аттача, если аттач есть. Аттачем может быть любой файл, который может уместиться в контейнере

правило - набор данных, по которому клиент наноборды может в будущем подбирать другие нанопосты из известных ему расположений (напр. альбомов или тредов).
Правило состоит из:
- URL страницы, на которой расположены ссылки на изображения
- Регулярное выражение, по которому будут извлекаться (обычно из HTML-кода) адреса изображений
- Имя правила
Клиент наноборды загружает все изображения, которые подходят по правилу, затем пытается декодировать их содержимое, используя ключ борды и принимая заранее тот факт, что изображение может хранить данные стеганографически. Если произошла неудача на одном из шагов (обычно это сбой проверки хеша, либо сбой при попытке дешифровать данные), то картинка не считается нанопостом и пропускается. Успешно декодированные нанопосты сохраняются в папку nanoposts и добавляются к дереву постов.

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

Исходный код доступен на гитхабе: https://github.com/Cr0s/JNanoBoard

Реквестирую критику (конструктивную) и предложения, а может даже и помощь в улучшении реализации. На данный момент это самая доведённая до ума реализация того, что уже много раз обсасывалось в целой цепочке наноборда-тредов.

Этот тред - тоже нанобордовый, ключ: anuspes
Аноним 15/11/14 Суб 14:21:09 #2 №170 
>>169
Зашёл по ссылке, скачал зип. И что мне теперь с ним делать чтоб ЦП? Ты бы хоть мануал запили бы в вики для тех у кого джавы нет. А этот свой пост как readme положил бы в репу что ли.

> пока что это PNG LSB
https://code.google.com/p/f5-steganography/

Или если хочется всё делать самому, то вот тебе паста для начала:

Если ради лулзов делать стеганографию в png или wav (файлы с сжатием без потерь или вообще без сжатия), то я бы поступил так:
1. Берём 24-битную картинку и представляем её в виде массива байт. Типа [R, G, B, R, G, B, R, G, B…] - назовём его с[]
2. Создаём второй массив такой же длинны, но в нём каждый элемент это порядковый номер байта в массиве c[]. То есть [0, 1, 2, 3, 4, 5, 6, 7….] - назовём его i[]
3. Данные, которые надо спрятать, помещаем в другой массив. Назовём его d[]. При этом в начале массива добавляем 4 байта в которые записываем длину данных. Получается как-то так [0, 0, 12, 130, 77, 90, 0, 3…]
4. Просим у пользователя пароль и с его помощью инициализируем наш PRNG (можно взять от пароля SHA-256 и запустить с него RC4 PRGA - для простоты. Гуглите википедию)
5. Используя PRNG перемешиваем наш i[]. Один и тот же пароль будет выдавать один и тот же перемешанный массив. К примеру такой: [135, 23567, 2, 3562, 123, 5246, 6891…]
6. Сразу после предыдущего шага, мы каждый байт в массиве d[] XOR-им с рандомным байтом возвращаемым нашим PRNG, чтобы наши данные стали больше походить на шум.
7. Теперь начинаем ПО БИТАМ обходить массив d[]. Берём первый бит. Берём первый элемент из i[] который у нас 135. Берём 135-й элемент из c[] и делаем его младший бит равным биту прочитанному из d[]. И так продолжаем пока биты в d[] не кончатся.
Что в итоге получится: если мы встраиваем в картинку сообщение длинной 100 байт (всего 104 байта), ту нас в картинке будет 832 (или чуть меньше) пикселей которые чуть-чуть отличаются от оригинала. И пикселы эти будут разбросаны по картинке "случайно". Для картинки размером 800х600 это будет около 0,15% пикселей, на глаз такое вряд ли заметишь.
И ещё совет - картинку надо выбирать такую, чтоб было как можно меньше областей залитых одним и тем же цветом. Лучше всего подойдут фотографии, так как в них и так уже есть шум.
Теперь как это всё из картинки достать:
1. Выполняем из первого алгоритма шаги 1, 2, 4, 5.
2. Используя массив i[] читаем из картинки первые 32 бита (чтобы получит длину встроенных данных).
3. XOR-им полученные байты со "случайными" байтами из нашего PRNG. Так как он инициирован из того же пароля, байты он будет выдавать те же самые, что и при встраивании.
4. Зная длину данных - создаём массив d[] и по биту заполняем его тем же методом, как и в шаге 7 первого алгоритма.
6. Получив все байты внедренных данных, XOR-им их с нашим PRNG.
What's all, folks!
Таким методом мы можем встроить в bmp-ашку весом 800кб данные размером до 100кб. Вполне внушительно. Можно впихнуть и больше используя вместо одного младшего бита два, вот только картинку это исказит сильнее и встроенные данные станут более заметными. А вот если встраивать коротенькие сообщения, то выходит вполне отлично. Дальше можно углубиться в теорию кодирования и запихивать в одно изменение бита в картинке 3-4 бита данных.
А вот с форматами использующими сжатие с потерями всё хоть и выглядит примерно так же, но вот результат визуально другой, так как там чаще всего мы работаем с частотами, а не непосредственно с пикселами. При этом изменение одного бита может повлиять на значения аж 64-х пикселов (для jpeg). Вот только сказать действительно ли эти изменения вызваны встраиванием сообщения, а не есть результат сжатия с потерями, не так-то просто. (хотя статистика довольно сурьёзная штука, всё может выпалить)

НаноОП !!P7AFLWRkhg 15/11/14 Суб 15:03:34 #3 №171 
>>170
Установи JRE 1.7
Скачай релиз с гитхаба, распакуй.
Потом запусти JNanoBoard.jar
Например командой:
java -jar JNanoBoard.jar

Сейчас один байт пишется в R, G, B сразу, в первых двух в 3 бита, а в последнем в 2. Но детектируется легко сильной заливкой, ибо пикселы искажаются заметно, если картинка с фоном и без шума. Есть куда шагать в плане улучшения скрытности.

Какая-то хуйня не даёт скачивать картику с сосача, с других сайтов качается хорошо, странно. Исключений никаких не вылетает нигде.
Аноним 15/11/14 Суб 15:07:28 #4 №173 
>>171
Сосач портит картинку, чтобы не работал рарджепег.

Для маскировки надо лить в пикчи для хипстоты, там шума дофига
НаноОП !!P7AFLWRkhg 15/11/14 Суб 15:12:13 #5 №174 
14160535337260.png
Починил загрузку картинок, теперь наноборда берёт протокол загрузки из урла правила, а не просто подставляет http://, ибо сосач, например, не котирует http:// и перенаправляет на https://.
Аноним 15/11/14 Суб 15:17:00 #6 №175 
>>174
Таки работает?
НаноОП !!P7AFLWRkhg 15/11/14 Суб 15:17:52 #7 №176 
14160538720710.png
>>173
Нет, не портит, всё работает.
НаноОП !!P7AFLWRkhg 15/11/14 Суб 15:26:15 #8 №177 
14160543751410.png
Сделал релиз с фиксами и новым правилом для сосача с этим тредом Ключ борды: anuspes.

https://github.com/Cr0s/JNanoBoard/releases/tag/2.1a
Аноним 15/11/14 Суб 15:31:13 #9 №178 
>>176
Значит починили, месяца полтора назад работало в усеченном варианте VI
Аноним 15/11/14 Суб 16:40:25 #10 №182 
Нажал начать синхронизацию, а пароль забыл ввести, следовательно написало что постов нет. Но после ввода пароля посты не обновились.
Баг или фича?
Аноним 15/11/14 Суб 17:29:33 #11 №185 
14160617732790.png
>>182
Фича, программа запоминает урлы уже проверенные. Удали файл urls.txt из папки nanoposts
Аноним 15/11/14 Суб 18:26:33 #12 №193 
14160651933460.png
>>185
без мануала никак.
еле понял что и как жать надо.

может интерфейс программы упростить?
Аноним 15/11/14 Суб 18:32:57 #13 №194 
14160655776860.png
>>185

ну тогда дайте кнопку очистки этого закешированного говна.
я понимаю, что оно для того, что бы не делать повторно расшифровку, но все же, иногда надо все совсем по свежачку.
Аноним 15/11/14 Суб 18:39:01 #14 №197 
14160659416840.png
Аноним 15/11/14 Суб 18:51:02 #15 №198 
14160666620730.png
>>194
а вместо того что бы скрывать уже полученные урлы - может просто их все же показывать, но с какой нибудь галочкой "синхринизировано"
Аноним 16/11/14 Вск 00:04:19 #16 №206 
ОП, а может запилишь подробное описание и гайд для тех, кто немного с зубочисткой? А то я ничего не понял.
Аноним 16/11/14 Вск 04:33:21 #17 №219 
14161016016550.png
>>206
оп-хуй

1) качаешь сборочку
https://github.com/Cr0s/JNanoBoard/releases/tag/2.1a

2) запускаешь батником в консоли:
java -jar JNanoBoard.jar

3) в первом окне вводишь пароль (внизу оп поста)

4) в 1 окне жмешь кнопку
синхронизировать

5) в 4 окне жмешь кнопку
рефреш.

6) чтоб ответить в тренд, в 4 окне жмешь "реплай"

7) в 3 окне пишешь текст, выбираешь фоточку в пост, и PNG в который будешь заливать свой пост с картинкой.

8) после того как охуеешь все это нажимать, и при отсутствии ошибок, пиздуешь в корень папки куда распаковал, переходишь в "outbox" и ищешь свой стеганографированный файл вида 5da19............8b83dddc.nanopost.png, который и засылаешь в открытый инет.
Аноним 16/11/14 Вск 04:52:28 #18 №230 
>>219
А может прикрутить автоматическую заливку файла на чаны?
Аноним 16/11/14 Вск 05:00:14 #19 №232 
>>230
1) а сможешь прикрутить?
2) на какую борду конкретно заливать будешь? на какую то одну - глупо. надо готовить и поддерживать тогда список стабильно работающих борд.
- 4чан
- сосач
- кайзерчан

а вопрос то все тот же - шифрование паролем
Аноним 16/11/14 Вск 07:59:17 #20 №233 
Отлично, нанооп жив. Только зря отказался от первичной идеи распространять архив доски, а не отдельные нанопосты. И на java перешел. Параноики завопят, начнут критиковать реализацию. А так отлично. Есть архив 8 альфы, которую еще через синк пускали
НаноОП !!P7AFLWRkhg 16/11/14 Вск 11:18:00 #21 №236 
14161258807450.png
>>233
Могу тебя огорчить, я, скорее всего, не тот нанооп, о котором ты думаешь. Я - одиз из немногих продолжателей идеи.

>>232
Контейнер шифруется встроенной в джаву реализацией AES/CBC/PCKS7Padding, да, знаю, что может быть подвержена закладкам, но я не настолько спец, чтобы реализовывать криптографию вручную. Ключ шифрования - ключ борды (даже не хеш от него).

>>232
Для этого потребуется сделать двжок, который будет иметь набор правил для постинга на разные борды.

Аноним 16/11/14 Вск 12:44:11 #22 №241 
>>232
>а сможешь прикрутить?
С программированием у меня не сложилось, если только анон насоветует мне с чего начать (у меня затык на уровне понятий класса, цикла итд, в школе вместо информатики был ворд+эксель+клац+клац)
Аноним 16/11/14 Вск 12:44:29 #23 №242 
>>233
Да, джава - зашквар, посоны
Аноним 16/11/14 Вск 12:45:37 #24 №243 
>>236
>Я - одиз из немногих продолжателей идеи
Идея не может умереть.
НаноОП !!P7AFLWRkhg 16/11/14 Вск 13:04:50 #25 №245 
>>242
Чем аргументируешь?
inb4: кококо сисярп лучше

Сейчас основная задача это разработать окончательный формат нанопоста и протоколов стеганографии/шифрования. То, что PoC написан на жабе ни о чём не говорит и камнем ни в чей огород не является, важна идея и архитектура, которую следует продумать и провести её анализ на предмет фундаментальных косяков, а реализовать её потом можно хоть на крестах, асме, хоть в железе на ПЛИС, было бы желание и возможности.
Аноним 16/11/14 Вск 13:39:08 #26 №246 
>>245
жаба - дуршлаг.
Но тут ты прав - сначала делаем как работает, потом переписываем.
sageАноним 16/11/14 Вск 17:32:09 #27 №255 
14161483294450.png
123
Аноним 16/11/14 Вск 17:39:31 #28 №256 
14161487711930.png
321
Аноним 16/11/14 Вск 20:54:30 #29 №269 
>>255
>>256
Вам кота в треде не хватает?
Аноним 16/11/14 Вск 23:10:04 #30 №274 
>>236
> но я не настолько спец, чтобы реализовывать криптографию вручную

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

по поводу пароля на первой вкладке
а разве пароль один на всю наноборду?
логичней было бы захуячить пароль в правило.

т.е. каждое правило - каждый новый пароль
Аноним 17/11/14 Пнд 13:01:22 #31 №279 
>>274
>хоть сертификатом
=файл-ключ?
Аноним 17/11/14 Пнд 14:40:54 #32 №285 
14162244541930.png
>>169

Про ДДТ слышал?
Аноним 17/11/14 Пнд 15:45:29 #33 №288 
>>285
В последнююю ооооосееенььь!
Аноним 18/11/14 Втр 15:06:49 #34 №332 
Прет крас)
Аноним 18/11/14 Втр 15:16:37 #35 №334 
14163129976220.png
123
Аноним 18/11/14 Втр 17:27:30 #36 №351 
14163208501240.png
>>334
Аноним 18/11/14 Втр 18:20:03 #37 №352 
>>334
>>351
Это бамп или вайп?
Аноним 18/11/14 Втр 22:30:58 #38 №357 
>>352
По ту сторону нанопостов идёт общение, ты видишь лишь картинки.
Аноним 18/11/14 Втр 23:07:11 #39 №358 
>>357
Торможу
Аноним 19/11/14 Срд 15:28:51 #40 №371 
>>285

Нанооп опять съебал по-английски?
Аноним 19/11/14 Срд 16:22:34 #41 №373 
>>371
Анус твой съебал, пёс.
Аноним 19/11/14 Срд 16:26:05 #42 №374 
>>373

Иди нахуй.
Аноним 19/11/14 Срд 19:54:49 #43 №376 
>>374
Сам иди, пёс!
Аноним 20/11/14 Чтв 14:31:32 #44 №391 
>>169
Хочу настроить прокси, но как?
Аноним 20/11/14 Чтв 22:04:09 #45 №394 
>>391
java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080 -jar JNanoBoard.jar
Как-то так запускай.
Аноним 20/11/14 Чтв 22:49:05 #46 №395 
А куда посоветуешь учиться криптографии ?
Аноним 20/11/14 Чтв 23:11:53 #47 №396 
>>395
В мозг.
Аноним 20/11/14 Чтв 23:36:17 #48 №397 
>>395
Начни с Брюс Шнаер "Прикладная Криптография"
Аноним 21/11/14 Птн 00:24:40 #49 №398 
>>397
К слову - понятная книга. Даже для меня, который не дружит с логикой, алгеброй и подобным
Аноним 21/11/14 Птн 02:11:30 #50 №401 
14165250902450.jpg
Нахуя если есть ddt?
Аноним 22/11/14 Суб 20:28:57 #51 №469 
>>401
DDT опирается на куклу, которой теперь нет места тут.
Аноним 22/11/14 Суб 20:40:04 #52 №471 
>>469
Форкни куклу и сам проверяй коммиты.
Аноним 22/11/14 Суб 22:04:06 #53 №478 
>>469
1. Пишу с куклы.
2. Для некоторых движков работа без куклы уже запилена.
Аноним 22/11/14 Суб 22:46:34 #54 №482 
>>471
Все равно иметь альтернативу неплохо. Спасибо наноопу.
Аноним 23/11/14 Вск 02:15:46 #55 №496 
14166981466450.jpg
А почему на жаве?
Аноним 23/11/14 Вск 02:57:21 #56 №499 
14167006416450.jpg
>>496
Аноним 23/11/14 Вск 03:39:42 #57 №502 
Ну есть и другие ЯП
>>499
Аноним 23/11/14 Вск 03:43:34 #58 №503 
>>502
Да я просто рандомную пикчу выбрал.
Аноним 23/11/14 Вск 03:43:36 #59 №504 
14167034164130.jpg
>>502
Например..
Аноним 23/11/14 Вск 03:44:50 #60 №505 
14167034907590.jpg
>>504
Аноним 23/11/14 Вск 05:43:17 #61 №511 
>>505

Писать на Джаве - себя не уважать.
Аноним 23/11/14 Вск 12:26:28 #62 №512 
>>502
>>511
Охуенные аргументы против джавы, прям уровня /pr/, ничего не скажешь.
Аноним 25/11/14 Втр 18:15:22 #63 №701 
>>504
Очкопетух Кудах, ты?
Аноним 25/11/14 Втр 18:22:35 #64 №710 
>>701
я
Аноним 26/11/14 Срд 13:31:12 #65 №944 
Заглохло всё
sageАноним 26/11/14 Срд 15:48:58 #66 №1021 
>>944
Анус твой заглох, от вас всех толку ноль, клоуны.
Аноним 26/11/14 Срд 17:52:41 #67 №1065 
>>1021

Спасибо на добром слове.
Я вот активно раскручиваю тут борду, дабы обеспечить приток новых людей.
Аноним 26/11/14 Срд 23:40:58 #68 №1133 
>>1065
Лол, это не нанооп как какой-то клоун, у наноопа трип же.
Аноним 26/11/14 Срд 23:48:16 #69 №1135 
>>169
пилю диплом на тему стеганографии, алсо исследую сохранение контейнера при сжатии изображения.
У кого есть соображения какие?
Аноним 26/11/14 Срд 23:56:34 #70 №1137 
>>1135
> исследую сохранение контейнера при сжатии изображения
Сам бы хотел в этом поковыряться. Видимо начинать надо с ватермарков, они такое переживают. вот только вместимость резко упадёт.
Аноним 27/11/14 Чтв 00:04:53 #71 №1138 
>>1133
Я и не говорил, что я ОП.
Аноним 12/12/14 Птн 10:24:49 #72 №2112 
>>169
Если бы стег был бы незаметен...
НаноОП !!P7AFLWRkhg 27/01/15 Втр 16:07:05 #73 №3188 
Буду переделывать алгоритм, чтобы равномерно разбрасывать стегопиксели по картинке, ёмкость уменьшится, но здесь важна незаметность.
Аноним 27/01/15 Втр 16:19:26 #74 №3189 
>>3188
Было бы круто. Ещё бы и заголовки все выпилить...
НаноОП !!P7AFLWRkhg 27/01/15 Втр 17:37:10 #75 №3191 
>>3189
О каких заголовках речь?
Аноним 27/01/15 Втр 18:03:49 #76 №3192 
>>3191

Нахуй ты говоришь:

>Буду

Ещё до того, как что-то сделал? Ты уже показал себя знатным пиздоболом, так зачем продолжаешь позориться?
НаноОП !!P7AFLWRkhg 27/01/15 Втр 19:06:02 #77 №3195 
>>170
Неплохой алгоритм, но в нём фундаментальный косяк - чтобы узнать длину данных, нужно знать длину данных.
А всё потому, что для того, чтобы правильно перемешать массив индексов, нужно знать его длину. Иначе перемешанный массив будет отличаться от того, который был создан при записи в изображение.

А создавать массив индексов для всего изображения целиком это идиотизм и будет работать очень и очень медленно и жрать очень много
НаноОП !!P7AFLWRkhg 27/01/15 Втр 19:08:56 #78 №3196 
>>3192
Иди туши зад
Ты не понимаешь смысла слов или для тебя не существует времени и пространства? Буду - значит собираюсь делать, а не уже сделал.
НаноОП !!P7AFLWRkhg 27/01/15 Втр 23:03:33 #79 №3218 
14223890135890.jpg
Иллюстрация нового алгоритма.

Стеганография детектится заливкой минимальной чувствительности на сплошном фоне. Меняется один младший бит случайно выбранного R, G или B байта случайно выбранного пиксела. При этом можно обнаружить только единичные биты. Нулевые, разумеется, обнаружить невозможно.

Противодействие -- использовать картинки с большим числом шумов и без сплошных областей одного цвета.

ГПСЧ -- RC4, инициализируется SHA-256 хешем от пароля.
comments powered by Disqus

Отзывы и предложения