Быстрый ответ писал(а):переподвыподверт писал(а):Откуда инфа?
Большинство юзеров не выбирают тип файла, поскольку не знают или не замечают такой возможности.
Решил добавить в тему немного статистики, информация по поисковым запросам пятидневной давности только с dchub://allavtovo.ru . Напомню, что
[Тип_данных] - ограничение поиска по типу файлов. Данное ограничение принимает одно из следующих целых чисел:
1 для любого типа файлов;
2 для аудио файлов ("mp3", "mp2", "wav", "au", "rm", "mid", "sm");
3 для архивов и сжатых файлов ("zip", "arj", "rar", "lzh", "gz", "z", "arc", "pak");
4 для документов и текстовых файлов ("doc", "txt", "wri", "pdf", "ps", "tex");
5 для выполняемых файлов ("pm", "exe", "bat", "com");
6 для картинок ("gif", "jpg", "jpeg", "bmp", "pcx", "png", "wmf", "psd");
7 для видео ("mpg", "mpeg", "avi", "asf", "mov");
8 для папок;
9 для TTH поиска;
10 для CD/DVD образов.
Нет, это умею я сам Откопал свои старые наработки.
В данном случае можно не придумывать ничего сложного, просто подключиться к хабу и весь сырой (или с минимальной обработкой) входящий трафик писать в файл, а потом на файл натравить нужный обработчик (например, регулярки)
Кто знает может есть опция у verlihub чтобы он статически собрался?
или в чем глубокий смысл создания дополнительного ошметка libverlihub.so.1.0.0-RC1 да еще и с таким именем?
ERROR: verlihub's mysql tables do not exist, ....
Отправлено FAT321 в 1 May, 2007 - 12:39.
Если у когонить после запуска vh_install выпадало следующее:
Wait few seconds..
ERROR: verlihub's mysql tables do not exist, cannot continue installation
то попробуйте зделать вот что:
перейдите в /usr/local/bin
наберите в консоли:
ldconfig
./verlihub 1
./vh_install
и радуйтесь верли)
переподвыподверт писал(а):Интересно, почему флай решил, что данный файл вирусный? Имеется чёрный список ТТН или просто по расширению?
Привет.
Нет алгоритм сложнее.
описан тут http://www.flylinkdc.ru/2014/03/blog-post_16.html
вероятно ваш юзер вернул на поисковый запрос exe файл хотя пользователь явно указал что возвращать
что-то другое (выбрав тип файла отличный от "Любой/каталог/исполняемый"
ну есть и вторая версия - я где то лоханулся.
если это возникло у вас подскажите как повторить.
Хотел сказать что полностью перенес Verlihub скрипт antivirus.lua которого теперь не существует, в свой Ledokol, ссылка тут и тут ну и на GitHub есть. Отныне весь функционал детекта троянщиков там, включая десятки изменений, улучшений и т.п, все есть в ченжлоге если что. Но, самое главное что я наконец, хотя довольно давно уже, реализовал ту самую базу данных троянщиков о которой мы говорили прежде, и назвал ее AVDB, ссылка тут. В базе на данный момент уже 1150 уникальных ник+ип записей, все записи пока что только от Ledokol и ни одного ложного рапорта до сих пор, фантастика.
База закрыта для гостей, именно потому что туда можно добавить мусор и тупо всех нахрен забанить на всех хабах использующих ее. Чтоб получить доступ к отсылке рапорта в базу, надо контактировать меня, в любом месте. Сеть доступа уже состоит из 10 хабов со всего мира, в том числе AllAvtovo. Сам рапорт отсылается следующим способом через HTTP GET, все параметры без <>, и прошу юзать urlencode в параметрах, чтоб небыло информации с ошибками:
Если у вашего "клиента" что шлет рапорт нет доступа, в ответ он получает контент с цифрой ноль - байт 48, можно просто попробывать в браузере и все сразу станет ясно. Если же есть доступ, ответ приходит цифрой один - байт 49, что значит "спасибо, юзер добавлен" либо "спасибо, юзер уже существует". В случае когда юзер уже существует, скрипт записи проверяет размер шары юзера, и обновляет ее если она отличается. Также при добавлении и обновлении записи обновляется временной штамп, данный Unix timestamp сервера.
База закрыта для гостей, доступ удаления не тот же самый что для записи - а уровнем выше. Чтоб получить доступ к удалению из базы, надо контактировать меня, в любом месте. Запрос удаления отсылается следующим способом через HTTP GET, все параметры без <>, и прошу юзать urlencode в параметрах, чтоб небыло информации с ошибками:
Оба параметра не обязательны но хоть один должен присутствовать. По присутсвию обоих параметров скрипт удаляет ту строчку где ник и ип совпадают, по присутствию только ника скрипт удаляет все строчки в которых присутствует указанный ник, по присутствию только ипа скрипт удаляет все строчки в которых присутствует указанный ип. Все очень просто, ответ тоже простой: Если у вашего клиента что шлет запрос на удаление нет доступа, в ответ он получает контент с цифрой ноль - байт 48. Если не было найдено ни одной строчки для удаления ответ приходит в виде черточки, символ "-" - байт 45. Если же есть доступ и есть строчки для удаления то они удаляются и ответ приходит цифрой равной количеству удаленных строк, что значит "спасибо, все сделал". Также во время удаления каждой строчки, на стороне сервера производиться +1 к переменной "всего удаленных строк" - Avdb-Delete-Count, о ней будет идти речь ниже.
Чтение открыто для всех, но т.к. база может быть очень большой, и запросов может быть очень много, прошу запрашивать хотя бы с небольшим интервалом, в Ledokol например по умолчанию 60 минут и минимум что можно выставить - 30 минут. Ниже будет описано почему не надо бояться что вы чтото пропустите.
Поиск производится с помощью указанных вами пареметров через HTTP GET, они все не обязательны. На данный момент поиск выполняется через следующий MySQL запрос используя ci - case insensitive:
Потому, если в базе есть несколько юзеров с текстом скажем abc в нике который вы запрашиваете, то все они выпадут в результат. Лично у меня до сих пор небыло нужды для использования поиска в текстовом режиме, потому точный поиск такой как этот еще не существует:
Ну и наконец тот самый "умный" запрос который не даст вам пропустить новинки, тоже через HTTP GET, параметры не обязательны, limit по умолчанию 10.000 строк. Параметр time тем неменее сравнивает <= временной штамп записи, приведу пример:
При загрузке вашей программы, изначально пользуем time=0 чтоб загрузить все что есть из базы, сразу записываем данный временной штамп - Unix timestamp вашей системы в память программы, через интервал о котором говорилось выше делаем новый запрос используя time=<штамп> сохраненный ранее и снова обновляем штамп. Таким образом вы всегда будете получать только свежую информацию при дальнейшей работе вашей программы. Норм придумал? Итак запрос:
Еще edit: По просьбе flylinkdc добавил HTTP хедер, англ. header, с названием Avdb-Delete-Count, который отличается от предыдущего в количество удаленных строк если была удалена хоть одна строчка. Приведу пример: Вы впервые загрузили базу с помощью load, вам будет дан хедер, к примеру такой:
Тут указано что до сих пор из базы было удалено всего 35 строчек. Вы отсылаете повторный запрос чтения базы, а там номер уже не 35 а 37 - что говорит о том что с последнего раза удалилось еще 2 строчки, потому вам скорее всего стоит полностью обновить базу с нуля, где уже не будет тех 2-х удаленных строк. Это удобно только в том случае, когда вы полностью создаете реплику общей базы AVDB, для тех кто загружает свежую базу по началу работы клитента - результаты уже в норме.
-----------------------
Еще edit: По просьбе flylinkdc добавил HTTP хедер, англ. header, с названием Avdb-Version-Count, который отличается от предыдущего в количество добавленных или обновленных строк если такое случалось. Приведу пример: Вы впервые загрузили базу с помощью load, вам будет дан хедер, к примеру такой:
Тут указано что до сих пор в базу было записано всего 1055 строчек. Вы отсылаете повторный запрос чтения базы, а там номер уже не 1055 а 1057 - что говорит о том что с последнего раза добавилось или обновилось еще 2 строчки, потому вам скорее всего стоит обновить базу (...).
Ответы идут в текстовом режиме, plain text, no compression, в порядке по временному штампу, последний первый и дальше по уменьшению. Такой выходит формат каждой записи - строки, где символ | - известный нам байт 124 и символ \n - известный нам байт 10:
Ну вот и все про чтение и запись, пока больше ничего нет. Сам Ledokol полностью поддерживает AVDB, и использует полной силой, получается что он сам детектит, рапортирует в базу, и обратно читает из базы все новое что накопилось. Проверка юзеров по базе происходит по ник+ип либо ник+шарабайт при входе юзера и при чтении новых данных. Не приходится самому все детектить т.к кто-то это уже сделал, коротко - помогаем друг другу. Офигенная штука, правда.
Если есть вопросы, вопрошайте, буду рад улучшить функционал AVDB и ответить на ваши вопросы. Кстати, про ваши самые программы - клиенты которые возможно будут написаны и попросят доступ, жду таких изобретений в вашей сфере и надеюсь что они на 100%, ну или хотя-бы на 99% действительны и без ложных рапортов, именно потому что те кто юзают базу через Ledokol - по умолчанию блокируют все соединения троянщиков, либо второй вариант - дают им бан. Не хотелось бы чтоб началась липовая банька по всем хабам.
Жалко что такого скрипта и базы не существовало еще года 3 назад, троянщиков накопилось тьма.
Спасибо за чтение, лол.
Последний раз редактировалось RoLex 07 авг 2015, 11:30, всего редактировалось 12 раз.
Точно, еще хотел упомянуть об использовании AVDB моим хаблистом Team Elite, ссылка тут. Пингер хаблиста при визите на каждый из хабов имеет прямой доступ к базе где он сравнивает ник+шарабайт каждого юзера на хабе, при попадании пингер записывает юзера как "троянщик", и после записи информации о хабе на страничке со списком пользователей хаба кажет их синим цветом, после опов - красным и хаб ботов - серым, если такие есть. Возмите в пример Ozerki, ссылка тут, там увидите синеньких юзеров в списке, которых Sphinx блокирует но не банит.
Помимо того пингер также по окончанию своей работы на каждом хабе, создает список найденных троянщиков и шлет прямой +report операторам хаба, после чего покидает хаб. Был вопрос по снятию +report на некоторые хабы, естественно на хабах где уже стоит сканер как например Ledokol, исполнение +report вовсе не требуется. Посему добавил в Ledokol команду $NoReport которую пингер понимает как "не отсылать +report". Команду можно заимствовать любым вашим сканером если не хочется получать рапорты о троянщиках в опчат. Этой команды не существует в протоколе NMDC, придумал на ходу, не следует ее искать где либо.
Привет. интересно.
Расскажи как я могу это использовать в клиенте FlylinkDC++
Пока вижу такой способ
* Параллельно с загрузкой файл-листа с юзера запросить его "репутацию" и если он подозрительный сообщить пользователю.
* Если-бы был вариант массового запроса по массиву ников....
то можно было подозрительных сразу показать с иконкой специальной
но тут не хватает параметра - хаб. почему его кстати нет?
тебе не интересно на каких еще хабах сидит этот юзерок?
думаю я с флайлика в случае детекта юзера - могу послать назад список хабов где сидит такой-же юзер
можно даже наверно поптаться угадать какие у него там ники или он поменял их..
flylinkdc писал(а):* Если-бы был вариант массового запроса по массиву ников....
то можно было подозрительных сразу показать с иконкой специальной
Я думаю не стоит терроризировать AVDB сервер запросами по каждому юзеру либо массиву через avdbfind, ты сам знаешь как быстро грузится юзерлист при входе на хаб, пускай он даже будет грузить массивами после каждого чтения из сокета - будет у тебя по 200-300 юзеров за чтение, а что если на хабе 10.000 чел, либо при старте клиента в фаворитах 15 хабов? Это какраз таки нагрузка для AVDB сервера, плюс к тому вход на хаб займет очень много времени, а это плохо. Тут надо думать по другому, ты сам ответил на свой вопрос:
Но не прав в том что объем будет помехой. У меня blacklist плагин висит, за раз он загружает 400.000 строк инфы и в ус не дует, в каждой строчке 3 столбика инфы - ип диапазон и описание. Но, загружает он не в локальную SQL базу, а в массив написанный на языке клиента, в памяти т.к чтение из памяти будет в 1000 раз быстрее чем с жестика да еще пропущенное через SQL драйвер. Именно для этого я и написал функцию avdbload с помощью которой можно по тихому хранить в памяти клиента базу в заранее подготовленном массиве, и добовлять иногда по парочке строк, обычно 1-3 строки за 1-2 часа с 10-ю хабами в базе. Но сам массив хранения нужно писать не для каждого назовем его хаб-фрейма отдельно, а "глобальный", именно потому что если я открою 15 хабов фаворитов при старте, тебе всеравно надо будет загрузить весь список 15 раз, а "глобальный" только один раз. А так да, проверку из "своей" уже базы можно делать парралельно с загрузкой юзерлиста, если хочется сразу повесить иконку "вирус" юзеру.
flylinkdc писал(а):* Параллельно с загрузкой файл-листа с юзера запросить его "репутацию" и если он подозрительный сообщить пользователю.
Я бы предпочел вешать статусное сообщение в чат при моей попытке соединения с троянщиком в обоих режимах - актив, пассив. И естественно, при получении поисковых результатов и списка файлов от троянщиков, в окне поиска и файллиста можно даже выделить строчки с его файлами в кроваво красный цвет, ну и статус сообщение в чат при возможности.
flylinkdc писал(а):но тут не хватает параметра - хаб. почему его кстати нет?
тебе не интересно на каких еще хабах сидит этот юзерок?
А зачем когда у тебя уже есть вся база? Там все ники со всех хабов, ты ведь не будешь предупреждать своего юзера о том чтоб он не ходил на такой-то хаб, ты наверняка будешь его предупреждать когда он захочет вступить в контакт с троянщиком как было сказано выше - именно в этом случае у тебя уже есть все ник+ип или ник+шарабайт для обработки.
И на последок.. Вот тот самый avdbfind удобно использовать например при использовании команды клиента, скажем /avdblookup <ник>, которая будет искать индивидуальный ник в базе, и при этом не имея уже готовой загруженной в память базы - либо из своей же читать если она уже есть.
Я прикручу эту загрузку к флаю и потом уже буду работать с локальной версией + периодическое обновление.
Если нагрузка на твой сервер будет очень большая
(при первом старте новые флаи начнут качать с тебя полную выборку которая со временем будет увеличиваться)
Какой будет план?
если подобных случаев много то может лучше отдавать так - временная метка одна + коллекция IP
nyky.....................|188.25.218.182,188.26.228.246,188.25.218.182|507691437|1408628543?
хотя есть и обратный случай - IP или шара совпадает а ники разные
Насчет имя файла и размера пока мыслей не было, они лишь для информации светятся на данный момент. В попыхах могу предложить вторую базу для их хранения. Те 30 файлов что Ledokol выдает в опчат - хватает для того чтоб понять что юзер троянщик, но это всего лишь 1% или меньше из всех файлов что у него в шаре - потому инфа очень не полноценная. Решением того - именно отдельная база, где за место того чтоб хранить "юзер и его файлы", хранить просто уникальные название+размербайт файла, что можно использовать в качестве подсказки в поиске и файллисте клиента.
Насчет нагрузки на сервер тоже не думал. Я завтра сделаю стресс-тест, запущу несколько сотен ботов через Tor и попрошу их качать базу снова и снова, посмотрим как Apache+PHP+MySQL это потянут. О результатах дам знать.
База хранит только уникальные ник+ип в каждой строчке, не зависимо был такой ник/ип у других юзеров или нет, шарабайт прилагается и обновляется в уникальной строке - как я писал в первом посте.
flylinkdc писал(а):В качестве адреса твой скрипт может вернуть IP6?
Нет, Verlihub не поддерживает IPv6, потому Ledokol рапортирует только IPv4. Если кто либо создаст клиент рапорта скажем для PtokaX где поддерживается IPv6, тогда я модифицирую базу и создам пятое поле куда можно будет сделать запись IPv6 адреса - в случае неимения IPv6 поле останется пустым в данной строке.
Последний раз редактировалось RoLex 05 сен 2014, 09:46, всего редактировалось 6 раз.
Блин, незнаю как быть с пятым полем. А IPv6 обязательно? Ведь хабы что поддерживают IPv6 также поддерживают IPv4, я имею ввиду юзер кто зашел на хаб через IPv6 - его IPv4 возможно прочесть? Тебе ведь не подключаться к этим адресам, а просто сравнивать их. Возможный пример с IPv6: