← All posts tagged P2P

OCTAGRAM
ttk P2P С одной стороны, хорошо, что ТТК приучает к DC, с другой стороны, делают они это каким-то специфичным образом. Нормальный участник p2p подключен к одной-двум дюжинам хабов по интересам. Если шара интересная, ещё и на закрытые приглашают. Качаешь с закрытых ништяки, раздаёшь на всех, и так течёт информация.

Но Граждане Интернета, которые спаунятся в сети ТТК, не таковы. Сидят, значит, на местном огороженном по IP хабе двое клоунов, один сетует, что 6го сезона Зачарованных нет в p2p, я офигеваю, говорю, да как нету, такая вещь вот уж точно никуда не денется, ищу, нахожу, вот тебе ссылки, тут включается второй, говорит, что по ссылке даже не находится.

И тут я начинаю прозревать. Нашёл первого в списке пользователей. В теге стоит H: 1/0/0. Нашёл второго в списке пользователей. В теге стоит H: 1/0/0. Сами себе злобные буратины
OCTAGRAM
x509 tth OID ASN1 P2P В сертификатах, подписях и запросах на сертификат применяются так называемые OID, идентификаторы объектов. Например, они бывают такие:

Проверка подлинности сервера: 1.3.6.1.5.5.7.3.1
Подписание проектов сводных справок о правах на объекты жилищного фонда: 1.2.643.3.3.0.0.1.53
TIGER: 1.3.6.1.4.1.11591.12.2
HMAC-TIGER 1.3.6.1.5.5.8.1.3
Индивидуальные предприниматели РФ: 1.2.643.10
codeSigning: 1.3.6.1.5.5.7.3.3
msCodeCom, Microsoft Commercial Code Signing (AuthentiCode): 1.3.6.1.4.1.311.2.1.22
sha512: 2.16.840.1.101.3.4.2.3
sha1WithRSAEncryption: 1.2.840.113549.1.1.5
rsaEncryption: 1.2.840.113549.1.1.1
Свойство CN (Common name), общепринятое имя: 2.5.4.3
Intel Corporation: 1.3.6.1.4.1.311.2.1.22
ed25519: 1.3.6.1.4.1.11591.15.1

Они образуют древовидную структуру, в которой есть ISO, ITU, страны, компании. Каждый следующий отвечает за своё поддерево, в котором может делать что угодно. Всеохватывающего реестра нет, но для многих верхних ветвей есть разделяемое большинством соглашение о принадлежности. Каждый признанный хозяин поддерева ведёт реестры так, как хочет. Вот тут попытка создать общий реестр, но всё это под честное слово. А вот Россия, например, ведёт реестры, и тут можно искать индивидуальных предпринимателей. Какие-то технические OID можно встретить в RFC.

Так, например, OID HMAC-TIGER расписывается как: {iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) ipsec(8) isakmpOakley(1) hmacTIGER(3)}. То есть, у него есть OID только потому что он был применён в IPSEC. А чистый TIGER был когда-то реализован в GnuPG, поэтому он оказался в GNU. У TTH никто необходимостью опубликовать OID не озаботился, и как результат, если сейчас захотеть подписать по X.509 файлы и почту самым популярным в p2p хешем, сделать это не получится, надо сначала договориться о смыслах. А это для третьих сторон гораздо сложнее, чем если бы получением OID озаботились авторы TTH.

Кто владеет OID, тот создаёт смыслы.

Теперь про то, как получить. Получить поддерево можно у любого хозяина, который уже зарегистрирован. Нашёл тут разные варианты.
1. Например, интересно, что есть поддерево для UUID, и если сгенерить или использовать существующий, OID из такого UUID будет тоже уникален, но ни в каком реестре это не будет отражено.
2. Можно бесплатно зарегистрироваться здесь и оказаться по соседству с Intel и GNU внутри ISO, МинОбороны США и Интернета :) Например, TTH и ed25519 — в поддереве GNU.
3. Можно зарегистрироваться в России, например, тут после получения ЭЦП — соответственно, в поддереве России, а не в какой-нибудь минобороне сша.
4. Поискать по вашим обстоятельствам, кто ещё раздаёт поддеревья. GNU, ЮНЕСКО там всякие и т.п.

И, кстати, я прозрел на тему того, как программно идентифицировать сущности, чтоб и конкуренции за козырные имена (привет, sun.*) избежать, и чтоб не до предела запутано, как в COM, было. COM'овские GUID замечательно проецируются в подветвь OID, а в других подветвях в каждой стране (в смысле, любой может) есть несколько способов получить себе свой уникальный и хозяйничать в поддеревьях.
OCTAGRAM
работа P2P ADC То чувство, когда общаешься с заказчиком по ГрейЛинку. В частности, чат там явно получше, чем эта навороченная тормозящая штука на ангуляре с вечно отваливающимися и не заваливающимися обратно вебсокетами, из-за которых надо обновлять страницу фриланса, чтоб увидеть, появился ли ответ, в общем, получше по сравнению с тем, что такое обычное в вебе.
OCTAGRAM
tth криптография P2P Tiger Кажется, поймал в живую коллизию. С одной стороны, файл. С другой стороны, папка (хеш от отсортированных хешей файлов). Собрал свидетельства, сделал снимки экрана. По идее, это заодно сведётся и к коллизии для TIGER.

Надо будет независимыми утилитами перепроверить все расчёты. Не врёт ли мне клиент по другую сторону. В ГрейЛинке хеш для папок — устаревшая фича в пользу dcls, я в контекстном меню скачанного списка файлов вижу опции «получить магнитную ссылку» неактивным цветом. Только в поиске по TTH вижу файл и папку вместе.
OCTAGRAM
web P2P magnet Было некогда желание сделать виджет для магнитных ссылок, чтоб из менюшки можно было сделать поиск по TTH через онлайн-индексаторы, проверку в VirtusTotal, а также варианты поделится в соцсетях. В менюшке можно отображать альтернативные HTTP/HTTPS ссылки, рекомендуемые DC++ хабы и прочее, прочее, что в магнитную ссылку теоретически можно запихнуть, но чем практически сложно воспользоваться из-за слабой поддержки в клиентах.

Но так и не сделал, с нуля наклепать такое не просто. Я на altaimolodoi.ru как-то раз поставил подсветку ключевых слов, по которым пришли из поиска, так оно вешало Хром, а я этого не знал, так как в IceDragon работало. А тут попался похожий сервис виджетов для Скайпа, где, похоже, всё отлажено. Можно переделать код под свои нужды.
OCTAGRAM
tth torrent dcls P2P Провокация с TTH-торрентами идёт по плану. Поисковики заглотили несколько гигабайт наживки и направляют посетителей. Например, один из посетителей что-то поискал в Гугле, открыл HMS, потом скачал torrent для «Шрам Покушение на Пиночета (Cicatriz)». Мог бы выбрать dcls, но зачем-то выбрал torrent. Хорошо, нате вам torrent, но он будет такой же, как dcls, вид в профиль. Человек смог полюбоваться на список файлов и прочитать комментарий:

"BEP 47 Padding files and extended file attributes" support required: wiki.depthstrike.com info.pieces is fake to make deficient (that is, not upgraded to TTH yet) clients happy and let you see this message

Учитывая, что «deficient (that is, not upgraded to TTH yet) clients» — это практически все торрент-клиенты, скачать, скорее всего, не получилось. Ибо нефиг пользоваться всякой хренью. С одной стороны, кроме как обновлением до TTH, это объективно непоправимо, с другой стороны, так приятно хоть немного отомстить за то, что полезли на наши магнитные ссылки, не реализовав соответствующий функционал TTH. Вы полезли на наши магнитные ссылки, мы полезли на ваши торренты.

Многие другие посещения не столь интересные. Там кликают по магнитной ссылке. Даже если начать отслеживать их пикселями, не понятно, куда этот клик пойдёт. Может быть, по ту сторону всё замечательно открылось и скачалось, как положено.
OCTAGRAM
P2P HMS Потратил 4,6 гига на хостинге, навыкладывал метаданных про 300 тер. Вообще, мечтал петабайт осилить, но при текущей плотности метаинформации не получается. Надо посмотреть, как дело пойдёт. Яндекс-бот уже пришёл.

Вот интересно, а ведь бывают, наверное, боты-индексаторы для открытых торрентов. Я, допустим, четвёртый год пытаюсь скачать торрент с BTIH 6AE765434DEB78AB7CBDA3AAC869363E81046348 , и если я его забиваю в поисковик, то вылезают несколько штук сайтов. И с другими BTIH аналогичная история. У каких-то BTIH таких сайтов больше, у каких-то меньше. Как бы в эти индексы попасть.
OCTAGRAM
время P2P Выписал реальные значения временных меток в атрибуте Shared (GreyLink DC++) и TS (FlyLink DC++). Для сравнения ещё вычислил Date.now(), он получился по длине между ними. Для наглядности добавил подчёркивание там, где кончаются секунды.
GreyLink DC++: 1307966464_52889830
Date.now(): 1480931727_080
FlyLink DC++: 1295288944
Таким образом, это в общем везде время от начала Эпохи (1970), но во FlyLink DC++ — с точностью до секунды, а в GreyLink DC++ — с точностью до 10 наносекунд. Я опасался, что там время OLE Automation (от 1900) может затесаться.

Правда, тут есть один нюанс. Согласно POSIX, время отсчитывается без учёта високосных секунд, а вот справедливо ли это по отношению к каждой из трёх приведённых дат, не очевидно. Надо полагать, что всё-таки без.
OCTAGRAM
directconnect BitTorrent P2P greylink Расширения тега File во FlyLink DC++
Почитал тут.
HIT — количество скачиваний
В GreyLink DC++ есть в базе, но нет в XML списке файлов.
TS — дата добавления
В GreyLink DC++ есть аналогичный атрибут Shared, но формат другой. И там, и там числа, но у GreyLink явно подлиннее. И есть подозрение, что этот атрибут есть только в обычном корневом файле шары, а в сгенеренных вручную — нет. Но мой генератор получает на вход именно корневые файлы и имеет возможность пробросить этот атрибут в выходной файл.
BR — Битрейт файла
WH — разрешение картинки
MA — аудио информация (кодек, количество каналов, количество дорожек, язык дорожек)
MV — видеоинформация (кодек, Битрейт видеопотока, соотношение сторон экрана)
В GreyLink DC++ не хранится ни в базе, ни в XML, вместо этого можно делать асинхронные запросы к файлам. Пожалуй, решение FlyLink DC++ лучше. При этом информация в GreyLink DC++ более полна, видно авторa и альбом, как они написаны в ID3 тегах. Самое лучшее решение я видел в Shareaza.
Ещё в GreyLink DC++ есть возможность назначать папкам свои картинки. И опять в dcls фича, скорее всего, обычно не пробрасывается, но мой генератор может научиться это делать. Насчёт поддержки в FlyLink DC++ не знаю.
Ещё Shareaza при хешировании шары проставляет в дополнительные потоки папок UUID, и по ним отслеживает переименования и переносы. Не помешало бы аналогичное для DC++. Вот как раз онлайн-ссылки в новое расположение можно было бы автоматом перенаправлять. Но увы, такого нет. Во всяком случае, в чужих шарах такого ожидать не приходится.

Заодно посмотрел расширения торрента. Даже близко такого нет (кроме даты создания), хотя я мог бы сделать, чтоб мой генератор с барского плеча пожаловал метаинформацию от FlyLink DC++ в info.files.*.
OCTAGRAM
BitTorrent P2P BEP47 ADC Сконвертил свою p2p шару в формат торрента по спецификации BEP 47.

В оригинале (.xml.bz2) 3,1Мб, распакованный XML 12 Мб, а в формате торрента получилось 16 Мб. Он, конечно, двоичный, в отличие от распакованного XML, и каждый TTH там 24мя байтами кодируется, а не 39ю в Base32, но это с лихвой компенсировалось тем, что в описании каждого файла участвует info.files.path, повторяющий названия верхних директорий несколько тысяч раз, в то время как в XML тег Directory указывает имя директории только один раз. Я поискал и сходу не вижу такой BEP, чтобы можно было как-то вложить info в info. Это бы решило проблему, но увы.

Так же, как и для dcls, для торрентов можно генерить один большой файл, а в нём запоминать смещения (в списке info.files), чтобы потом склеивать на лету. Правда, это дурацкое устройство info.files.path и здесь не даёт возможности сделать всё нормально. Название директории, которую описывает торрент, задаётся в info.name. А элементы списка info.files.path идут уже внутри info.name. Так что если нам захотелось в торренте для вложенной папки установить info.name в имя этой папки, у нас получится такая картина, что в нём сначала папка с именем желаемой папки, потом внутри неё несколько взаимовложенных папок с именами папок от корня шары, потом снова эта папка, и там уже собственно файлы. Если генерить отдельные торренты для каждой директории, 16Мб распухнут пусть не в семь (как для dcls), но едва ли меньше, чем в два раза. Общий info.name в каждом торренте в принципе, был бы наиболее логичен, если рассматривать их по отдельности, но если их у одного человека становится несколько и все одинаково названы, тоже как-то не здорово. Решил сделать компромиссный вариант: в info.name не само имя папки, а конкатенация имени папки с именем корня (в качестве которого у меня выступает CID). Всё же хочется иметь возможность забить хостинг как можно большим количеством скачанных шар.

Конечно, не удержался от того, чтобы ковырнуть торрент µTorrent'ом. Пишет «Невозможно загрузить 'root.torrent'. Недостаточно памяти для обработки команды. !». Мда, печально это. p2p-клиенты и не такими объёмами ворочают.
OCTAGRAM
dcls P2P bzip2 сжатие Провёл эксперимент и обнаружил, что два склеенных bzip2 файла распаковываются в один, склеенный из двух оригинальных. И это же замечательно!

Это может пригодиться для генерации на веб-сервере списков файлов p2p для любой поддиректории:
Открываем новый файл на запись, начинаем туда в сжатом виде писать XML списка файлов, перед каждым открывающим тегом Directory и после каждого закрывающего делаем BZ_FINISH, а смещения запоминаем на будущее. Пролог и эпилог с директивой XML и тегом FileListing тоже нужно сделать возможным отрезать.
Потом, когда веб-серверу нужно отдать список файлов для поддиректории, он, не особенно напрягаясь, склеивает пролог, XML-описание поддиректории и эпилог. А ещё потом можно редактировать этот файл. Придётся байтики подвигать, но хотя бы пережимать не нужно.
Я нагенерил обычных отдельных списков файлов для каждой поддиректории своей шары, и у меня в общем получилось 23 мегабайта. Обычный сжатый (с аргументами blockSize100k => 9, workFactor => 30) полный список файлов весит 3,1 мегабайта. Несжатый — 12,5.
Реализовал эту идею. Сжатый список файлов с разрывами получился на 4,8 мегабайт. Выкручивание workFactor на 250 практически ничего не изменило, но всё равно неплохо.

Гипотетически можно с zlib устроить аналогичное, чтоб посетители с плохим Интернетом могли экономить трафик, но и веб-сервер не напрягался. Разрезать шаблон на куски, сжать каждый, на лету дожать остальное содержимое и отдавать всё в склеенном виде.
OCTAGRAM
MagnetURI P2P
Подскажите, при нажатии кнопки поиск на странице ТТК, открывается не Пульс++ а торрент и говорит мол нельзя скачать, как это исправить?
Интересно, это недоразумение когда-нибудь научится скачивать по тому формату URI, на который претендует, или наступит наконец уже понимание, что они, начав претендовать на реализацию magnet:, вот уже столько лет не в состоянии его запрограммировать, а раз руки не из того места, то и не надо мешать программам, где всё как надо
OCTAGRAM
dc++ BitTorrent NMDC P2P Не кормить и пороть! Американский рецепт любви народов
А мне вот пришла в голову аналогия BitTorrent и NMDC. В бытность работы сотрудником техподдержки в провайдере звонили нам по поводу треккера, который был в локалке, но не фирменный. Так и чесался язык ответить: «В нашей сети действует файлообмен по двум основным протоколам. Один из них плохо подходит, чтобы поиметь пользователей, другой — очень хорошо. Вы выбрали тот протокол, который очень хорошо подходит, чтобы вас поиметь. Вас поимели. С чего бы это?» К счастью, в нашем провайдере фирменным был (и сейчас остаётся, после покупки нас ЗС–ТТК) только DC++, и нам полагалось посылать таких звонивших, ну разве что приходилось отказывать себе в удовольствии делать это именно такими фразами. Так и оставались люди в неведении, почему с ними это происходило.
OCTAGRAM
BitTorrent P2P "Мы не потеряем своих пользователей!" Интервью Рутрекера о решении суда по их "вечной блокировке"
Ого, чё творится в мире битторрента. Ну а что? Вместо того, чтобы скрещивать Шареазу с ГрейЛинком, таращились на этот древний протокол. Так и не сделали обязательным TTH, чтоб можно было легче перейти на другие протоколы. Результат немного предсказуем. Туда им и дорога.
OCTAGRAM
icon P2P greylink bitbucket.org
И ещё кое–что сегодня перестаёт быть моим ноу–хау.
Парсит журналы GreyLink, разбивает примерно по дням (на самом деле, с нахлёстом) и выводит их в виде HTML файлов в формате, похожем на журналы Jabber конференций на jabber.ru. Поддерживаются смайлы, магнитные ссылки для DC++, ники делаются ссылками в таком формате, в котором поддерживает GreyLink DC++. Некоторые слова можно в целях SEO или каких–то других делать ссылками куда надо. Все реплики имеют якорь. Если выбрать конкретную реплику и скопировать ссылку на таймкод перед этой репликой, это и будет ссылка на реплику. Так как в журналах GreyLink нет секунд, реплики внутри минуты нумеруются по порядку. Реализовано на языке Icon.
В штатном режиме обновляет только последний/предпоследний день, но может и обновить, начиная с произвольной даты. Когда это у меня последний раз работало, я запускал по часам каждые 5 минут.

Вот так выглядит результат: p2p.toom.su
А так выглядит оригинал, под который я косил: chatlogs.jabber.ru

Чего так и не сделал: не исправил косяк с определением дня недели, не сделал вывод логотипов провайдера и города, как в самом GreyLink ( assembla.com ), не сделал скрипт для GreyLink, чтоб когда картинку постят в чате, она выкачивалась автоматом без клика по ней, и чтоб потом вставленные таким образом в чат картинки попадали в HTML в конечном итоге.

Ну и в режиме реального времени чат работать не будет, конечно, на таких технологиях, это многое надо бы было переделать, а мне незачем. Стопятьсот юзеров ежедневно генерили уникальный контент. Вот что бы ни случилось, это обсуждают, а потом в поисковиках другие люди то же самое ищут и приходят, и оно само по себе работает и работает. Для этого и делал.
OCTAGRAM
dc++ innosetup icon P2P flylink bitbucket.org
Продолжаем выкладывать некоторые разработки, которые могут пригодиться. Собственно, есть такой проект, как FlyLink DC++ с установщиком, поддерживающим кучу провайдеров, и каждый уважающий себя провайдер стремится попасть в список поддерживаемых провайдеров, заказывает VIP или Mini-VIP установщики. При всём при этом FlyLink DC++ открытый, в том числе установщик, то есть, вместе с информацией обо всех провайдерах. Всё это замечательно, вот только информация о том, какие есть провайдеры и какие у них есть хабы, оказывается разбросанной по куче файлов (.iss Inno Setup Source, Favorites.xml, ...), да ещё по–разному для VIP и Mini-VIP. Мой конвертер, написанный на Icon, парсит всю эту разнородную информацию и выводит её в формате YAML, где её можно использовать самым разным образом. Версия примерно от 2011-10-06.
Предполагалось, что в моём установщике GreyLink DC++ OpenMod будет парсер YAML и возможность выбирать всех тех же провайдеров, что и в установщике FlyLink DC++. Собственно, парсер–то есть и он работает, но в нескольких местах получалась каша, которую надо было переделать. Так и не переделал.
OCTAGRAM
tth BitTorrent BEP30 P2P octagram.name

Вот так выглядит облом в BitTorrent. Это я искал редкие файлы (среди которых основной — OEDev.zip) всякими разными способами, и когда нашёл, решил раздать во все сети, где я раньше тщетно пытался найти. Этот торрент давно без сидов, а вот один пир ну очень долго тусовался, но выкачать OEDev.zip целиком так и не смог, потому что его начало в одном куске с другим файлом, которого у меня нет. И никак. И чата нет, чтоб как–то по–другому файл передать. Смотрим друга на друга, немые, как рыбы.

А когда пытаешься эти очевидные проблемы обсуждать, ни ответа, ни привета: forum.utorrent.com
Наверное, разработчикам тоже не мешало бы вот так протусоваться не солоно хлебавши, чтоб понять, зачем это надо.

Для начала, все генераторы торрентов должны вписывать TTH во все генерируемые торренты. Потом, когда торренты станут преимущественно TTH–богатыми, ругаться при попытке открыть торрент без TTH. Ругаться, но открывать, конечно. В таблице загрузок значком напротив ущербных торрентов показывать, что они без TTH. Потом на торрент–треккерах запретить новые торренты без TTH. Пусть идут переделывают метафайлы нормальной программой. Шаг за шагом всё возможно.
OCTAGRAM
web P2P programming Разработчики какие–то странные бывают. Живут на другой планете, и на этой их планете совсем–совсем нет p2p. Так много движков не пропускает магнитные ссылки. Я бы понял, если бы они не форматировали сырые ссылки. Если бы dn не uri-декодировали и dl в удобное представление не переводили. Влом кодить десять строчек, можно понять. Но коцать–то зачем? bnw, скорее всего, не свой движок использует, так что чей движок — тому и камнем в огород.

Я на своём сайте (X-Wiki) был вынужден несколько слоёв прочесать, чтобы убедиться, что ничей говнокод не поломает на полпути магнитную ссылку. Ожидания оправдались: сколько могло быть мест, где может сломаться магнитная ссылка, во стольких местах её какой–нибудь говнокод сломает. Парсер wiki–разметки, WYSIWIG–редактор — всё не слава богу. Везде разработчики как на подбор ушибленные попались.

Магнитные ссылки? Не, не слышали!