~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
`
anon2
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
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
*32
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
[p
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
{
orignal
uint8_t len = str.size ();
orignal
s.write ((char *)&len, 1);
orignal
s.write (str.c_str (), len);
orignal
}
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
похоже на правду
ubd
?
orignal
да но зачем нам тут все это?
orignal
неее
orignal
лажа
orignal
у NTCP2 не может быть интродьюсеров