IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/01/03
~R4SAS
~orignal
~villain
@onon
&N00B
+Xeha
+r00tobo
+relaybot
+whothefuckami
AreEnn
HackerMan
Leastr
Most2
Nausicaa
Vort
WayBest
`
acetone
anon2
b3t4f4c3
flumental
karamba_i2p
nemiga
newbie8sep24
not_bob
osoznayka
poriori
profetikla
segfault
soos
teeth
tolik
un
unwr
weko
orignal кстати надо в лог писать от кого прихолит
orignal закоммитил
orignal первый коммит в новом году
relaybot 13mauzer: Uptime: 12 minutes, 31 seconds
relaybot 13mauzer: Network status: OK
relaybot 13mauzer: Tunnel creation success rate: 19%
relaybot 13mauzer: Received: 62.31 MiB (157.02 KiB/s)
relaybot 13mauzer: Sent: 52.40 MiB (147.45 KiB/s)
relaybot 13mauzer: Transit: 41.03 MiB (115.08 KiB/s)
relaybot 13mauzer: Data path: /home/user/.i2pd
relaybot 13mauzer: Hidden content. Press on text to see.
relaybot 13mauzer: Routers: 4123 Floodfills: 593 LeaseSets: 0
relaybot 13mauzer: Client Tunnels: 59 Transit Tunnels: 916
relaybot 13mauzer: Router Caps: XR
relaybot 13mauzer: Version: 2.49.0
relaybot 13mauzer: на тв-приставке из дебиановской репы
relaybot 13mauzer: Uptime: 28 minutes, 10 seconds
relaybot 13mauzer: Network status: OK
relaybot 13mauzer: Tunnel creation success rate: 24%
relaybot 13mauzer: Received: 144,66 MiB (186,25 KiB/s)
relaybot 13mauzer: Sent: 179,46 MiB (193,74 KiB/s)
relaybot 13mauzer: Transit: 93,92 MiB (140,06 KiB/s)
relaybot 13mauzer: Data path: /home/user/.i2pd
relaybot 13mauzer:
relaybot 13mauzer: Hidden content. Press on text to see.
relaybot 13mauzer:
relaybot 13mauzer: Routers: 4157 Floodfills: 630 LeaseSets: 0
relaybot 13mauzer: Client Tunnels: 53 Transit Tunnels: 937
relaybot 13mauzer: Router Caps: XR
relaybot 13mauzer: Version: 2.50.1
relaybot 13mauzer: на ноуте
relaybot 13mauzer: наружный адрес берётся с забугорной впски ессно
relaybot 13mauzer: тут нат кругом
ubd хамаршопер
conscius самое первое поле в RouterInfo которое надо читать это PublicKey, при этом его размер зависит от контекстов и чего-то еще, и как это читать?
Vort conscius: размер дополнительных данных в конце расположен (2 байта, смещения 0x181 и 0x182)
Vort для RI PublicKey 256 байт занимает
Vort дальше - padding length + signing_key length == 128
Vort потом один байт тип - case 5 -> KEY
Vort ну и дальше размеры
conscius так а вдруг там не эльгамал
Vort в доках написано ElGamal 256 All Router Identities and Destinations
Vort других вариантов не видно
conscius X25519
conscius 32 bytes
conscius а про 0x181 можно где-то прочитать?
Vort 0x181 - это 0x100 + 0x80 + 0x01
Vort 256+128+1
Vort conscius: похоже, в документации неточность. если ключ короткий, то он, похоже, просто дублируется несколько раз
Vort то есть, в файле всё равно будут первые 256 байт заняты ключом, хоть так хоть эдак
Vort где-то есть пояснение этого механизма, но для выковыривания данных из RouterInfo это не очень то важно
orignal conscius публичный ключ всегда диной 256
orignal еси там 32 то отсальное паддинг
orignal ключ подписи всегда 128 но если меньше то паддин в начале
orignal бывает длинее тогда кусок в сертификате
conscius всё ясно, пасиба
orignal Vort это специально так делается
orignal типа чтобы сжималось лучшек
orignal у меня же не ключ дублируется а паддинг кусками по 32
orignal сейчас как правило не ElGamal
orignal а ECIES типа 4
orignal длиной 342
orignal на практике же идентикатор роутера всегда 391 байт
Vort orignal: вопрос, традиционно, в документации
Vort "length -> 256 bytes or as specified in key"
Vort что вот это "or as specified in key" значит?
Vort брр
Vort частично я криво прочитал, частично криво написано
Vort orignal: сколько там вообще паддингов? один? два?
orignal всегда одив в середине
orignal первый ключ выровнен к началу второй к концу
Vort паддинг общий что ли?
Vort и на public_key и на signing_key
Vort короч я почти уверен, что там написана какая-то фигня
Vort даже signing__key с двумя подчёркиваниями :))
orignal да общий
Vort ок, понятно. но тогда вот это выглядит фигнёй. и даже если не фигня, всё равно надо бы как-то понятнее описать
Vort padding length + signing_key length == 128 bytes
Vort при чём, почему-то это написано дважды
Vort скорее, правильно вот так: public_key length + padding length + signing_key length = 384 bytes
Vort ну компактно записать имело смысл
Vort но сделано всё равно через задницу
Vort видимо, пончалу делалось как попало, а потом уже поздно было менять
ubd либо вообще писать в простую бд типа sqlite
Vort а по сети потом как передавать ?
ubd хз)
Vort orignal: может, попросишь zzz подправить документацию? Issues для доков залочены, а сам я не перепишу нормально для пулл реквеста
Vort потому что это не первый раз как народ путается с парсингом RouterInfo
ubd ну а как bitcoin передает данные, там же тоже база данных используется
Vort много чего полезного можно парсингом сделать, но до этого видимо добираются не все
ubd вот да, тоже хотел спарсить RI и болт
Vort ubd: явно тоже в какой-то компактный формат запись базы данных переводится
Vort ubd: знаешь же, что java i2p умеет парсить RI ?
Vort можешь, захочешь парсить результат парсинга?
ubd Vort: неа) я ни разу не юзал i2pj
Vort java -jar d:\javai2p\router.jar routerinfo router.info
Vort ну тут мой путь
Vort надо свой воткнуть
Vort последний параметр - путь к файлу
Vort можно и несколько файлов одновременно засунуть
ubd спс попробую
orignal скажу
orignal передал им
orignal Vort ты бы знал какая хрень была в них в доках когда я начинал
orignal там неверно было почти все
Vort да уж. их и сейчас читать тяжко. представляю, что было раньше
orignal дед просит ссылку на то место
Vort а по поводу облегчения понимания формата - подобные картинки не помешали бы: pbs.twimg.com/media/F8omX7-XkAAv6rc.jpg:large
Vort или вот как в такой статье: c-sharpcorner.com/article/pe-format-illustrated-part-1
Vort (это раз я сказал про "тяжко", то вот был пример того, что мне кажется нормальным)
Vort вот так разобрать какой-то конкретный RouterInfo - и вопросов у людей сразу стало бы меньше
orignal а кому это инетерсно?
Vort кому интересно писать или кому интересно читать?
orignal читать
orignal ты посмотри весь хабр счас про "управление персоналом и проектами"
Vort ну вот во время прошлых атак были вопросы как вылавливать RI атакующих
Vort были бы пояснения с картинками - быстрее бы получилось выловить
Vort про статистику тоже много было обсуждений
orignal ну и как их вылавливать?
Vort понимаю, что если упереться, то можно и из такого источника, как сейчас, информацию выжать
orignal как понимаение формата RI в этом поможет
Vort но я часто замечаю, что упёртости у людей практически нету
orignal старое поколение кому были интересны тезнические детали вымирает
Vort orignal: ну помнишь фейковые RI флудфилов были. там же были поля повторяющиеся
orignal просто там совпало с тем релизом
Vort я о другом. атакующий делал клоны
Vort и чтобы понять, что это клон, надо понимать формат
orignal а ну да было дело
orignal но понимаешь в чем дело
orignal даже если бы было описание никто бы заниматься анализом не стал
orignal а только бы срали на кислице
Vort ну тут вопрос шансов
Vort более качественная документация с большим шансом заинтересует какого-то разработчика
Vort вот это позорище, кстати, так никто и не поправил: i2pd.readthedocs.io/en/latest/devs/api
orignal лол
orignal <zzz> orignal, do you have a proposed correction?
conscius да тут даже если захочешь разбираться - с ума сойдешь при чтении документации, не в поколении уж точно тут дело
orignal ну я же разобрался причем с гораздо более кривой
conscius прям без диалогов с разрабами?
orignal без
conscius и без чтения жава-кода?
orignal код смотрел разумеется
conscius вот она где подсказка
orignal тогда в докмументации было написано не то что на самом деле
orignal а чтобы говорить с разработчиками надо было зайти в ирк через i2p
orignal а джава у меня так и не заработала
orignal потому я смог попасть в ирк только когда сделал стримы в i2pd
Vort такие навыки редки, к сожалению
Vort для того, чтобы понять, что делает программа, достаточно иметь её бинарник
Vort но обычно разработчики даже код читают с трудом, не говоря уже о колупании бинарей
conscius разобрался с длиной public key, а что с длиной второго ключа? всегда 128?
conscius который в routerident после public key и padding
orignal нет
orignal чаще всего 32
orignal но может быть и длиннее 128
conscius а от чего зависит-то?
conscius еще Mapping уже пытаюсь читать, я так понимаю дока врет и там нету keystring + 1 byte + valstring + 1 byte
conscius а всё ок это я единичку пропустил
conscius так я дошел до сигнатуры
orignal от типа подписи
orignal обычно она 7 -EdDSA
orignal там каждая строка счнала длина потом символы
orignal как в паскале короче
Vort и точка с запятой чтобы наверняка :D
Vort диковатая помесь бинарных данных и ASCII
Vort я когда первый раз увидел, не поверил, что такое возможно
Vort обычно или то или другое
orignal нет не должна быть
orignal чисто паскалевская строка
orignal ты просто не застал паскаль ))))
conscius написал на питоне парсер файлов из netdb
conscius котроые routerinfo
orignal return f.read(slen).decode("utf-8")
orignal нет там utf-8
conscius выводит инфу вида Cert type: 5
conscius Signing Public Key Type: 7
conscius Crypto Public Key Type: 0
conscius published: 2024-01-04 01:37:58.707000
conscius adresses: [{'cost': 5, 'transportStyle': 'SSU'}]
conscius options: {'caps': 'B', 'host': '102.182.118.40', 'key': 'kFRGMHrRNX7TDoPj9Zp8PICUAWRvN0gRKFbhbRxYBLk=', 'port': '31428'
orignal только латиница
conscius в доках utf-8
orignal а SSU вообще откуда?
orignal неправильно ты декодировал
orignal у тебя options должны отнситься к адресу
orignal а у тебя они почему то глобальные
orignal ты где такой RI откопал
Vort ну может точки с запятой там в другом месте, но они точно есть и по моим ощущениям там нафиг не нужны: paste.i2pd.xyz/?3a5420507680bff5#4SAPLPt9asqAEyp3jNmzvG4WjyNCQ1Pq8JVFTBi7gCDv
orignal с Crypto Public Key Type: 0
conscius size :: Integer
conscius length -> 1 byte
conscius The number of RouterAddresses to follow, 0-255
conscius addresses :: [RouterAddress]
conscius length -> varies
conscius peer_size :: Integer
conscius length -> 1 byte
conscius The number of peer Hashes to follow, 0-255, unused, always zero
conscius value -> 0
conscius options :: Mapping
conscius options глобальный
conscius адресов массив
orignal счас гляну
conscius ну в общем чего-то я написал, говните как хотите а я молодец
Vort знаки '=' тоже избыточны. если там идут пары ключ-значение, то понятно, что первым идёт значение, а потом - ключ. ну это мои придирки и может я вообще не прав :)
Vort conscius: так а применять как распарсенное собираешься?
orignal нет нету там ;
Vort conscius: применение и покажет, правильно сделал или нет :)
orignal void LocalRouterInfo::WriteString (const std::string& str, std::ostream& s) const
orignal uint8_t len = str.size ();
orignal s.write ((char *)&len, 1);
orignal s.write (str.c_str (), len);
conscius хз, меня ubd на слабо брал написать и я написал
conscius зачем ему это или вам не знаю
orignal так откуда ты такой RI взял?
conscius я рандомный файл в netdb выбрал для теста
orignal говно мамонта же
orignal какой то он сильно неудачный
orignal с ключом 0 да еще и с SSU
conscius published сегодня
conscius мда, открыл другой а его уже не получается распарсить
Vort я ошибки в своём парсере находил даже после недель его успешного применения )
orignal WriteString (p.first, properties);
orignal properties << '=';
orignal WriteString (p.second, properties);
orignal properties << ';';
orignal да все правильно есть ;
orignal но это для пар
Vort вспоминается JS с его принципом - всё есть map / dictionary. ну вроде так )
Vort универсальный контейнер
Vort ну да хоть формат RI и загадочный, но это явно не главная проблема I2P :)
relaybot 13mauzer: я вот весь в раздумьях
relaybot 13mauzer: упс
orignal так я давно предлагаю сделаю адрес 64 байт
orignal 32+32 и все
orignal много лет как
orignal ну и еще сертификат если нужны более длинные
conscius а я понял
conscius короче внутри адресов тоже есть опции
conscius и эти опции я не учел кажется
Vort вот из-за этой матрёшки я и делал парсинг регулярками )
conscius Cert type: 5
conscius Signing Public Key Type: 7
conscius Crypto Public Key Type: 0
conscius published: 2024-01-04 03:20:09.096000
conscius adresses: [{'cost': 3, 'transportStyle': 'NTCP2', 'options': {'host': '178.236.100.206', 'i': 'CnytvYazFficobwoAUmC6g==', 'port': '26848', 's': 's7Z63Zmv~GwseDMz3vfMfbKee8RKoayMJo1PGH3MPRY=', 'v': '2'}}, {'cost': 3, 'transportStyle': 'NTCP2', 'options': {'caps': '6', 's': 's7Z63Zmv~GwseDMz3vfMfbKee8RKoayMJo1PGH3MPRY=', 'v': '2'}}, {'cost': 8, 'transportStyle': 'SSU2', 'options': {'caps': 'BC', 'host': '
conscius 178.236.100.206', 'i': 'z-tapvCNGoLmu56ZeMI8LzoTobB7CqwXs5HGVIoA8Sg=', 'port': '26848', 's': 'iUTF6FL3b-ijwPqP0pEi5gTIZk~Wz5SYez9svUjutH0=', 'v': '2'}}, {'cost': 8, 'transportStyle': 'SSU2', 'options': {'caps': '6', 'i': 'z-tapvCNGoLmu56ZeMI8LzoTobB7CqwXs5HGVIoA8Sg=', 'mtu': '1500', 's': 'iUTF6FL3b-ijwPqP0pEi5gTIZk~Wz5SYez9svUjutH0=', 'v': '2'}}]
conscius options: {'caps': 'PRE', 'netId': '2', 'router.version': '0.9.61'}
conscius мне надо было две строчки поменять)
Vort U узлы тоже нормально парсить будет? на всякий случай спрашиваю
conscius а кто его знает
Vort я подумал, что сделаю нормально если найдётся нормальное применение
Vort но пока что и говнокода хватало )
conscius я пока не определился с длинами ключей, тем каких показывать и всяким таким
orignal странно что тип 0
Vort conscius: ещё хеш считать может быть полезно
conscius может из-за иггдрасиля?
orignal нее
Vort int identityLen = 387 + RawData[0x181] * 256 + RawData[0x182];
Vort IdentHash = SHA256.Create().ComputeHash(RawData, 0, identityLen);
conscius не знаю в общем, код сохраните где-нибудь потому что я выбрасываю всё
conscius и освобождаю голову для каких-нибудь приличных проектов
orignal обычно там тип 4
conscius find /var/lib/i2pd/netDb/ | grep dat | xargs -n 1 ./ri.py
conscius не знаю
conscius кругом 5 7 0 и джавашные роутеры разных версий
conscius certPayload[2:2]
conscius может я слайсю неправльно
conscius точно
conscius надо было 2:5
conscius orignal: да, там четверки на самом деле
conscius ubd: в общем забирай, разбирай, допиливай
conscius я сделал немало
ubd conscius: выложи куда нибудь в более приличное место, там джаву требует
ubd хотя ладно, нашел спосбо открыть, все
ubd Cert type: 5
ubd Signing Public Key Type: 7
ubd Crypto Public Key Type: 4
ubd published: 2023-12-30 14:28:10.773000
ubd addressses:
ubd [{'cost': 3,
ubd 'options': {'host': '46.65.208.31',
ubd 'i': 'em4PsGLgQIrEkFF36cV4Kw==',
ubd 'port': '11252',
ubd 's': 'L2dUSjC~uD3zX8gWPCkRE4M9VZl7JTk3dJHn7793wA0=',
ubd 'v': '2'},
ubd 'transportStyle': 'NTCP2'},
ubd {'cost': 8,
ubd 'options': {'caps': 'BC',
ubd 'host': '46.65.208.31',
ubd 'i': 'PWQhV4zyPxe4W0KGpKMwUARbAGnZbWX0P-vuhp0~tSI=',
ubd 'port': '11252',
ubd 's': 'WnShpk2ZG8sGD1prTKCLWyCNCkWUXPo5RLm1MpD-UxY=',
ubd 'v': '2'},
ubd 'transportStyle': 'SSU2'},
ubd {'cost': 14,
ubd 'options': {'caps': '6',
ubd 's': 'L2dUSjC~uD3zX8gWPCkRE4M9VZl7JTk3dJHn7793wA0=',
ubd 'v': '2'},
ubd 'transportStyle': 'NTCP2'},
ubd {'cost': 15,
ubd 'options': {'caps': '6',
ubd 'i': 'PWQhV4zyPxe4W0KGpKMwUARbAGnZbWX0P-vuhp0~tSI=',
ubd 'iexp0': '1703940017',
ubd 'iexp1': '1703939014',
ubd 'iexp2': '1703937942',
ubd 'ih0': 'FDwd-Ci7DDrAfOWqdvxxaSsLHPFPsDB0s6nY7oNw3E8=',
ubd 'ih1': '7F6amsS-SeGabAWXFMBVfhdUbn4-IJXfM3kfJ0cCX3w=',
ubd 'ih2': 'tU22LrxEgIb~6ZA~jR7Grj7O3HFxIKD6VdaeMutTMYk=',
ubd 'itag0': '870237509',
ubd 'itag1': '3384873903',
ubd 'itag2': '771001228',
ubd 'mtu': '1500',
ubd 's': 'WnShpk2ZG8sGD1prTKCLWyCNCkWUXPo5RLm1MpD-UxY=',
ubd 'v': '2'},
ubd 'transportStyle': 'SSU2'}]
ubd options:
ubd {'caps': 'XR', 'netId': '2', 'router.version': '0.9.56'}
ubd похоже на правду
orignal да но зачем нам тут все это?
orignal неее
orignal лажа
orignal у NTCP2 не может быть интродьюсеров