Цитаты из 2013 года, когда еще нихуя не было кроме ИДЕИ и ВДОХНОВЕНИЯ. Забавно, что большинство из того о чем тогда мечталось сейчас реализовано, а тогда был лишь рарджпег с команд-лайн инструментом по запихиванию 7з архивов с никак не стандартизированным содержимым в png и обратно в 7з и призыв распространять этот рарджпег.
И потом вовсе не обязательно обмениваться ЗАПРЕЩЁННОЙ инфой. За этим — в скрытосети. Ради наноборды не надо обмазываться педофильскими подозрительными зашифрованными пиртупир-ретрансляторами. Суть наноборды в бордовском общении без ограничений. На наноборде можно полить любого мочератора говном. На наноборде никто не удалит твой нанотред, а если он будет годным — его помогут поддержать на плаву хоть 500, хоть 1000, хоть 2000 постов. Вернувшись со школы и запустив клиент наноборды ты не увидишь надписи «Website is offline». Потому что для этого должны внезапно лечь все вебсайты на которых есть треды с понями, куклотой или ещё каким-нибудь аниме.
Наноборда это самая ламповая борда в мире. У наноборды не может быть хозяина, покровителя, админа, поддерживателя. Наноборда создаётся один раз, как кукла, в которую Розен впукнул куклий дух и дальше живёт сама по себе питаясь лишь энергией людей. Никто не может решить продать наноборду, закрыть наноборду, ввести автозамену, забанить кого-то, вайпнуть все треды.
Наноборда это не замена инета, это такая особенная борда — с несколько повышенной анонимностью и отсутствием централизованной модерации, но с присутствием пользовательской модерации: например, ты можешь отказаться распространять некоторые посты, кто-то ещё откажется их распространять и они быстрее утонут. Наноборда не заставит тебя вслепую распространять что-то чужое если ты не хочешь этого. Наноборда позволяет видеть всё, что через тебя проходит. Если ты этого не видишь (нет ключа) — то клиент это просто удаляет как не распознанное. Наноборда не связывает компьютеры пользователей напрямую. В наноборде доступно шифрование — лишь как способ создать приватные доски. На ранних этапах в этом не будет необходимости. Наноборда — это борда. Наноборда — это лучшая борда. Наноборда — это борда, которая не умрёт. Наноборда — это паразит на теле всех борд. Наноборда.
>>114513761 >популярный, содержит дохуя всего изкаропки, довольно простой и мощный, никакой экзотики, минимум пердолинга с памятью. кстати nboard клиент это не только шарп, но и джаваскрипт, хтмл, цсс.
>>114514092 Это как десуталк, ты создаешь шифрованный контейнер в котором осне много нанопостов и распыляешь его пикселями на gyu? затем эти gyu читаешь и достаешь оттуда стегоконтейнеры.
>>114514513 Чтобы, кто-то увидел нанопосты в твоем пнг, надо, чтобы эти пнг всегда можно было прочесть, поэтому мы и выбираем медленные треды. В одном контейнере дохуя и больше нанопостов, поэтому везде все дублируется много раз.
>>114515241 Идее много лет, множество людей трудилось над этим, использовались битмеседжи, торренты и в конце концов один не ленивый анон запили сабж. По моему лучший вариант.
>>114516080 Давно рипнулся. Да, переходил на новый движок. Можешь дампы выкачать, больше ничего от него не осталось. Жаль, что оставшиеся броды в ТОРе и ш2з - унылое говно.
Клиент нанобороды, это просто скрипт шифрующий, сжимающий, распыляющий по пнг ваши и не только ваши соообщения, а также, автоматически сканирующий на предмет новых сообщений.
простота, минимализм, надежность - формат нанопоста: хэшпостанакоторыйотвечаемтекст ответа и всё. строчка выше это нанопост. с неё считается хэш этого нанопоста, который можно использовать чтобы сослаться на него. тут мало пространства для махинаций. просмотрщик базы нанопостов, генератор ответа, сборщик нанопостов - все это простейшие приложения, которые независимо могут быть написаны разными участниками (при условии что соблюдается договоренность о способе шифрования и местах распространения)
независимость от какого-либо сетевого протокола, сервера, аплоад это маскировочные действия (например, добавление картинки к посту на АИБ). при этом наноборда может одновременно поразить десятки АИБ своими скрытыми постами но при этом останется единой бордой для участников и не умрет если одна АИБ вдруг "отпадёт".
наноборда это не просто чей-то чатик, а иерархия сообщений, иными словами - организованные треды, история, которая естественным образом проникает на компьютеры участников благодаря идее ретрансляции постов.
отсутствие "хозяина" и невозможность модерации
возможность выйти за рамки АИБ (везде где можно хостить картинки или даже просто писать текст (стеготекст позволит относительно незаметно общаться нанопостами небольших размеров)
теоретически наноборда может жить даже без интернета - физическое размещение нанопостов в реальном мире - разбрасывание компакт-дисков, расклеивание QR-кодов, bluetooth-приложения, а также несанкционированные цифровые радиопередатчики - позволит наноборде хоть и очень медленно, но существовать
>>114511782 (OP) > НАНОБОРОДА > Можно постить картинки, реквестить ЦП, вайпать ниграми или лапомово вспоминать тот самый двач. Что несет этот поехавший?
Анон, когда тебе включат Чебурнет, сабж очень поможет. >Теперь что касается QR-кодов. Это апокалиптический вариант, который предполагает отсутствие интернета и присутствие людей страстно желающих поддерживать жизнь наноборды, которые расклеивают и считывают qr-коды по людым местам таким как метро. Очень фантастический вариант но технически вполне возможный. Но надо понимать, что в одном QR-коде может уместиться разве что мой вот этот вот пост. Поэтому "трафик" в наноборде будет уже далеко не тот - это ж прикиньте сколько надо будет распечатать, расклеить и считать qr-кодов.
>Поэтому для варианта с отключением/блокированием интернетов лучше подойдёт распространение через mesh-сети на wifi, bluetooth (в забитом вагоне метро самое оно) а также с помощью несанкционированной сети радиоретрансляторов (замаскированных во дворах) на wifi (для домов вокруг) и других волнах "дальнего действия". >Лоу-тек вариант - разбрасывание дискеток, компакт-дисков, перфокарт - слишком много минусов (затратно, низкая скорость обмена).
>Но какой бы способ не был бы выбран - наноборду (и даже её программный клиент) менять не придется.
Ниже привожу основную инфу что сейчас есть по спецификациям наноборды. Для начала вкратце отпишу. По поводу нечитаемости языка, скажи какой язык для тебя читаем, я постараюсь накалякать на нём базовые методы (считалка хэша, кодировка). По поводу сжатия, этим можно (и стоит) заняться отдельно, не вмешиваясь в кодировку. Нанокодировка создана не только ради сжатия, сжатие тут играет далеко не главную роль. Плюс нанокодировки в том, что набор символов которые она кодирует не "бинарный" вообще и может быть скопирован-вставлен и даже переписан вручную на листочек. Об этом тоже ниже в деталях. По поводу json - лишние байты в трафике, лишние правила, отсюда риски cпоров и расхождений в реализациях. Нанопост хорош своим минимализмом, когда менять ничего не требуется и убирать тоже нечего. Это обеспечивает легкость создания совместимой реализации и дает некоторые другие профиты о которых ниже.
Нанопост — текст произвольного размера. Первые 32 символа в нанопосте обязаны быть шестандцатиричным текстовым представлением 16-байтного хэша. В противном случае нанопост считается невалидным, такое отсеивание поможет в борьбе с подбором коллизии. Этот хэш — хэш нанопоста, на который отвечает данный нанопост. Например: a3d6efb12ee82ca341dfdc90af1ace2b Сообщение нанопоста следует сразу после хэша без пробелов и переносов строки. Хотя максимальный размер всего нанопоста не регламентируется, клиенты могут его ограничивать при надобности. Еще раз подчеркну — нанопост это не байты, это обязательно читаемый текст, который можно без трудностей выписать чернилами на листик бумаги или зачитать по радио (экстремальные варианты распространения). Именно поэтому хэш выглядит так. Кроме того такой хэш удобно использовать как имя файла (что может быть использовано в некоторых реализациях). Хэш считается со всего нанопоста включая родительский хэш. Способ расчета хэша - преобразование нанопоста в байты с использованием нанокодировки, затем взятие SHA256 хэша с этих байтов (используются первые 16 байт SHA256). Полученные 16 байт преобразуются в текст. Символы строчные, нули вначале не обрезаются. Например 1 — 01, 254 — fe. В итоге должно получиться 32 символа от 0 до f или 16 групп по 2 символа от 00 до ff. Поскольку каждый нанопост отвечает на другой нанопост, то естественным образом формируются треды и выстраивается очередность сообщений без необходимости в, к слову, легко фальсифицируемых отметках времени или номерах постов. Нанокодировка — 8-битная кодировка включающая пробел, перенос строки, русские, английские, украинские и беларусские символы, стандартные знаки препинания, доступные для ввода со стандартной английской, русской, украинской и белорусской раскладок, а также некоторые “типографские” символы такие как тире и кавычки. Цель нанокодировки — уместить всё, необходимое жителям СНГ (и даже США) в 8 бит, избавиться от необходимости тянуть наследие терминалов 70-х годов, создать строгую, независимую базу для расчета хэшей, достичь простоты реализации (сразу ясно, что каждый символ займет ровно один байт) и добиться визуальной (и аудиальной) переносимости нанопоста, что было бы невозможно с utf-8 с его десятками вариантов пробелов, точек, скобок и прочего. Сжатие — не цель нанокодировки. На это есть другие инструменты. Наноконтейнер — ПНГ-картинка с зашифрованными нанопостами. Один из способов распространения нанопостов. Данные запихиваются в нижние биты компонентов (в порядке: R,G,B). Выше по треду есть ссылка на детальное описание алгоритма. В наноконтейнере тоже используется нанокодировка. По этой же причине там нет значений (например, целочисленных) в сырых байтах. Далее все размеры (в числах) записываются восемью символами от 0 до f. (32бит). Например 2 — 00000002. Первым в наноконтейнер идёт количество нанопостов (например 00000002 для двух постов). Далее на каждый нанопост идёт размер каждого нанопоста в символах/байтах (точно такой же нотацией). Далее идут по очереди содержимое нанопостов. Всё без каких-либо разделителей. Шифрование применяется к будущему содержимому наноконтейнера. Байты ксорятся SHA512 полученным с текстового ключа (байты ключа получены через нанокодировку). После этого записываются в пнг. При чтении пнг, вытащенные из нижних битов байты снова ксорятся тем же хэшом с того же ключа. Ретрансляция чужих постов крайне важна для удовлетворительной работы наноборды. Именно поэтому в пнг-контейнеры в моей реализации записываются частично самые свежие нанопосты и частично случайным образом отобранные старые нанопосты. Поскольку редкий пост без картинки займет 100Кб, будет слишком расточительно тратить целый пнг-контейнер на один нанопост (1-5Кб). Цель пнг-контейнеров — спрятать нанопосты от посторонних глаз, сделать обмен нанопостами малозаметным и сложно детектируемым. Пнг-контейнеры не предназначены для сжатия или для максимизации объема трафика наноборды (хотя они и стараются выполнить эту миссию). На данный момент корневым постом выбран пост: 00000000000000000000000000000000{Welcome to Nanoboard} А ключом шифрования наноконтейнеров — слово nano Текущий клиент ограничивает размер нанопоста до 16Кб. Встраивание картинок планируется через base64 datauri. Веб-версии обязательно должны заменять все > на > и так далее, оставлять только <img datauri (тщательно валидировать содержимое) и разметку типа <b><sup><i>. Учитывая возможность встраивания картинок максимальный размер стоит делать повыше, чем 16Кб.
>>114519193 >1. Принцип работы. Как читать пнг и т.д Скрипт сам читает пнг по сылкам, которые написаны в places.txt, пока там четыре треда http://dobrochan.com/slow/res/26779.xhtml http://2ch.hk/crypt/res/11930.html http://2ch.hk/crypt/res/14463.html http://410chan.org/dev/res/10384.html >2. Что это вообще такое? Скрытносети? Это стенография в обычном интернете, но никто не мешает тебе постить где угодно, хоть в автобусах QR-коды расклеивай и сканируй. >3. Профиты. Отсутствие модерирования, ты сам решаешь, что будет ретранслироваться. Нанобороду невозможно уничтожить, так как она паразитирует на разных сервисах. Очень гибкая штука, можешь запилить свою бороду.
Модераторский произвол Мечта о неубиваемой борде Ценности Наноборды
простота формата нанопостов: хэш + текст сообщения = хэш (на который могут ссылаться другие нанопосты) отсутствие владельца, прав, уровней доступа, невозможность централизованной модерации или отключения наноборды отсутствие стандартизированного протокола распространения, в самой простой форме нанопост можно скопировать и вставить как текст паразитирование на существующих ресурсах в интернете и скрытом интернете вместо организации p2p-соединений и/или серверов (низкий уровень детектирования + эксплуатация чужих мощностей) поощряется помощь участникам и наноборде в виде ретрансляции чужих нанопостов (кроме огромных) клиенты для просмотра собирают все нанопосты воедино и формируют цепочки - так сохраняется логическая связь между нанопостами и отпадает необходимость во временных метках (подверженных фальсификации) клиенты для просмотра должны давать участнику возможность легко фильтровать нежелательный мусор, чтобы не видеть его и не распространять клиенты для просмотра облегчают участнику распространение своих и чужих нанопостов (кроме мусора) клиенты для просмотра ограничивают распространение слишком огромных чужих нанопостов, чтобы пресекать злоупотребление "трафиком" наноборды Спецификации
Каждый нанопост обязательно ссылается на другой нанопост поредством хэш-кода. Хэш код 16-байтовый и выглядит как 32-символьный кусочек текста в шестандцатиричном текстовом виде.
var post = "00000000000000000000000000000000{Welcome to Nanoboard}" var hash = Sha256.hash(post).substring(0,32) // берём хэш в hex и отбрасываем всё кроме первых 32 символов console.log(hash) // результат: f682830a470200d738d32c69e6c2b8a4 Хэш считается с байтов utf-8 кодировки. В nboard этот пост и его хэш используются как "корневые" но это не обязательно. Теперь попробуем "ответить" на корневой пост.
function getHash(content) { return Sha256.hash(content).substring(0,32); } var answer2 = getHash(answer) + "Второй уровень." console.log(answer2) // результат: 77bb9e5d1a64facc551210862e2c6536Второй уровень. Вот так выглядят нанопосты, естественно, внутри можно ставить переносы строк и любые utf-8 символы. Теперь осталось только распространить их. По хэшам все связывается в цепочки. Сложно сказать что является тредом среди нанопостов. Определенно если на нанопост существует несколько ответов то с него можно начинать просмотр "треда". Начать разворачивание можно с любого уровня, это уже на плечах реализаций просмотрщиков Наноборды. В nboard можно разворачивать любые нанопосты кроме корневого, а можно просто просматривать только сам нанопост и его ответы (следующий уровень).
Наноборда берет начало с Анонимных Имидж Борд, Имидж означает наличие картинок. Хотя существуют чисто текстовые борды, наноборда такой не является потому как внутрь можно вставлять base64 изображений. В nboard это реализовано так: если в нанопосте встречается конструкция вида [img=.....] (где вместо точек - base64 строчка то всё это дело превращается в изображение. Кроме того nboard поддерживает разметку жирный, курсив, перечеркнутый, [sp]спойлер[/sp], подчёркнутый, [g]зелёный[/g].
PNG-контейнеры
На АИБ обычно можно свободно постить PNG-картинки. А в PNG-картинку можно вшить данные. В nboard используется подход (и, собственно, код) из этой статьи: http://blog.andersen.im/2014/11/hiding-your-bits-in-the-bytes/ Вкратце суть в том что информация размещается в нижних битах компонентов R, G и B каждого пикселя и это совершенно незаметно на глаз (разница между 24битным цветом и 21битным цветом с дизерингом (информациионный шум) по сути минимальна). Размер картинки после этого обычно увеличивается но не разительно. Информация хранится именно в пикселях, что позволяет скопировать картинку в буфер обмена, вставить в графический редактор, сохранить, скажем, в BMP а потом пересохранить в PNG - вшитая информация не пропадёт. Итак nboard берет некоторое количество свежих (по дате поступления на компьютер пользователя) постов, а также некоторое количество случайно выбранных постов за всё время. При этом избегаются скрытые пользователем посты, а крупные посты отправляются только если являются свежими. Упаковка массива постов происходит следующим образом:
public static byte[] Pack(NanoPost[] posts) { List<byte> bytes = new List<byte>(); // количество постов (от 000000 до ffffff) (строчка в utf-8 байтах): bytes.AddRange(Encoding.UTF8.GetBytes(posts.Length.ToString("x6")));
foreach (var p in posts) { // количество символов (не байтов!) в нанопосте (включая родительский хэш): var len = p.SerializedString().Length; // тот же формат: от 000000 до ffffff (строчка в utf-8 байтах): bytes.AddRange(Encoding.UTF8.GetBytes(len.ToString("x6"))); }
foreach (var p in posts) { // utf-8 байты каждого поста по очереди без разделителей: bytes.AddRange(p.SerializedBytes()); }
// сжимаем результат gzip-ом return GZipUtil.Compress(bytes.ToArray()); } Перед упаковкой в контейнер (после сжатия gzip-ом) применяется шифрование salsa20 по некоторому ключу (для Наноборды пока есть один общий ключ но дальше можно отделяться в отдельные зашифрованные Наноборды (что нежелательно но иногда может быть необходимо):
// Параметры инициализации salsa20 для заданного ключа (key): byte[] initKey = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(key)); byte[] initVec = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(key).Reverse().ToArray()); initKey = initKey.Crop(32); initVec = initVec.Crop(8); На этом пока что всё. Напомню, что PNG-контейнеры - не единственный возможный способ обмена нанопостами и различные АИБ - не единственное возможное место для паразитирования. Одна из экстремальных идей - запихивание нанопостов в QR-коды и разбрасывание/расклеивание этих QR-кодов в местах где их будет удобно считывать (и, собственно, наклеивать/разбрасывать). Так Наноборда сможет продолжить существование даже без интернета. Разумеется, вариант почти фантастический, но пример демонстрирует гибкость и ту самую неубиваемость Наноборды.
>>114521014 смысл в том что сейчас этот тред удалят. ибо абу не терпит конкуренции
а если серьезно: качаешь релиз (свежий - 1.2.3-бета) запускаешь nboard.exe и у тебя есть локальный сервак как в i2p дальше заходишь в браузере на страничку http://127.0.0.1:7345 и оттуда запускаешь поиск постов. ждешь, ходишь по ссылкам.
алсо можно нанобордировать с карманных девайсов если настроить ip.txt на айпишник своего компа в домашней вай-вай сети (обычно что-то типа 192.168.0.102) и с этих девайсов потом открывать http://192.168.0.102:7345 правда неизвестно как себя поведут имеющиеся СТИЛИ на маленьком экране
>>114521557 это ж гитхаб возьми exe удали исходники скачай сам сконпелируй (пройдись перед этим по коду внимательно). или на виртуалке запусти если ссышь. вообще тред в криптаче существует давно (один уже в бамплимите), была бы какая-то вишня - заметили бы
Можно постить картинки, реквестить ЦП, вайпать ниграми или лапомово вспоминать тот самый двач.
Буду пытаться отвечать на ваши вопросы, семенить и бампать, на сложные вопросы может ответить сам создатель сего https://github.com/nanoboard/nanoboard/releases кода в оффициальном треде на специальной доске.