Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
username1565 opened this issue May 25, 2019 · 12 comments
Open

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

username1565 opened this issue May 25, 2019 · 12 comments

Comments

@username1565
Copy link
Owner

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

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

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

@username1565
Copy link
Owner Author

username1565 commented Oct 15, 2019

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

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

@username1565
Copy link
Owner Author

username1565 commented Oct 17, 2019

Надо где-то в 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
Copy link
Owner Author

username1565 commented Oct 21, 2019

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

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

@username1565
Copy link
Owner Author

username1565 commented Oct 22, 2019

Может... Как-то... 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
Copy link
Owner Author

username1565 commented Nov 24, 2019

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

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

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

@username1565
Copy link
Owner Author

username1565 commented Dec 1, 2019

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

@username1565
Copy link
Owner Author

username1565 commented Jan 18, 2020

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

@username1565
Copy link
Owner Author

username1565 commented Jan 18, 2020

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

@username1565
Copy link
Owner Author

Если запустить одну наноборду на порту 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
Copy link
Owner Author

username1565 commented Jan 19, 2020

В общем, посоны, надо что-то вроде наноборды,
без мочи (каждый сам себе моча), опенсорц и чтобы 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
Copy link
Owner Author

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

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

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

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

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


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

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

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


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

@username1565
Copy link
Owner Author

username1565 commented Mar 15, 2020

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant