IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/01/24
~R4SAS
~orignal
~villain
@onon
&N00B
+Xeha
+r00tobo
+relaybot
+whothefuckami
AreEnn
HackerMan
KabaOS
Leastr
Most2
Nausicaa
Vort
WayBest
`
acetone
anon2
b3t4f4c3
karamba_i2p
nemiga
osoznayka
poriori
profetikla
segfault
soos
teeth
tolik
un
unwr
weko
weko apophis тебе уже сказано, срач иди в #ru разводи
orignal ну и в чем тогда проблема?
Leopold что-то упускается, где-то ошибка
relaybot 13apophis: > weko: apophis тебе уже сказано, срач иди в #ru разводи
relaybot 13apophis: шизок, ты смешон своим праведным гневом. Мания преследования у тебя
weko orignal: не знаю хочу сейчас проверить игру
Leopold Может, есть буфер какой-то
weko apophis #ru туда пиши
relaybot 13apophis: > weko: apophis #ru туда пиши
relaybot 13apophis: я о твоем рассуждении писал и сравнивал с классической литературой. Тебе не нравится ? .. спортлото
weko мне не нравится что ты разводишь срач в чате не для срачей
weko иди в канал где это уместно
relaybot 13apophis: > weko: мне не нравится что ты разводишь срач в чате не для срачей
relaybot 13apophis: я не развожу срач, я констатирую факт. Свобода анонимного и2пд, ты против ?
weko #ru go ahead
Leopold Ну его, давай посмотрим, чем принципиально udp в i2pd отличается от tcp аналога и от обычного клирнет сервера с udp
weko стоп я ещё кое что не проверил
weko вот от сервера ответ то приходит
weko но какой там порт указан?
weko а хотя даже если один то пофиг
relaybot 13apophis: > weko: #ru go ahead
relaybot 13apophis: это не твой язык, не смеши. Аналитика у тебя тоже ушла не далее .. английского :)))
weko /ingore <3
weko ignore*
weko Leopold: я хочу сначала перепроверить баг
Leopold у udp пакета есть мак-адрес?
weko нет конечно
weko mac на уровень ниже
weko даже на два уровня
Leopold мак адрес это часть tcp пакета, разве нет?
orignal нет конечно
orignal это часть езернет фрейма
amias_bonaventure mac sushestvuet v predelah shirokoveshatelnogo domena vtorogo urovnia modeli osi
Leopold оки
weko да воспроизводится
weko но при этом явно связано с i2p, потому что когда один клиент через i2p, а другой напрямую, то работает нормально
weko походу делает на каждый порт от клиента другой который использует
weko он не от адреса зависит
orignal так посмотри в коде
weko тут очень интересная ситуация по пакетам. может это и не то конечно. пока изучаю просто
weko да кажется начал понимать
orignal и что там?
weko я просто не хочу щас писать, а потом написать "не, это другое
weko щас перепроверю и скажу
weko orignal: вот точно видно. сервер в один момент только с одного ip шлёт на сервер
orignal в смысле?
weko ну вот я смотрю что i2pd пересылает на сервер
weko игры
orignal UDP пакеты
orignal и что там во from ?
weko включил запись пакетов - первые 6 секунд только с одного адреса, потом через 6 секунд только со второго
relaybot 13apophis: выстрел в пустоту .. интересный фильм. Без фобий плиз
weko чётко видно как меняется
orignal и в чем заключается мысль?
Leopold udp-сессия умирает?
orignal так может просто так с сесиий прихлодит
orignal в UDP не бывает сессий
weko orignal: но я то на сервере одновременно с двух клиентов
weko короче оно то работае
weko но ни когда идут данные одновременно
weko могу симулировать такое самим
orignal а как должно выглядеть "одновременно"?
weko ну что малая задержка между пакетами
weko не знаю))
weko я со своим сервером через nc подключался - данных мало и точно не одновременно
orignal я посмотрб как там сделано
orignal и кроме того это не объясняет проблему
weko объясняет
weko как раз таки
orignal чем?
weko ну тем что до сервера не доходит
weko с одного клиента
weko есть подозрение что там не хэшмап используется, а просто одна переменная с сокетом
orignal доходит же после 6 секунд
weko оно не доходит
weko оно меняется
weko просто было с одного места стало с другого
orignal там все хуже
orignal std::vector<UDPSessionPtr> m_Sessions;
weko да оно вообще может полностью рассинхронится что нигде не работает
weko например i2pd шлёт только для одного адреса, а принимает только через другой
weko в итоге оба клиента сосут
weko да любой пакет ломает
weko вот я подключился, делаю один пакет с другого деста - ломается
orignal придется таки разбираться что там псих понаделывал
weko короче неверный адрес отправления i2pd делает
weko ну и порт соотвественно тоже потому что сокет
weko не с того сокета
weko в общем прошлую теорию отмели зато нашли причину
weko могу попробовать симулировать такое же самим
weko udp.port == 22221 && ( ip.src == 127.3.171.140 || ip.src == 127.70.210.27)
weko через этот фильтр смотрел
weko 22221 - порт сервера, ну и соотвенно ip-шки, который i2pd использует
weko src - только от i2pd
weko вот и выходит что косяк
orignal ниче не понял
orignal еще раз
orignal серез 127.0.0.1 22221
orignal *сервер
weko короче i2pd может отправлять только с одного сокета
weko тогда как должно с двух
orignal ну надо поглядеть
orignal мы на работе по udp по сотням сокетов враз отправлем
weko тут не сотни до дохуя
weko но*
weko ну в плане не за раз
weko m_LastSession - интересно
orignal у нас по паре десятков одних мультикастов выкидывается
orignal и каждлый на своем VLAN-е
orignal ну m_LastSEssion это как раз понятно
orignal чтобы каждый раз не искать
weko типо оптимизация
orignal это скорее всего я добавил
weko так надо хэштаблицу
orignal погоди
weko это костыль
weko потому что поиск в хэштаблицу O(1)
orignal ну все ясно чо
orignal посмотри на HandleRecvFromI2PRaw
weko я вот тоже щас смотрел не нашёл ничо
weko вижу
orignal там логика какая
weko но у меня то не Raw
orignal идет сначала repliable а потом raw
orignal откуда ты знаешь что не raw
orignal это же датаграммы внутри i2p
orignal бывают repliable бывают raw
orignal приходят raw с другой сессии
orignal а мы срем ею в последню
weko а как определяется raw или repliable?
orignal на там в заголовке датаграммы это
orignal а отправитель как делает тут надо смотреть
weko а по поведению они чем отличаются?
weko просто заголовок и всё типо?
orignal ну ты видишь разныне фнукции вызываются
weko вижу но видимо должна одна
orignal I2PUDPServerTunnel::HandleRecvFromI2P вот там все правильно
orignal а в I2PUDPServerTunnel::HandleRecvFromI2PRaw все плохо
weko вижу что плохо
weko просто если починить они будут одинаковые
orignal то есть вызываются разные методы в зависимости от типа датаграммы
orignal так просто ты не починишь потому что у raw нет адреса
orignal то есть так и получается когда одна сессиия то все хорошо
orignal а когда много то хуйня получается
weko ну это понятно
weko тоесть в raw не написано куда отправлять ответ, да?
orignal правльно
weko точнее откуда пришло, нам это тут важно
orignal потому надо счнала найти сессию
weko но в i2p одно и тоже
weko но мы то всё равно знаем откуда пришло
orignal там порты разные
orignal но мы не проверяем
weko а как i2pd решает что отправить raw или repliable ?
orignal знать то мы знаем но только ключ s сессии
orignal короче тут думать надо
orignal там у клиентского тоннеля есть логика
orignal вроде считывает пачку пакетов из буфера
orignal снчачала repliable потом пачка raw
weko так просто меняем чтобы всегда были repliable
orignal медленно будет
weko ну там 32 байта же всего
weko нет?
orignal replable там всегда проверка подписи
orignal 32 байт пох
orignal не пох проверка подписи
weko так надо чтобы в сессии подпись один раз проверялась при создании ключа
orignal а у raw нет подписи
orignal короче дай мне это обдумать
orignal проблема в общем то ясна
orignal естествеенно так и было задумано
orignal просто надо чтобы raw назходило свою сессиию а не послденюю
weko ну смотри мы знаем с какой сессии пришло raw
weko надо эту информацию сохранить в сообщение
weko и обрабатывать далее уже
orignal дай подумать
orignal там же ECIES сесиии есть
orignal можно с ними увязывать
orignal смотри че
orignal я думаю не будет больного ущерба если сделать UDP тоннели только с типом 4
orignal тогда это резко упростит все дело
orignal *большого
orignal просто 0 не поддерживаем ддя UDP и все
weko А на старых нету сессий что ли?
weko Ну я согласен что смысла в поддержки старья особо нет
weko 0 сложнее просто навернякп
orignal на 0 нету сессиий
orignal там вообще полное уродство
orignal когда я делал этот код для UDP 0 еще актвино использовался
weko так там и так всегда подпись проверяется значит
orignal потому и не сделал по человечески
weko значит и смысла в raw для 0 нет
orignal именно там
orignal именно так
orignal потому оно всегда repliable и можно гнать только raw
orignal это моя старая идея
weko я слегка запутался, но главное что проблему нашёл
weko orignal: можно ещё на уровне destination если raw пришло, то переделывать в repliable уже после того как проверили подпись
weko а точнее там даже не проверяем
weko просто переделывать
weko orignal: по поводу m_LastSession - вероятно так лучше, потому что даже если map использовать, то быстрее так чем поиск в map
weko но это экономия на спичках конечно
weko Да и тут нужно unordered_map
orignal да я починю
orignal тут понятно что надо делать
orignal завтра если будет время
orignal for (auto & s : m_Sessions )
orignal if (s->Identity.GetLL()[0] == ih.GetLL()[0] && remotePort == s->RemotePort)
orignal пиздец
orignal ну псих и рукожоп
orignal придется всерьез заняться переделкой
orignal про GetLL это уже явно мои костыли )))
weko orignal: да вообще я думаю этот код нужно вынести в Datagram.cpp и сделать чтобы можно было несколько портов делать
weko Сейчас нельзя
weko Но это уже куда большая переделка
weko бОльшая
orignal да я починю по мелочи завтра
gimonchik [10:39] <ffffffgimonchik> Подскажите пж как в опенссл использовать кузнечик и стрибок?
orignal я не использую у меня своя реализация
orignal посмотри файл Gost.cpp
gimonchik Спасибо
orignal 34.10 он сделан поверх openssl-ской эллиптической кривой
orignal 34.11 свои таблцы прямо в коде
orignal 34.12 не используется
Komap_ здеь 000000000000000000
Komap_ )))))))))))))))))
gimonchik А есть какие-нибудь готовые либы для гостовской криптографии в c++?
gimonchik Чтоб у них была документация нормальная
orignal скорее всего но мне проще было поверх openssl сделать
orignal weko я поправил
orignal пробуй
weko Понял проверю
orignal я пробовал видеотрансляцию локально
orignal вроде нормально идет
orignal пародон багу сделал
orignal вот тперь бери
orignal починил
un кончилась атака? рейт растет
orignal не думаю
orignal просто перерыв
un рейт почти как раньше сегодня под 50
orignal Transit: 771.92 GiB (1541.07 KiB/s)
orignal вот и вся причина
orignal обычно около 8000
orignal bitrate= 924.9kbits/s
orignal видеопоток прет без помех
orignal кстати сегодня месяц в момента начала атаки
Vort срок аренды хостинга кончился что ли ?
orignal может проплатили на месяц
orignal атаку заказали
weko видимо решили не продлевать
weko возможно дудосили какой то сервис
Vort сложно поверить, что какой-либо сервис мог бы принять столько трафика
weko так и не принимал
Vort я думаю, сервису и доли этого DDoS`а хватило бы
weko может быть
orignal я думаю это было какое то заказанное исследование
weko orignal, Leopold проверил
weko работает!
orignal замечтально
orignal не прошло и 2-х лет как починили багу ))
weko да уж
weko надо сайт обновить
Leopold Ееее :D
orignal какой сайт?
orignal я там возможно еще кое что переделаю для клиентских раз уж взялся с целью отпилизации
weko orignal: games.i2p
weko там просто про баг написано
orignal ну так еще надо будет релиз сделать
weko orignal: сделай чтобы можно было несколько туннелей на один дест ))
weko orignal: ну я напишу что будет пофикшену в 2.51 и чтобы это будущий релиз
orignal а что счас разве нельзя?
weko нельзя
weko там в коде не сделано
orignal почему это?
orignal что не сделано?
orignal пишешь keys= одинаовые и все
orignal если transient
weko ClientDestination::CreateDatagramDestination
weko вот смотри
orignal то например keys=transient1
orignal сча
weko а или это не то
weko ща
orignal нее оно тут непримчем
weko да понял
weko щас
orignal это чтобы сообщение Data роутить внутри
weko auto r = FindReceiver(toPort);
weko хм
orignal ну естественно порты надо разные
weko ну это понятно
weko просто как будто не работало
weko dgram->SetReceiver (std::bind (&I2PUDPServerTunnel::HandleRecvFromI2P, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4, std::placeholders::_5));
weko void SetReceiver (const Receiver& receiver, uint16_t port) { std::lock_guard<std::mutex> lock(m_ReceiversMutex); m_ReceiversByPorts[port] = receiver; };
weko не пойму
weko void SetReceiver (const Receiver& receiver) { m_Receiver = receiver; };
orignal что именно не понтяно?
weko всё понял
weko но да тут по порту не задаётся
weko вот смотри вызов фуннкции
weko там не задётся порт
weko и потому оно просто идёт в m_Reciever и всё
weko кусушмук
weko receiver
weko для raw вообще нету функции с портом. только такая void SetRawReceiver (const RawReceiver& receiver) { m_RawReceiver = receiver; };
orignal это я посмотрю насчет портов
orignal так нет ты не долгнал
orignal вот мы ставим коллюэк
weko да ставим
orignal в который порт передается в качестве парамтра
weko ну и что
weko один UDPTunnel на один порт
weko всё равно
orignal а все понял твою мысль
orignal а надо их разводить по портам
orignal сделаю
weko я может и сам смогу
weko во первых поменяю map на unordered_map
orignal нет в Destination пока не лезь
orignal как раз там map менять не надо
weko да ладно разрешу комфликт
weko почему
weko нам не нужен порядок там
orignal там упорядоченность по порту нужна
orignal не помню для чего
orignal ну попробуй
weko оно в Private я могу проверить где используется
orignal только имей виду что оно для стримов там
orignal там смысл в дефолтном деситнейшине
weko так это только DatagramDestination
weko orignal: так сделать переменную под дефолтный
weko но вот в TCP и UDP если порт неверный то ничего не коннектит
weko но я так понимаю тут бывает что порт 0
weko если не задать
orignal потому я тебе и говорю что тут не так просто
orignal надо продумать вопрос
orignal а еще надо шифрованные лизсеты для UDP
orignal а там еще конь не валялся ))
weko так это же на уровень ниже
weko только параметры парсить и всё
orignal неее там в DatagramDestination надо что то менять
orignal я давно смотрел
weko а чего так? странно
orignal уже не помню
weko если шифрованный просто наследуется от обычного или же там какая то логика сделано через флаг, то всё равно теже функции
weko надо выходит только парсить параметры и передавать в Destination
weko а защиту от дурака уже сложнее )
orignal там же запрос делает не по хэшу а по хитрой херне
orignal кроче не помню уже что там надо менять
weko ну короче если ООП правильно использовать то должно нормально быть
weko потому что это уровень более низкий
orignal угу
orignal но он был добавлен позднее и сбоку
weko ну тогда ясно
orignal а переписывать целый кусок мне влом
weko я просто вот думаю что конфигурацию дестинейшенов и туннелей надо сделать отдельную
weko но это в теории в будущем
orignal давно надо бы
weko а то настройки в мешанину идут у них ))
orignal просто опять же изначально было сделано вот так
orignal что очевидно
weko ну правда обратную совместимость ХЗкак
orignal счнала у меня даже настроек тонней не было были просто параметры общие
weko может назвать как то .conf2
orignal да легко
orignal параметр либо keys либо local_destination
orignal и все
weko ну да логично
weko а сами десты задавать в другом файле типо destinations.conf и destinations.d
weko удобнее даже dests.conf и dests.d
orignal я кстати так в whitei2p и делал
weko ну он то позже уже
orignal но я его так и не сделал
weko i2p daemon и white i2p
weko смешно
orignal так я его так назвал назло деду ))