username1565 / nanoboard

nanoboard client repository restored from pulled sources
17 stars 2 forks source link

Что ещё исправить тут? #5

Open username1565 opened 5 years ago

username1565 commented 5 years ago

Наверняка, можно было бы сделать динамические пароли, а то одним лишь паролем nano3, все нанопосты в пикчах шифровать - ну это воопстшче не комильфо.

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

А ещё, у меня есть аналог Энигмы на isaacCSPRNG, вот тут Исходник - вот здесь: https://github.com/username1565/isaacCSPRNG/ Можно было бы хэш поста, к котрому отвечает нанон, как seed использовать для этого скрипта, и постить кракозябры, а расшифровывать скриптами на клиенте. Тогда вообще борода была бы не только стеганографическая, но ещё и криптографическая.

username1565 commented 5 years ago

Иногда, проще выразить мысль простым рисунком. Поэтому, можно было бы ещё встроить literallycanvas, как на https://2ch.hk/test/ ну, чтобы картинки можно было рисовать и сразу же отправлять. Но как это сделать - не знаю...

UPD: Прицепил рисовалку попроще, на одну страничку.

username1565 commented 5 years ago

Надо где-то в Aggregator.cs засунуть

GC.Collect();

или

GC.WaitForPendingFinalizers();

по критерию:

long usedMemory = GC.GetTotalMemory(false);
Console.WriteLine("ParseText, in foreach cycle - usedMemory: "+usedMemory);

Чтобы не съедало много памяти при Collect'e.

Не знаю куда это прописать, куда уже только не совал эти строчки, но иногда всё-равно получается вот такой Throw Error:

Необработанное исключение: OutOfMemoryException.

UPD: Наконец-то я разрулил это.

username1565 commented 5 years ago

Может... Как-то... Keep-alive HTTP-connections сделать? А то много соединений открывается, XHR-запросы эти шлются целая куча их (в консоли браузера видно). Ну что за фигня? Можно было бы, наверное, одно соединение открыть и много данных туда приёмо-передавать... Но как это сделать?.. Не знаю...

P.S.: Вот здесь, я вижу keep-alive-соединения в фаерволе: https://github.com/alexmelyon/nanoboard Они не открываются каждый раз, при collect'e картинок. Данные картинок идут по одному соединению. Надо будет код поколупать, и возможно для HTTP-соединения сделать подобное, отключив XHR-запросы как-то...

username1565 commented 5 years ago

Может... Как-то... Keep-alive HTTP-connections сделать? А то много соединений открывается, XHR-запросы эти шлются целая куча их (в консоли браузера видно). Ну что за фигня? Можно было бы, наверное, одно соединение открыть и много данных туда приёмо-передавать... Но как это сделать?.. Не знаю...

P.S.: Вот здесь, я вижу keep-alive-соединения в фаерволе: https://github.com/alexmelyon/nanoboard Они не открываются каждый раз, при collect'e картинок. Данные картинок идут по одному соединению. Надо будет код поколупать, и возможно для HTTP-соединения сделать подобное, отключив XHR-запросы как-то...

Нашёл WebSockets под .NET Framework 4.0 (net40): https://github.com/username1565/Fleck2 Удалось даже сконпелировать и получить DLL-ку. Вижу Newtonsoft.Json.dll как-то инклюдится туда, в борду и код. Поэтому, можно было бы, наверное, и WebSocket'ы в неё прицепить, чтобы одно соединение открывалось, и трафик внутри него гонялся, а не дофигища целая соединений, которые открываются XHR-запросами и закрываются. Вебсокеты в этом плане лучше, а ещё лучше - сокеты. Но как их вписать туда, конечно же - я не знаю.

username1565 commented 4 years ago

Надо бы реализовать полноценный long-pooling 2acd4d300cebe605e1dab1145df58413_long-poll но чё-то руки никак не доходят. Пока-что, просто используются различные таймауты, но запросов отправляется - всё-равно дофига, как и соединений. Всё это видно в консоли браузера, и в фаерволе, а также в ">netstat -an";

long-pooling я так и не реализовал, просто потому, что на некоторые запросы сервер отвечает с кодом "404" и прочими ошибками, после чего соединение закрывается и через время - снова отправляется новый запрос. А надо не отвечать ничем, чтобы отправленный запрос - "повис в ожидании", и чтобы пока нет ответа - вообще не слался никакой другой запрос, и чтобы соединение было одно.

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

username1565 commented 4 years ago

Есть бредовая идея - перепилить наноборду на JavaScript, все базы засунуть в LocalStorage браузера и сделать её client-side - только в браузере, ведь она - изначально без серверов. Но тогда, базы будут занимать 20 мегабайт где-то, и браузер может крашится от всей этой фигни. Зато, можно было бы криптовать базу в LocalStorage и жать её - каким-нибудь deflate, как в zip-архивах, и заодно, качать в папку загрузок, очищая LocalStorage. А файл - распаковывать рядом с html-файлом и подгружать оттуда данные, инклюдя его как скрипт.

username1565 commented 4 years ago

Попробовать реализовать Collect PNG - прямо через TOR, из тредов на .onion-доменах, например с треда на лунной борде http://nichank62kpkrxvg.onion/res/5833.html

username1565 commented 4 years ago

В этом треде: http://127.0.0.1:7346/pages/index.html#thread547039e7d112741f2bc2a0b25f863c82 не отображаются картинки в некоторых версиях mozilla firefox но в 360 Extreme Explorer и Google Chrome - отображаются. При этом, картинки .webp, а имя файла - .jpg. Надо изменить на .webp, но не пойму где. webp webp2

username1565 commented 4 years ago

Если запустить одну наноборду на порту 7347, скачать посты, а затем, вместе с ней - запустить другую наноборду на порту 7346, то с первого nanodb-сервера, можно слить посты, по адресу: http://127.0.0.1:7346/pages/TEST_download-upload-posts.html

Есть идея, прокинуть 127.0.0.1:7346 на какой-либо домен, или ещё лучше - на onion-домен, чтобы наноборда всегда была онлайн, в TOR'e.

Также, можно загрузить посты на первый nanodb.exe-сервер. Таким образом, bitmessage транспорт может быть не нужен, так как можно пушить посты на onion-серверы. Из этого вырастает ещё одна идея - стеганографировать внутри пикч, помимо постов - ещё и onion-адреса для координации.

Как всё это закодить, конечно же не знаю, хэххэх... Но думаю что только вместе - мы разберёмся, а то мне как-то впадло одному тут городить неведомое.

username1565 commented 4 years ago

В общем, посоны, надо что-то вроде наноборды, без мочи (каждый сам себе моча), опенсорц и чтобы p2p!

Кажется, что наноборду можно развить до уровня p2p-борды, сделав движок p2p-имиджборды, с открытым исходным кодом, чтобы синхронизировала инфу эта борда по принципу bitTorrent закачек, соединяясь с разными пирами в децентрализованной сети.

Первое, что приходит на ум - это TOX-протокол, так как TOX - p2p-программа, и может работать даже в LAN. Там, можно создавать групповые чаты, и работает асимметричное шифрование, которое - хуй взломаешь. Можно делиться файлами, и отправлять картинки. Чем не имиджборда?

Но там нет системы тредов, ответов, постов, нитей, цепочек ответов, трипкодов, бампов, сажи, и всего такого, то есть если делать борду, то придётся всё перепиливать нафиг. Такие дела.

Было бы годно ещё что-то вроде BitTorrent'a, эдакая децентрализованная раздача постов, как частей некоего динамического файла. Разумеется, в зашифрованном виде. Можно было бы даже при помощи XOR и различных раздач - сделать отрицаемое шифрование.

Пример (4-байтные файлы):

A=00001111 11110000 01010101 11111111 — файл, раздачу которого преследуют копирасты 
B=00111101 10101000 10010101 11110110 — нагенерированный рандом
C=00110010 01011000 11000000 00001001 = A xor B . Неотличим от файла, заполненного случайными данными

D=10101010 10101010 10101010 10101010 — файл, на раздачу которого копирастам похуй
E=10011000 11110010 01101010 10100011 = C xor D

Раздаю С и E, xor которых дает неинтересный копирастам файл D.
Другие пользователи таким же образом раздают B и (D' xor B),
где D' — такой же неинтересный копирастам файл.
Таким образом, одновременно раздаются B и C, xor которых даст A.

"Четырёхбайтными файлами" могут быть части некоей динамически-изменяющейся по размеру - bitTorrent-раздачи.

username1565 commented 4 years ago

Предлагаю запилить отдельный сервер (lite-server), для пробрасывания в TOR. Он может запускаться на следующем порту 7346+1 = 7347, и прослушиваться там, параллельно с полным сервером.

С этим lite-сервер'ом, аноны, отправляя на него запросы через TOR, аноны смогут:

На полном сервере админ, сможет просмотреть список репортов, и удалить пост. На полном сервер - можно удалить репорты. (* смотри "мочерация нанобороды")

Дальше... Некоторые функции из API для lite-сервера можно было бы отключить, а лучше сделать отдельное API.


(* мочерация нанобороды ) К вышеуказанной мере я очень отрицательно отношусь, потому что статья 19 "Всеобщей декларации ООН о правах человека" гласит следующее:

Статья 19
Каждый человек имеет право на свободу убеждений и на свободное выражение их;
это право включает свободу беспрепятственно придерживаться своих убеждений
и свободу искать, получать и распространять информацию
и идеи любыми средствами и независимо от государственных границ.

Модерация в любой форме - нарушает эту статью, а значит - нарушает права человека. Однако, в конце концов, для защиты от тех же вайпов - всё-же необходимо удалять посты. К тому же, админ, как владелец сервера и хранилища данных, может позволить себе удалить что угодно, даже всю наноборду. Если кого не устраивает удаление постов, вырождающееся в повышенный уровень цензуры - просто поднимайте свой сервер, вешайте в TOR, хостите его и синхронизируйте посты там. Благо то, что исходный код открыт.


Кто что думает по этому поводу? Ваши предложения, пожелания? В общем, я начал всё это пилить. Если получится сделать - просто выложу код, а там уже сами смотрите.

username1565 commented 4 years ago

Нашёл вот такой менеджер загрузок -> мой форк - здесь: Компилируется на Windows XP с .NET Framework 4.0. Как его пришпандорить сюда - пока не пойму, но можно было бы, куда-то, в Aggregator.cs это дело присунуть, и под консоль переписать, чтобы многопоточно, с докачкой, пикчи качались, и чтобы прогресс отображался ещё... Остальные менеджеры загрузок - требуют .NET Framework 4.5 и выше, поэтому - сразу нафиг их.