IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/01/25
~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
weko dgram->SetReceiver
weko dgram->SetRawReceiver
weko понятно что функции разные вызываются, но может сделать одну функцию.
weko или не выпендриваться?))
weko одну функцию Set
weko имею ввиду
weko в которой задавать два коллбэка
orignal да это ньюансы
orignal но как ты понимаешь дляс Raw и Repliable в общем случае разные обработчики
weko да понятно
weko это я трогать не буду
orignal то что у нас UDP Tunnel такой смешащанный в дальнейшем может быть и не так
weko просто порт для одного туннеля в обоих случаях один
orignal тот же SIP тоннель там для RTP только raw надо
weko получится, что
weko m_ReceiversByPorts
weko m_RawReceiversByPorts
orignal могут быть и разные
orignal m_DatagramReceiversByPort
orignal m_RawDtagramReceiverByPort
orignal это реально разные сущности
weko ну и так понятно что datagram
weko ладно пофиг
orignal нет у ClientDestination же есть стримы
orignal короче я счас не помню что там ))
weko тут DatagramDestination
weko ничего кроме датаграмм быть не может
orignal а ну тогда да
orignal только мне думается правильнее их разводить по портам в ClientDestination
orignal потому что Data с заголовка обрабатывается там
weko DatagramDestination::FindReceiver
orignal ну не помню я
orignal там еще псих чего то менял
weko наведу порядок где понимаю
weko std::vector<uint8_t> m_From, m_Signature;
weko мда
orignal это где такое?
orignal ну это точно не мой код ))
weko Datagram.h
orignal точно не я
weko тут ещё inport не смотрится
weko ща сделаю наверное тоже
weko а тут просто поменять надо
weko / TODO: handle B33
weko а вот тудушка есть
weko а так наверное проблема в том что мы отправлять на bb32 не можем
weko а не то что задать
orignal ну так я собирался сделать и не сделал ))
orignal все как всегда
weko !m_RemoteAddr || !m_RemoteAddr->IsIdentHash ()
weko мне кажется тут легко исправить
weko auto session = m_LocalDest->GetDatagramDestination ()->GetSession (m_RemoteAddr->identHash);
weko если вот это умеет то и заработает
orignal m_RemoteAddr->identHash
orignal вот тут как раз и проблема
weko да вот тут надо исправить
orignal потому что для b33 там другое поле
orignal и другого формата
orignal которое надо запрошивать иначе
weko std::shared_ptr<DatagramSession> DatagramDestination::GetSession(const i2p::data::IdentHash & ident)
weko return ObtainSession(ident);
weko гениально
weko да тут надо переделать m_Sessions ещё
weko DatagramSession
weko тоже
weko ладно не так уж и легко
orignal Vort я починил как обещал
weko orignal: для клиентского UDP туннеля inport тоже можно задать кстати
orignal сделал проверку не с одного того же ротуера смещение
orignal клинтским я еще не занимался
orignal там тоже хватает проблем
orignal я замысел психа не понял до конца
orignal а еще непдохо бы мультикаст прикрутить
weko да тут всё просто если вкурить
weko мультикаст я не ебу как работает
orignal угу
orignal ну я ебу
weko я могу максимум только попробовать bb32 впилить
weko попробовать
orignal клинтский тоннель слушает мудьтикаст группу
orignal серверный срет в группу
weko группу задаём как набор i2p адресов?
orignal нет локальный IP начинающийся на 239.
weko orignal: что считать inport у клиентского udp?
orignal смысл тоннеля проброс мульикаста с одного места в другое
orignal не знаю не разбирался
weko ну сервер пересылает же на какой то порт
orignal свой естественно
weko с какого пришло на такой и шлёт. а какой отсылкается? хз
weko видимо тут есть
orignal точнее не свой а приложения
orignal сервер отправит порт на котором висит сервер приложения
weko uint16_t remotePort
weko orignal: нет тут именно в i2p порта
weko порты
weko серверный туннель
weko ща посмотрю сервер отправляет ли
orignal а него local это куда шлется
orignal remote это с какого шлет когда получил по I2P
orignal тут вопрос у меня такой
orignal а если поключатся два клиента с одним и тем же портом
orignal это тоже надо разруливать
weko надо
orignal какой то эфемеральный надо ставить
orignal псих когда вот это все городил он даже не думал
weko <orignal> какой то эфемеральный надо ставить
weko не знаю где он определяются
weko при создании сессии у клиентского должно быть
weko ща гляну
orignal ну сервер не может значит что там клиенты намудят
weko ну порт то определяется клиентов
weko клиентом
orignal надо для серверного задавать диапазон эфемральных портов
orignal угу
orignal а если двум клиентам угораздило выбрать одинаковый?
weko ой блять не знаю тут жесть какая то
orignal а если этот порт занят кем то другим
orignal например SSU2
orignal вот так совпало
weko <orignal> а если двум клиентам угораздило выбрать одинаковый?
weko ну в обычной сети в таком случае обязательно адрес разный. а у нас в таком случае разные адреса и соотвественно сессии
orignal а ты подумай откуда symmetric nat берется
orignal вот как раз отсюда
orignal ты отслыаешь со своего порта
orignal а роутер не может перенаправить этот порт на тебя потому что занят
orignal и выбирает другой
weko ну можно и так. в i2p NAT никаких нету
orignal ну ситуация аналогично
weko не думаю
weko сложно тут описывать ))
orignal несколько разных клиентов и каждому подавай свой порт
orignal короче надо это чинить
weko m_LocalDest->GetDatagramDestination ()->SendDatagram (session, m_RecvBuff, transferred, remotePort, RemotePort);
weko топ вообще
weko orignal: самое просто это по сессиям различать. а клиентам сделать чтобы с одного адреса использовались разные порты
weko вроде сейчас и так уже по сессиям
orignal нет я про другую сторону
orignal m_LastSession->IPSocket.send_to(boost::asio::buffer(buf, len), m_RemoteEndpoint);
weko если клиент с одного адреса разные для разных туннелей использует один порт, то это его проблема
weko orignal: а тут что не так
orignal привязка к порту IPScoket
orignal так а если два разных клиента
weko так тут m_LastSession
weko тут нужный сокет берётся
weko ты ж чинил там
weko и там создаётся случайный вроде как
orignal IPSocket(localDestination->GetService(), localEndpoint),
orignal смотри какая дрянь тут
orignal boost::asio::ip::udp::endpoint(addr, 0)
orignal а ну да
orignal выбирается первый попавшийся
orignal нолрмально
weko ну дак
weko я пока над клиентским туннелем думаю
weko ну да кстати реально пофиг какой source port указывать клиентскому туннелю
weko потому что он всегда перенаправляет с одного места в другое
orignal скорее всего
weko для прокси я думаю это важно
weko ну если кто то будет делать
weko SOCKS
weko orignal: а нет на самом деле важно
weko или нет , ща ... ))
weko да пока что поз
weko пох
weko блин теперь ещё в SAM чинить
orignal а там то что?
weko ну тоже же UDP
orignal там датаграммы разве работали?
weko params.find(SAM_PARAM_HOST)
weko params[SAM_PARAM_HOST]
weko в чём отличие?
weko orignal: хз, но не компилируется
orignal это я думаю для sam 3.3 который не доделан
weko ну сделаю чтобы компилировалось
weko а далее уже не ебёт )
orignal там вроде датаграммы из sam1 работают которые реально через стримы
weko лол
weko ну пох)
orignal а нет что то там работает
orignal погоди polistern же их как то использует
orignal короче там надо осторожно
weko ну сам посмотришь
orignal угу
weko я порт просто который берётся передам в функцию
weko которую я менял
weko которые)
weko интересно, что он проверялся, но не использовался
weko а нет использовался
weko <orignal> там вроде датаграммы из sam1 работают которые реально через стримы
weko кому в голову пришла эта гениальная идея ? деду? jrandom-у??
weko ура, собрал
orignal не знаю
orignal так сразу было
orignal и так iMule работал
weko сначала проверю что ничего не сломал, потом проверю что заработало что я поменял
weko ура
weko я ничего не сломал
weko прикольно, пинг скачет между 17 и 33 ))
weko но хз как в игре мереяется
weko работает заебок
orignal ну тогда делай PR
weko ок сделаю, сначала интересно глянуть как работало
weko хм
weko я думал хотя бы один работать будет
weko а оно вообще не работает
weko я потом посмотрю что там в 1928 PR, там вроде что-то сделать надо было, я уже не помню
weko вот это если исправлено надо закрыть
orignal порядок
orignal смержил
weko отлично!
orignal проверю видео поток ))
weko проверь )
weko можешь даже проверить создав несколько туннелей
weko и будет работать
weko а я обновил на games.i2p по поводу бага
orignal может даже мультикаст добавлю
weko лучше bb32
weko у acetone была потребность
weko для обфускации WG
orignal все работает как положено
orignal b33 я посмотрю что там надо
orignal уже все забыл как делал
weko ну там понятно надо поменять тип
weko но ещё что-то возможно
orignal void SendDatagramTo (const uint8_t * payload, size_t len, const i2p::data::IdentHash & ident
orignal и сразу упираемся в ident
weko ну это понятно
weko а если поменять на другой тип
weko есть же универсальный вроде
orignal там дальше поиск лезсета
weko а что принимает функция?
weko которая ищет
orignal короче тут правильнее передавать лизсет
orignal а struct Address
orignal у нас в libi2pd_client
weko а что в стримах?
orignal короче думать надо как это все разрулить логически
weko ну универсальный надо объект
orignal надо
orignal но надо разбираться
weko m_RemoteLeaseSet = m_LocalDestination->FindLeaseSet(m_RemoteIdent);
weko если в стримах работает так и тут должно
orignal там ниже RequestDestination
weko тут тоже IdentHash именно
orignal нет в стримах не так
orignal там 2 разных метода вызывается
weko RequestDestinationWithEncryptedLeaseSet
weko угу
weko i2p::data::BlindedPublicKey
orignal ну правильно оно вызывается снаружи
weko должен один метод быть наверное
weko для этого надо один объект
orignal навереное
orignal но это надо переделывать
weko и много переделывать )
weko но можно и не переделывать
weko DatagramSession::GetSharedRoutingPath
orignal а вот в стримах есть такая интересная констуркция
orignal if (m_RemoteLeaseSet->IsPublishedEncrypted ())
orignal m_LocalDestination.GetOwner ()->RequestDestinationWithEncryptedLeaseSet (
orignal std::make_shared<i2p::data::BlindedPublicKey>(m_RemoteIdentity));
weko вот тут просто дописать
weko orignal: да увидел
weko такую же можно написать в датаграммы
orignal надо в датаграммах сделать аналогичное
orignal проблема что у тебя в начале только b33 а не полный адрес
orignal который еще надо найти
weko так как же как и когда b32
weko мы же ищем по b32 всё равно на флудфилах
orignal что по b32 что по b33 снчала надо найти лизсет с полным адресом
weko ну и что
weko логику это никак не меняет
weko ну тут
weko объект вполне можно сделать
weko а на уровне лиссетов уже будет идти разная логика
weko настало время ssu2 потестить
orignal а там то что?
weko ну помнится скорость была говно
weko но надо проверить
orignal а ну да в тестовой сети
orignal с этим и правда надо разбираттьсч
weko при нуле пинга ssu2 выдаёт кажется нормальную скорость
weko пинг наверняка где то из-за буферов tcp или стриминга
weko хмммм
weko SSU2 тред перегружен
weko ух
weko и тут оно заглючило
weko Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko почему то я не удивлён
weko SSU2: Unexpected message type 26 instead 9
weko какой то баг просто в логах видно
weko RouterInfo: Signature verification failed
weko NTCP2: RouterInfo verification failed in SessionConfirmed from 127.0.0.196:40405
weko тоже интересно
weko SSU2: Unexpected message type 62 instead 9
weko ну явно баг
weko куча Duplicate message прилетает на стриме
weko да полная хуйня по скорости когда добавляю пинг
weko похоже связано с размером окна
weko опять же)))
weko у меня подозрение что слишком медленная переотправка
weko ну в общем низкая скорость стрима идёт из того, что куча Missing messages
weko зависит от пинга сильно
weko вполне вероятно что это локальная херня какая то
weko явно пакеты пропадают не в i2p
weko потому что нету лога что i2np дропаются
weko по поводу большого пинга - думаю копится в системном буфере
weko ща попробую его задать меньше
weko я уже срезал буфер на отправку
onon Пришла тут в голову одна мысль. Атакующий забивает трафиком сеть, большое количество роутеров упираются в лимит, выставляют флаг Е. Сам атакующий флаг не выставляет, повышая вероятность, что жертва будет строить тоннели через подко
onon узлы.
weko будет видно что он себе не срёт
weko и тем более флаги
weko но определение не сделано
weko на данный момент лучший вариант - лимитировать туннель
weko ну типо 2 mbit/s например
weko а то жрут дохуч некоторые
weko boost::asio::socket_base::receive_buffer_size option(I2P_TUNNEL_CONNECTION_BUFFER_SIZE);
weko socket->set_option(option);
weko хммм
weko ну пинг кстати кажется понятно откуда
weko или нет )
weko ну packet loss понятно
weko но мб и что-то другое что было в команде
weko SSU2: message 1667578759 was not completed in 30 seconds, deleted
weko хм
weko это же тупняк с переотравкой?
weko Destination vEQcqSB4Tzbi3BmjZk1Ohp2bqFQWSJfI1p62vD9swu8= is requested already
weko опять начало
weko вроде не бушует
weko про 2 роутера пишет это
weko переодически
weko наверное тут проблема именно в стриминге а не в ssu2
weko потому что любая перестановка и уже режется окно в 2 раза
weko в tc есть reorder
weko можно задать
weko SSU2: Unknown peer test 4 nonce 3436196901
weko Clients: I2P Server Forward for destination/port ydaicwvftznhkd4qv3dlwsoiycohukmo3gcyf5xojc4j2cusrriq.b32.i2p/22221 already exists
weko тож хз почему
weko надо смотреть разбираться
weko пир профили чтоль
weko опять
weko хуйня какая то выходит, пиздец
weko doas tc qdisc add dev lo root netem delay 30ms reorder 10% gap 5
weko 500-1000
weko doas tc qdisc add dev lo root netem delay 30ms
weko 500
weko какого хуя с reorder лучше работает
weko может из-за того что ssu2 собирает фрагменты порядок лучше становиться
weko не ебу как но реально с reorder скорость лучше
weko ну надо чинить стриминг и далее смотреть
weko ну ещё заметно как SSU2 больше процессор занимает
weko когда я ставлю 0 пинг, упор идёт именно в тред SSU@
weko ssu2
weko тогда как с ntcp2 идёт упор в тред Destination
weko можно с помощью udp посмотреть как получается
weko но тут сложнее будет уже сделать ...
weko SSU2: Our external address is 127.0.0.3:23234
weko это совпадние, что этот лог идёт в ту же милисекунду, что начинается Garlic: Can't handle ECIES-X25519-AEAD-Ratchet message
weko ???
weko тут ещё есть ElGamal decrypt hash doesn't match
Vort поставил последний коммит тестироваться. если и с ним пролезет глюченое время, значит это таки атака
Vort хотя если атака действительно вчера закончилась, то уже и не проверим
Vort интересно. не видел раньше такой ошибки. "error - Addressbook: Malformed domain: "
Vort кто-нибудь разбирался с ней?
Vort может, это происходит из-за пустой строки в конце addresses.csv? или там всегда была пустая строка?
orignal так посмотри в каком месте она
orignal а откуда всязлся NTCP2 если у тебя только SSU2?
weko Я поменял с ntcp2 на ssu2
orignal правильно так а почему ошибка NTCP2?
weko SSU2 вроде только
weko Не понимаю
orignal вот и я не понимаю откуда ошибка NTCP2
Vort orignal: не пойму вопроса. говорю же - в конце файла. и спрашиваю - так надо или это баг?
orignal weko> boost::asio::socket_base::receive_buffer_size option(I2P_TUNNEL_CONNECTION_BUFFER_SIZE);
orignal это где такое?
orignal Vort если так на пустую строку реагирует то явный баш
weko В I2PTunnel.cpp
orignal ну и что с этим не так?
weko Вроде ок
orignal там вроде 64K
weko Да
Vort ну я пока хз из-за чего ошибка лезет. просто увидел пустую строку и возникло подозрение
Vort интересно, что эта ошибка приходит волнами. то почти каждый день есть, то месяцами нету
orignal так надо посмотреть в коде по какой причине она возникает
orignal домен не заканчивается на i2p?
Vort дело в том, что я полностью ошибку выложил
Vort то есть после двоеточия ничего нету
orignal это я понимаю
Vort ну если был бы домен без .i2p, то он бы оказался в логе
Vort а там пусто
orignal я спрашиваю в коде по какой причине она сраюбатывает
orignal если пусто а не пробелы то это баг
orignal надо починить
Vort сейчас потыкаю на предмет воспроизводимости
Vort я даже не знаю пока что - с сети это идёт или из локального файла
orignal да откуда угодно пустые строки надо игнори ровать
Vort сборку кто-то сломал
Vort это ж моя везучесть ) гонюсь за одним багом - вляпываюсь в другой
orignal а что сломали?
orignal все вроде собирается
Vort ssize_t кто-то воткнул
Vort а это нестандартная фича
orignal ну я воткунл
orignal в каком файле?
Vort NTCP2.cpp
Vort 5e19e361
orignal так а почему у меня под виндой собиралось?
Vort каким компилятором?
whothefuckami Перестали они качать видать
orignal который в MSYS2
Vort ну так это небось они этот тип и выдумали
Vort а MSVC 2015 матюгается на такое
whothefuckami <Vort> ssize_t кто-то воткнул
whothefuckami <Vort> а это нестандартная фича
whothefuckami Стандартная
whothefuckami Сейчас скажу с какого стандарта, сек
orignal нет это стандартный тип
whothefuckami Стандартный с с++20
Vort хм
orignal Vort ну замени тогда на int64_t
orignal но я его всегда использовал
Vort да я локально уже починил
orignal или добавь в I2PEndian.h
whothefuckami using ssize_t = int64_t;
Vort "<whothefuckami> Стандартный с с++20" ссылку плз дай, не нагугливается
orignal Vort да проще в коде поправить
Vort whothefuckami: не вижу :/
orignal whothefuckami так это в std
whothefuckami Погоди, не то скинул
orignal а не в inntypes
Vort да хоть где
Vort всё равно подтверждение официальности не помешает
orignal там еще и лада в коде
whothefuckami ssize_t это не стандарт, оказывается
whothefuckami это POSIX
whothefuckami Хм, вроде же его хотели добавить в стандарт
orignal все я починил
orignal забирайте
orignal Vort а чего 2015 а не 2022?
orignal Vort еще такой вопрос как думаешь солюшин от VS2005 откроется в VS2022?
Vort orignal: хз, заработает ли VS 2022 под Win 7. да и не знаю, хватит ли места на диске
Vort я кстати нашёл из-за чего ошибка addressbook лезет
Vort таки херню присылает reg (или кто там этим заведует)
Vort после 9ch.i2p=AVYsJjv... идёт =CHghiQrFE...
Vort то есть, в базу попал ident с пустым адресом
Vort солюшен - думаю, откроется. может, потребует преобразовать формат
Vort но в i2pd сейчас сделано правильно - через cmake. он сделает именно такой солюшен, как надо
Vort reg.i2p/export/hosts-all.txt - прямо здесь фигня видна
Vort небось была инъекция в запись, относяющуюся к 9mmtylenol.i2p
orignal ага понятно
Vort хотя насчёт идеи инъекции я поспешил - хз, как в базу фигня попала
Vort но как-то попала
orignal да мне надо очень старый проект открыть
orignal когда еще никакого cmake не существовало в природе ))
Vort так проект - это формальность грубо говоря
Vort его можно хоть с нуля пересобрать
Vort лишь бы там не было каких-то несовместимостей в коде
orignal ну вот я проверю на днях
orignal там код ... на MFC ))))
Vort вот с MFC как раз может быть несовместимость. ну да в крайнем случае можно соответствующую студию в виртуалку установить
orignal так у меня цель как раз в обратном чтобы собрать и запустить древний проект в 2022
Vort я недавно ставил VS 6 на Win 95 - так быстро работает, даже при условии, что эмулятор в 100 раз медленнее реального процессора
Vort а, ну это почти портирование :)
Vort хз честно говоря что там с MFC. давно вообще не слышал этого названия
Vort так что с глюченой записью в reg будем делать? ничего?
orignal а у меня где то валяется диск с VS5 )))
Vort мало ли что там могло ещё случиться
orignal насчет запили ждать R4SAS -а
Vort ок
orignal передал ему
orignal onon твоя идея не лишена оснований
orignal уже об этом думали что перегзуить большинство узлов и заставить строить тоннели через свои
onon Роутер, который я обновил до последней версии сегодня ночью крашнулся. Но логи были отключены, поэтому пруфов не будет.
orignal вот надо понять почему
orignal вроде никто больше не жаловался
Vort в логах всё равно информации о крешах нету
orignal но может быть будет например о нехватке десмкрипторов
Vort баг с NetDb::SaveUpdated никуда не делся, может он в очередной раз вылез
orignal делся
orignal я ж починил
orignal R4SAS же нашел в чем дело
` > поэтому пруфов не будет.
` гадаю на кофейной гуще, ДОРОГО.
orignal другое дело что возможно это уже после 2.50.2
Vort orignal: ну значит там два бага. мы же обсуждали это недавно. issue 1935
orignal ну вот да про то почему вообще этот массив портится
orignal просто я его не закрыл
orignal а вот чинил я уже не помню ))
orignal помню что R4SAS ругался на крэш и показал стек
orignal Vort так как мне i2pd собрать в VS с помощью cmake?
Vort orignal: у R4SAS креш был на соседней строчке. жопная чуйка мне подсказывает, что это одна и та же проблема, просто разные проявления
orignal у него был в другом месте
Vort то есть, полагаю, что был исправлен один из симптомов. второй остался на месте и продолжает делать креши
orignal но портил именно RI
orignal давай лучше про сборку
orignal насчет крэщей были ли у кого нибудь в послденее время
orignal реальность же такова что в коде их еще до жопы
orignal и все сразу вылазят под нагрузкой
Vort после того у меня ещё один такой же случай был
Vort по поводу cmake - вначале надо либы собрать
Vort а там уже свои системы сборки
Vort ^ вот этой командой собираю
orignal а он сам не подтянет?
orignal а зачем тебе VS а не просто собирать MSYS-ом?
Vort ну попробуй без путей и увидишь. может и подтянет
Vort потому что я визуальным отладчиком ошибки гоняю
Vort к GDB стилю даже приближаться не хочу
Vort жуть какая-то
orignal а ну понятно
orignal я помню мишаня когда то давно под VS собирал но тогда еще crypto++ был
onon На роутере с последним обновлением гораздо лучше стали строиться 4хоп туннели.
Vort есть и другие факторы
Vort к примеру, аптайм или интенсивность атаки
Vort orignal: новый креш таки существует
Vort Version: 2.50.2-27-g25e82105
orignal счас глдяну
orignal это вообще что то новое
Vort последнее сообщение в логах: Streaming: Can't send packets, missing remote LeaseSet, sSID=598292936
orignal в чем причина то падения?
orignal ну выделям мы память и че?
Vort указатель плохой
Vort я сейчас дамп подгружу, точнее скажу
orignal который?
Vort mov rax,qword ptr [rbx]
Vort RBX = CB130CDDC6DF621F
Vort сейчас попробую с кодом сопоставить