IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/01/18
~R4SAS
~orignal
~villain
@onon
&N00B
+Xeha
+r00tobo
+relaybot
+whothefuckami
AreEnn
HackerMan
KabaOS
Leastr
Most2
Nausicaa
Orion
Vort
WayBest
WebClient54
`
acetone
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob
osoznayka
poriori
profetikla
segfault
soos
teeth
tensor
tolik
un
weko
orignal зачем? ты и так знаешь что в этом блоке по типу сообщения
orignal тогда если делаешь флаг то 0-sender, 1 - received
orignal *receiver
weko ну ладно да. можно при чём сделать в SessionCreated блок длинной 0
orignal более обобщенное понятие
orignal блок всегда длиной минимум 3
weko size :: 2 bytes, big endian, size of data to follow, 0 - TBD
orignal этот блок всегда 32 байта данных
orignal или 33 если с флагами
weko ну надо поэкономить на спичках то
weko как иначе то )
orignal думаю не стоит
orignal в SessionRequest все равно ничего больше не идет
orignal и в любое mtu влезет
weko а если влезает в mtu, то можно не экономить?
weko ок
orignal потому что без разницы все равно уйдет полный пакет
weko отправлять кстати вроде не надо тогда
weko пусть боб всегда шлёт просто
weko а мы проверяем сами
orignal неее
orignal это обуждалоь
orignal если боб будет отправлять он будет ключи генерить
orignal потому его можно зафлудить
orignal а если идет от алисы он прочел блок увидел что не к нему и сразу прекратил сессию
weko ну тоже тут экономия на спичках
weko меньше на один пакет
orignal нет
orignal не в пакете дело
orignal а в генерации ключей
weko нет разницы кто будет проверять с точки зрения фикса проблемы
orignal даже x25519 довольно затратно
orignal смотри если атакуюий наплодил левых роутеров с адресом боба
orignal то его завалят запросами на каждый из которых он будет генерить пару ключей
weko да. мы можем подключиться, но во время сессии получаем ident боба, а не куда пытались подключиться
weko и закрываем
weko orignal: это в любом случае будет
weko мы никак не можем проверить не тыкая транспорт
orignal мы ткнули
orignal боб получил SessionRequest
orignal увидел тот блок если не тот то он ключ не генерит
weko а понял
weko да важно
orignal потому и решили что выгоднее если отправил алиса
orignal а тем времеем я закоммитил ту проверку в NTCP2
weko при fix 2 нам нужно сделать запрос, чтобы проверить.
weko и при fix 3 тоже запрос нужно сделать.
weko но это норм, флудить RI не проверив вообще идея не годная.
weko orignal: которая фиксит зависание?
weko я пока не буду качать чтобы найти почему не пересоздаётся
orignal которая проверяет длину данных
weko orignal: при обратной совместимости, выходит так, что атакующий может создавать роутеры с новой версией, и тогда что в RI наёб мы узнаем только когда придёт SessionCreated
weko тоесть Bob создаст ключ
orignal а не пох тогда если у алисы старая версия?
orignal тут ничего не поделаешь
weko короче старые роутеры так можно будет дудосить (хотя на самом деле нет, так какие RI не будут флудится а потом и удалятся)
weko у боба ну не важно
weko да ничего не сделать
orignal просто в какой то момент боб может отказаться принимать запросы без этого блока и все
orignal идите ... в NTCP2 ))
weko ахахах
weko ну да
weko когда отключит совместимость
orignal через пару версий
weko 1 byte flags, 32 bytes ident.
weko Flag 0: 0 if reciever's ident; 1 if sender's ident
weko Alice (should(1), can(2)) send in payload RouterIdent block with 0 in Flag 0 and Bob's ident.
weko Bob (should(3), can(4)) check is it his ident, and if not equals - terminate session with "Wrong ident" reason, if equals - send RouterInfo block with 1 in Flag 0 and Bob's ident.
weko (1) - Bob do not support old routers.
weko (2) - Bob support old routers, but can be victim of DDoS from old routers, that trying to make connection with fake RIs.
weko (3) - Alice do not support old routers.
weko (4) - Alice support old routers and using hybrid scheme: Fix 1 for old routers and Fix 2 for new routers. If RI says new version, but while connection
weko думаю понятно
orignal нормально да
weko всё скинул деду
orignal и что он сказал?
weko он пока ничего
weko но дрозд
weko <dr|z3d> nice work, weko
orignal счас загляну туда
weko if (ecode != boost::asio::error::operation_aborted)
weko LogPrint (eLogInfo, "NTCP2: Not connected in ", timeout, " seconds");
weko conn->Terminate ();
weko а почему уровень info ?
weko LogPrint (eLogInfo, "NTCP2: Connect error ", ecode.message ());
weko и тут
weko ну ошибка бывает
weko в основной сети много такого наверняка
orignal потому что это не ошибка
orignal потому что ситуация когда ты стучишься к роутеру не в сети довольно часто
weko ну просто я к тому что возможно должно быть debug
weko ну ладно
weko так, во первых мой фикс дропа превышения буфера не работает - NTCP2: Outgoing messages queue size to UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= exceeds 1000
weko странно
weko if (m_SendQueue.size() == NTCP2_MAX_OUTGOING_QUEUE_SIZE) break;
weko for (auto it: msgs) {
weko m_SendQueue.push_back (std::move (it));
weko if (m_SendQueue.size() == NTCP2_MAX_OUTGOING_QUEUE_SIZE) break;
weko быть такого не может что оно превышает...
weko может из другого потока пришло
weko уж не знаю ...
weko интересно почему оно вообще превысило, но это вопрос другой
weko кстати, роутер помечается как Unreachable меньше милисекунды
weko совсем короткое время
weko orignal: кажется понятно
weko [18/Jan/2024:01:18:10 +0000]:639@330/info - NTCP2: Connecting to 127.0.0.3:23234 (UBxd)
weko [18/Jan/2024:01:18:10 +0000]:639@330/info - Transports: No compatible addresses available
weko [18/Jan/2024:01:18:10 +0000]:639@685/info - NTCP2: Connected to 127.0.0.3:23234 (UBxd)
weko [18/Jan/2024:01:18:10 +0000]:639@685/info - NTCP2: Connected from 127.0.0.3:59147
weko [18/Jan/2024:01:18:10 +0000]:639@685/info - NTCP2: SessionConfirmed from 127.0.0.3:59147 (UBxd)
weko [18/Jan/2024:01:18:10 +0000]:639@685/warn - NTCP2: Session with UBxd~t6gvZQ1JowOQq1w9qhn~~2Gy7XCE6eJjXmUQZ8= already exists. Replaced
weko [18/Jan/2024:01:18:10 +0000]:639@685/info - NTCP2: Session with 127.0.0.3:23234 (UBxd) terminated
weko [18/Jan/2024:01:18:11 +0000]:083@685/warn - NTCP2: Receive length read error: End of file
weko [18/Jan/2024:01:18:11 +0000]:083@685/info - NTCP2: Session with 127.0.0.3:59147 (UBxd) terminated
weko видимо потому что одновременно
weko интересно всё это, потому что тут похоже другая ситуация... хз
weko явно потому что одновременно пытаются устнановиться сессии
weko надо проверку сделать
weko вопрос только как сделать?)
weko возможно и не надо проверку. надо убрать что не даёт двум сессия сосуществовать. просто добавить что одна закроет как станет ясно что это один и тот же роутер
weko закроется*
weko короче вот почему не переподключается.
weko на этот раз ошибка из-за которой сдохла сессия такая:
weko NTCP2: Receive read error: End of file
weko делаю попытку номер 2
weko странно, теперь другая ошибка всплывает
weko NTCP2: Receive read error: End of file
weko и всё
weko дичь полная конечно ...
orignal end of file это закрытие сокета
orignal то есть ты хочешь сказать что два роутера соединяются одновременно ?
weko да
weko ну сам смотри логи
weko выглядит именно так
orignal возможно
orignal это ситуацию надо обдумать
weko вопрос конечно почему потом Garlic не работает...
orignal более или менее понтяна проболма
weko Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko вот после начинается
weko при чём после этого реконекты уже не идут кажется
weko возможно где-то гонка
orignal да это не главно
orignal вот что надо сделать
orignal когда происходят попытки разных транспортов надо проверять между ними не появилось ли соединение
weko ну и ещё надо пофиксить что Unreachable ставиться
orignal так если сессия появилась надо прекращать попытки
orignal я починю это завтра
weko а по поводу того, что ты сегодня я щас попробую глянуть
weko если воспроизведётся
orignal ну я понимаю где это чинить надо
weko мне не понятно почему мой код не отрабатывает как надо. но это потом уже.
orignal вместо == напиши >=
weko хорошо но проверю позже уже
weko отлично
weko воспроизводится
weko [18/Jan/2024:02:08:31 +0000]:778@312/warn - NTCP2: Received AEAD verification failed
weko но интересно что пофиг какая причина, баг что не пересоздаётся всё равно всплывает
orignal надо смотреть кто формирует и кто принимает
orignal так это понятно почему
orignal теперь
weko ну да, я сейчас поставлю фикс и проверю
weko просто надо понять исправлено или нет
orignal думаю что нет
orignal я это добавил в приципе потому что было неправильно
weko я проверю чтобы не гадать
weko мне кажется или HandleReceivedLength что-то не то
weko после исправления
orignal а что там не то?
weko а нет
weko вроде ок
orignal там должно быть ровно 2 байте не больше и не меньше
weko это я тупанул
weko <orignal> я это добавил в приципе потому что было неправильно
weko не уверен. tcp сокет же должен всегда возвращать ровно сколько запросили
orignal а если не может?
orignal но в первую очередь там в одном месте код ощибки не проверялся
weko это да тоже увидел
weko опять началось вот это [18/Jan/2024:02:31:31 +0000]:455@115/warn - NetDb: Destination XhEIGm6AzAjGdMc-H9dc9qtnxGdEzlMOHycI-FZagbQ= is requested already
weko вроде не спамит сильно
weko но вот постоянно пишет
weko пачками
weko запишу в todo, возможно ещё не исправлено
orignal должно писать
orignal но должно потом останавливаться
orignal надо warn поменять на info
weko ну я пока на смотрел этот баг
weko он рандомно всплывает
weko NTCP2: Received AEAD verification failed
weko не помогло
orignal я тебе это сразу сказал
orignal надо понять что отсывается
weko думаю эта информация важна
weko решил посмотреть что по тредам проиходит
weko думаю это случается именно когда тред Destination перегружается
orignal с отправкой там все непросто
weko я думаю случается гонка и какой то ключ становится неверным
orignal нет
orignal там всегда 1 тред для NTCP2
weko но смотри
weko Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko это же не ntcp2
weko значит проблема вероятно не в нём
weko я могу попробовать лимитнуть и проверить.
orignal да это вообще другая проблема
orignal это с тагсетами связано
weko но всплывает то оно одновременно
weko хотя Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko всплывает и когда просто закрывается стрим
weko слишком сильное уж совпадение. перегрузка треда и зависание сразу же
weko Комп не осилил одновременно сборку и тестнет. Завтра посмотрю что будет если исключить перегрузку треда
weko дед совсем обленился
weko ему уже лень добавлять пропосал
orignal так а ты думал почему я не пишу ))
Anonymous orignal, is RI payloaded inside of SessionRequest and SessionCreated?
Anonymous I am editing some document and can't understand weko lol
weko Anonymous: write RouterIdent not just RI
weko it confusing
Anonymous I agree it's fucking confusing lol
Anonymous no idea why you even used that acronym (RI)
Anonymous it's stupid
weko becouse we often RI shorter then RouterInfo
weko because*
Anonymous often !+ always
Anonymous I'll just specify RI=RouterInfo then
Anonymous not everyone worked with i2pd code yet ;P
orignal SessionConfirmed
Anonymous weko, I replace SessionCreated with SessionConfirmed?
orignal no SessionConfimed contain RI
orignal but weko's proposal is about RouterIndent
weko Anonymous: shut up plz
weko just fix grammar as you wanted
weko <Anonymous> weko, I replace SessionCreated with SessionConfirmed?
weko no, everythink is OK
Anonymous you two agree on it then talk to me
Anonymous not my problem you 2 cannot English and me understand
weko Anonymous: orignal can but read your RI as RouterInfo
weko and RouterInfo sending SessionConfirmed
Anonymous I'll grammar
Anonymous (^ not good English, I was joking)
weko Anonymous: just learn russian
weko Russian is main i2p develepment language
weko пусть реально русский учит
weko диктат)
Anonymous one day maybe
weko orignal: разберёмся с этим багом и я займусь тем, что оформлю скрипт тестнета
weko чтобы удобно было управлять