eMule
eMule — свободный клиент файлообменной сети ed2k для Microsoft Windows. Был разработан как замена проприетарному клиенту eDonkey2000. Также может работать с Kad-сетью.
В 2007 году eMule завоевал номинацию «Best New Project» [1] (хотя к тому времени проект давно уже новым не являлся).
Со времени первых своих версий и до сегодняшнего дня eMule претерпел множество изменений и улучшений. Сеть часто пытались закрыть. Для этого создавались программы, которые наносили вред сети и отбивали у людей желание пользоваться eMule’ом (или аналогичными клиентами, например, edonkey, ilphant и др.).
Например, была разработана система порчи файлов, когда вместо оригинальных его частей в процессе отдачи подсовывались заведомо повреждённые. На сегодня это сделать практически невозможно, так как в современных версиях производится постоянная проверка частей при закачке (при помощи т. н. AICH-хеша). Даже если часть случайно повредится, то eMule сразу это заметит и перекачает заново.
Настройка клиента eMule (2/4)
Крупные ed2k-сервера периодически закрывают. Однако теперь это уже не создаёт особых проблем для пользователей, так как eMule умеет работать в децентрализованной сети KAD (на сегодня это версия 2.0), которую уничтожить практически невозможно. Сегодня заметна тенденция увеличения эффективности KAD-сети по сравнению с классической ed2k.
Так, поиск файлов и источников происходит быстрее, отсутствует спам. Среди недостатков KAD можно отметить не мгновенное эффективное включение в работу (необходимо время, чтобы emule сформировал достаточно большую хеш-таблицу, хотя бы на 600—700 контактов). Кроме того, если клиент получил статус LowID, то для полноценной работы необходимо найти т. н. приятеля — другого клиента, через которого можно было бы индексировать в сети свои файлы.
Начиная с версии 0.47b появилась возможность скрывать использование сети eDonkey от провайдеров благодаря вуалированию протокола, которое, тем не менее, не гарантирует такой степени сокрытия информации, как полноценное её шифрование.
Существуют разные подставные клиенты и серверы, которые регулярно пытаются вредить сети, например, подсовывать ложные файлы. Но и против этого есть средство — ip-адреса вредителей записываются в специальный файл-фильтр, и в дальнейшем emule игнорирует их.
Против ложных результатов поиска («фальшивок») в программе существует спам-фильтр. Кроме того, обычно при закачке характерных фальшивок сервер сам сообщает, что этот файл лучше удалить.
Очень полезной бывает функция оценок файлов, которая помогает другим пользователям определить, стоит ли качать тот или иной файл. Сегодня eMule также умеет определять подлинность типов файлов (например, действительно ли данное расширение *.rar является архивом, или это переименованное видео). Начиная с версии 0.46b, eMule поддерживает так называемые коллекции. Коллекции могут быть подписаны релиз-группой в качестве меры борьбы с подделками.
В eMule можно также и общаться. Для этого в программу встроен IRC-клиент, где, как правило, обычно можно быстро проконсультироваться при возникших вопросах или проблемах. Есть и система обмена сообщениями, причём начиная с версии 0.49а автоматический спам, который практикуют некоторые моды, исключён благодаря функции captcha-аутентификации.
не работает emule
eMule ведёт подробнейшую статистику своей работы, которая позволяет видеть картину закачек как за текущий сеанс, так и за всё время.
С версии 0.48a добавлена поддержка UPnP на основе кода Shareaza.
Кроме того, в eMule разработана функция MobileMule, которая позволяет управлять клиентом с мобильного телефона, а также вебсервер, который выполняет ту же роль, но только не с телефона, а с другого компьютера. Правда, для удалённого управления необходим полноценно маршрутизируемый IP-адрес.
В eMule существует множество полезных функций, которые обеспечивают надёжность, стабильность и удобство пользования программой. Таким образом, на сегодня это весьма продуманная, устойчивая проверенная жизнью система, которая постоянно развивается уже много лет.
На основе eMule разработан ряд модификаций — так называемых «модов»; кроме того, доступно его кросс-платформенное ответвление aMule. Поскольку eMule поставляется с открытыми исходными кодами, находится немало желающих нечестно использовать p2p сеть (то есть только получать файлы, ничего не отдавая взамен, потому что раздавать гигабайтами каким-то клиентам, для того чтобы за несколько дней в конце концов скачать несколько килобайт материала просто обидно), в которой работает этот клиент.
Для этого сегодня разработано немало нечестных клиентов, паразитирующих в сети. Чтобы защититься от «нахлебников», в eMule было разработано множество проверок, которые затрудняют неравноценный обмен информацией и блокируют нечестные моды. Впрочем, не все моды вредят сети. Многие модификации просто предоставляют расширенный набор настроек и улучшенный интерфейс.
Популярностью пользуется сборка, включающая в себя компоненты для резервного копирования служебных файлов, создания ссылок, блокирования IP-адресов, а также получения информации о медиафайлах.
Источник: wiki2.org
eMule на Android
Это история про то, как стало возможным качать файлы из сети eDonkey на мобильные устройства под управлением Android. Бытует мнение что разработка клиентов для протокола eDonkey(ED2K) давно прекращена, но это не совсем так.
Сразу оговорюсь — речь идет не о изменениях в программе eMule и даже не о моде этой программы, а о самостоятельном проекте. Почему eMule — потому что это общеизвестное название клиента стало именем нарицательным и обычно упоминается когда говорят об обмене файлами по протоколу ED2K.
Предисловие
Несколько лет назад я принимал участие в разработке клиента для сетей ED2K (eDonkey2000). Эта практически забытая на территории России сеть все еще довольно популярна в Европе. Наиболее известными клиентами являются eMule и его кроссплатформенный мод aMule.
Протокол eDonkey и модифицированный клиент eMule используется в сети местного интернет провайдера для обмена файлами внутри сети. Требования были выдвинуты следующие: добавление поддержки торрентов, кроссплатформенность Linux, Windows и Mac и улучшение производительности.
После исследования кода eMule, aMule и некоторых других клиентов стало понятно, что написать все с нуля проще, чем вставить торренты в существующие программы. Было решено разделить код на ядро, обеспечивающее взаимодействие с сетью и интерфейс. Для библиотеки прототипом послужила небезызвестная libtorrent-rasterbar, для гуи qBittorrent — тем более что он уже использовал libtorrent-rasterbar. Таким образом, проект был реализован с использованием C++, boost и Qt. В качестве транспорта libtorrent-rasterbar и libed2k, гуи представляют собой переработанный qBittorrent.
Довольно долго я обдумывал варианты мобильного приложения. Это могло быть QtQuick приложение, Java приложение с вызовом библиотеки через JNI или вообще просто нативное приложение. Так как у меня не было вообще никакого опыта разработки для мобильных платформ, но был опыт Qt, выбран был первый вариант. Портировать я собирался не само приложение, а его облегченную версию не содержащую торрентов. Забегая вперед скажу, что в конце концов все было переписано на Java и сделано нативное приложение.
Кросскомпиляция библиотеки
Для исходного проекта была создана отдельная библиотека libed2k, обеспечивающая работу в сетях ED2K.
Чтобы собрать libed2k требуется собранный буст, с этого я начал.
В процессе поиска подходящего решения были перебраны варианты с использованием оригинального NDK и с использованием CrystaxNDK. Crystax располагал к себе наличием уже собранного буста — сборка буста представлялась мне одной из наиболее сложных задач. Довольно быстро было собрано тестовое приложение, но при запуске оно падало.
Оказалось, что еще не реализованные системные функции ребята разработчики заменили неким стабом, при вызове которого приложение получает сигнал и падает. С моей точки зрения не самый лучший вариант — приложение собирается, но не работает. Победить пересборку Crystax я не смог, так что пришлось обратиться к оригинальному NDK.
Сборка буста
Оказалась гораздо проще, чем я мог себе представить. В общем-то сводится к запуску скрипта. Сначала чекаутим проект Boost-for-Android. Понадобятся совместимые версии буста и NDK. Скачать старую версию NDK тот еще квест — ниже приведена ссылка на описание как это сделать.
Собственно, на этом почти все — остается следовать инструкциям из Boost-for-Android.
Сборка библиотеки
Библиотека использует CMake и это было проблемой. В общем-то CMake доступен в андроид студии, но я про нее ничего не знал и всегда запускал сборку из консоли. Тут мне помог проект android-cmake.
Для поддержки понадобилось добавить файл Android.cmake, который практически идентичен конфигу на линуксе и использовать find_host_package вместо find_package, добавив вот такую заглушку:
if(NOT COMMAND find_host_package) macro(find_host_package) find_package($) endmacro() endif()
Процесс сборки более подробно расписан тут libed2k.
Сборка GUI
Эту часть пришлось делать практически с нуля. Переиспользовать получилось некоторые модели и работу с ядром. Посмотрев примеры кода на QML и т.д. я пришел к выводу, что писать с нуля не вариант, надо искать способы упростить разработку. У меня этот способ состоял в использовании qml-material.
Сразу есть основные элементы интерфейса мобильного приложения выполненные на высоком художественном уровне. Устанавливается это все просто — либо у вас получиться использовать рекомендуемый авторами, либо просто скачать и разложить все по папкам в вашей инсталляции Qt руками.
Далее все идет по более-менее стандартному пути — указываем путь к предварительно собранным библиотекам и запускаем сборку. Сборку делал статическую, чтобы упростить развертывание.
Реклама принося даже небольшой профит мотивирует продолжать разработку и вносить улучшения. Не буду подробно останавливаться — простой поиск в гугле по словам Qt AdMob дает ссылки на статьи, которые я использовал при встраивании рекламы в приложение.
Опишу процесс верификации аккаунта. У AdMob есть удобный вывод средств на счет; порог, с которого вы можете вывести средства, начинается со 100$. Но тут есть одно препятствие — аккаунт должен быть верифицирован. Верификация происходит посредством посылки реальной бумажной карточки с кодом по почте. Имеется три попытки с интервалом примерно месяц.
Я выжидал дольше, боясь потратить все попытки зря, но так ничего и не дождался. Однако все кончилось хорошо, почему я и решил упомянуть рекламу. Не надо ждать открыток более предлагаемого адмобом интервала — после того как все попытки исчерпаны и контрольный срок вышел, у вас появится возможность верифицироваться просто выслав скан документа им на почту. В скан можно добавить ватермарки — его все равно примут.
Публикация
Несколько слов о публикации в Google Play. Описываю на примере Google Play, потому что сейчас это безусловный монополист. Ближайшие конкуренты типа Amazon к сожалению и рядом не стояли.
Итак, приложение готово, аккаунт оплачен, пакет собран — можно публиковать. Для меня публикация представлялась как некий простой, автоматический этап, который завершится как-бы сам собой. К счастью, это в основном так и есть, особенно при публикации обновлений — нужно лишь подготовить описание и скриншоты.
Однако, перед тем как нажать кнопку «опубликовать» важно прочитать правила публикации от Гугла, иначе есть немалая вероятность читать их уже после получения письма о блокировке приложения. Читать документацию было лень и я изучал ее уже после блокировки. Гугл не присылает точного описание нарушения — просто раздел или разделы правил, которые были нарушены, вам предлагается определить самому, что именно в публикации не прошло проверку, а вот это уже не так просто.
Ну и напоследок — пользуйтесь альфа и бета версиями, это очень удобно. Все тоже самое что и при релизе, но можно настроить доступность и пользователи не смогут публично оценивать приложение. Помогает избежать негативных оценок в самом начале.
Практически единственная моя пиар акция — анонс на официальном форуме eMule. Больше я никаких попыток продвижения не предпринимал. Тем не менее количество установок постепенно росло. После первого обновления программу забанил Google Play. Да, так тоже бывает — вы выпускаете обновление и получаете письмо о блокировке приложения.
Причина блокировки — выдача себя за другое лицо, либо нарушение авторских прав. Попытка апелляции не принесла результатов. Под подозрение попали скриншоты программы с закачкой Roxette и сама иконка программы, собранная из кусков логотипа Android. Я не сильно расстроился, более того, этот бан как раз и сподвиг меня на добавление рекламы, рисование иконки и некоторые другие улучшения.
Повторная публикация приложения с новой иконкой и отредактированными скриншотами, а также новым именем решила проблему. Забегая вперед скажу, что возможно проблема была в названии с упоминанием «donkey», потому что следующее приложение с именем jDonkey было забанено также. В течении года выпускались обновления, была добавлена поддержка Kademlia.
Количество установок росло в течении года, но сейчас начинает постепенно падать. Возможно, это связано с переходом пользователей на версию на Java или с общим оттоком пользователей из сети ED2K. Параллельно опубликовал платную версию без рекламы — довольно неожиданно, но она продавалась.
В целом приложение показало себя как довольно стабильное.
Собственно, это все про С++ приложение на Android. Связка Qt/C++ вполне прилично работает на Android. Используя компоненты qml-material можно быстро строить красивые интерфейсы. Из недостатков — долгая загрузка приложения и более сложная интеграция с системой. Как я уже упоминал выше, приложение было переписано на Java и сейчас развивается только этот вариант.
Если статья вызовет интерес — напишу еще о внутреннем устройстве протокола eDonkey, что такое Kademlia (DHT) и как это работает.
Источник: habr.com
Десять лет eMule
Рекомендуем почитать:
Xakep #282. Атака Базарова
- Содержание выпуска
- Подписка на «Хакер» -60%
13 мая 2012 года прогрессивная интернет-общественность отметила десять лет с момента выхода eMule — клиента для файлообменной сети eDonkey2000.
Вообще, первым приложением для P2P-файлообмена стал Napster в 1999 году с полностью централизованной архитектурой на единственной центральном сервере, где хранилась вся информация о файлах и инициировалась каждая сессия передачи файлов между пирами. Из-за такой архитектуры сервис было легко закрыть, что вскоре и сделали власти по требованию RIAA.
Программы файлоообмена нового поколения извлекли урок из примера Napster и реализовали различные принципы децентрализации. С одной стороны, была полностью децентрализованная сеть Gnutella, где поисковые запросы распространялись от клиента к клиенту, так что поиск файла в сети пиров мог продолжаться несколько минут. С другой стороны, появилась сеть eDonkey2000 (первый релиз 6 сентября 2000 года). В ней были серверы, но поднять свой сервер мог каждый пользователь, так что такую систему нельзя было просто вывести из строя. Недостатком eDonkey2000 было то, что вы не могли провести поиск по всей сети, а только среди клиентов, подключённых к определённому серверу.
В некотором смысле eDonkey2000 напоминает архитектуру BitTorrent (запущен в 2001 году), ведь здесь тоже для поиска пиров используются конкретные серверы — торрент-трекеры.
Сеть eDonkey2000 Network (ed2k) задумывалась как полностью децентрализованная, но масштабируемая система. В мае 2002 года началась разработка продвинутого клиента под названием Flock, который после бета-тестирования переименовали в Overnet и объединили с основным клиентом eDonkey2000 в августе 2004 года. Но настоящим прорывом стало событие 13 мая 2002 года — в этот день вышла первая версия open source клиента eMule для сети ed2k, того самого, чей день рождения сейчас отмечают.
К июню 2004 года в сети ed2k насчитывалось около 2 миллионов пользователей, а в сети eDonkey2000 Overnet — всего около 800 тыс. Таким образом, eMule был самым популярным файлообменным клиентом, и вместе с BitTorrent он доминировал в следующие годы развития файлоообмена. На SourceForge программа eMule до сих пор занимает первое место по количеству скачиваний (более 647 миллионов), хотя пик уже давно позади.
Обе сети — BitTorrent и eMule — медленно эволюционировали к более децентрализованной архитектуре. Так, в BitTorrent появилась технология обмена сетевой информацией между пирами, а eMule добавил поиск по всем серверам через UDP-запросы и обмен информацией между клиентами по TCP о списке мест, где имеется определённый файл.
В начале 2004 года в eMule реализовали распределённую хеш-таблицу Kademlia для поиска пиров и запросов по ключевым словам, что сделало серверы необязательными для работы. BitTorrent внедрил аналогичную систему DHT в 2005 году.
DHT знаменует собой революционный этап в развитии файлообмена. Не только потому что появилась возможность скачать файл, просто зная его хеш (и пару адресов нодов для установления первоначального коннекта), а потому что появилась истинно децентрализованная и масштабируемая система файлоообмена.
Если та же Gnutella проводила поиск файла в сети с количеством запросов O(n), то DHT находит информацию за O(log2(n)). Это означает, что при удвоении размеров сети требуется в среднем один дополнительный запрос. Для примера, в сети из 2 миллионов узлов требуется максимум 21 запрос (log2(2000000))), чтобы получить информацию о наличии определённого файла на всех узлах сети. В реальности практически любой файл находится за 3-4 запроса.
Сейчас развитие файлообмена продолжается в сторону дальнейшей децентрализации. В будущем торрент-клиенты должны научиться проводить полноценный поиск файлов среди пиров, а контент торрент-трекеров тоже можно распределить по P2P-сети.
К сожалению, предыдущие попытки окончательной децентрализации не увенчались успехом, в том числе по причине большого количества спама в поисковых результатах. Выход из этого можно найти в использовании криптографических подписей, которыми будут заверяться «достоверные» торренты, проверенные тем или иным сайтом. При осуществлении поиска пользователь может просто указать, каким подписям он доверяет, и искать только среди них, фильтруя таким образом спам. В этой системе функция «трекера» типа The Pirate Bay будет заключаться только в том, чтобы изредка выходить в Сеть, проверять новые торренты и подписывать их своим закрытым ключом.
Сейчас идёт работа над клиентом, в котором будут реализованы данные возможности. Проект носит предварительное название NeoLoader и пока что находится в стадии альфа-тестирования. По имеющейся информации, он сможет скачивать файлы из сетей BitTorrent, eMule, а также с файлохостингов.
Источник: xakep.ru
eMule
12 февраля, 2013 0
eMule – свободный компьютерный клиент файлообменной сети ed2k для операционных систем семейства Microsoft Windows. Был разработан как замена проприетарному клиенту eDonkey2000. Также может работать с Kad-сетью.
Со времени первых своих версий и до сегодняшнего дня, eMule претерпел множество изменений и улучшений. Сеть часто пытались закрыть. Для этого создавались программы, которые наносили вред сети и отбивали у людей желание пользоваться eMule’ом (или аналогичными клиентами, например, eDonkey, Lphant и др.).
Например, была разработана система порчи файлов, когда вместо оригинальных его частей в процессе отдачи подсовывались заведомо повреждённые. На сегодня это сделать практически невозможно, так как в современных версиях производится постоянная проверка частей при закачке (при помощи т. н. AICH-хеша). Даже если часть случайно повредится, то eMule сразу это заметит и перекачает заново.
Крупные ed2k-сервера периодически закрывают. Однако теперь это уже не создаёт особых проблем для пользователей, так как eMule умеет работать в децентрализованной сети KAD (на сегодня это версия 2.0), которую уничтожить практически невозможно. Сегодня заметна тенденция увеличения эффективности KAD-сети по сравнению с классической ed2k.
Так, поиск файлов и источников происходит быстрее, отсутствует спам. Среди недостатков KAD можно отметить не мгновенное эффективное включение в работу (необходимо время, чтобы eMule сформировал достаточно большую хеш-таблицу, хотя бы на 600-700 контактов). Кроме того, если клиент получил статус LowID, то для полноценной работы необходимо найти т. н. приятеля – другого клиента, через которого можно было бы индексировать в сети свои файлы.
Начиная с версии 0.47b появилась возможность скрывать использование сети eDonkey от провайдеров благодаря вуалированию протокола, которое, тем не менее, не гарантирует такой степени сокрытия информации, как полноценное её шифрование.
Существуют разные подставные клиенты и сервера, которые регулярно пытаются вредить сети, например, подсовывать ложные файлы. Но и против этого есть средство – IP-адреса вредителей записываются в специальный файл-фильтр, и в дальнейшем eMule игнорирует их.
Против ложных результатов поиска («фальшивок») в программе существует спам-фильтр. Кроме того, обычно при закачке характерных фальшивок сервер сам сообщает, что этот файл лучше удалить.
Очень полезной бывает функция оценок файлов, которая помогает другим пользователям определить, стоит ли качать тот или иной файл. Сегодня eMule также умеет определять подлинность типов файлов (например, действительно ли данное расширение *.rar является архивом, или это переименованное видео). Начиная с версии 0.46b, eMule поддерживает так называемые коллекции. Коллекции могут быть подписаны релиз-группой в качестве меры борьбы с подделками.
В eMule можно также и общаться. Для этого в программу встроен IRC-клиент, где, как правило, обычно можно быстро проконсультироваться при возникших вопросах или проблемах. Есть и система обмена сообщениями, причём начиная с версии 0.49а автоматический спам, который практикуют некоторые моды, исключён благодаря функции captcha аутентификации.
eMule ведёт подробнейшую статистику своей работы, которая позволяет видеть картину закачек как за текущий сеанс, так и за всё время.
С версии 0.48a добавлена поддержка UPnP на основе кода Shareaza.
Кроме того, в eMule разработана функция MobileMule, которая позволяет управлять клиентом с мобильного телефона, а также веб-сервер, который выполняет ту же роль, но только не с телефона, а с другого компьютера. Правда, для удалённого управления необходим полноценно маршрутизируемый IP-адрес.
В eMule существует множество полезных функций, которые обеспечивают надёжность, стабильность и удобство пользования программой. Таким образом, на сегодня это весьма продуманная, устойчивая проверенная жизнью система, которая постоянно развивается уже много лет.
Основные характеристики eMule
- Клиент использует несколько сетей, чтобы создать одну надежную сеть (ed2k, Source Exchange, Kad).
- Система очереди и кредитов помогают добиться того, чтобы каждый человек получил нужные файлы быстрее, если он будет отдавать тот же файл другим пользователям eMule.
- eMule – совершенно бесплатная программа и при этом не содержит никаких шпионских или рекламных дополнений.
- Каждый файл проверяется на ошибки по мере скачивания, чтобы убедиться, что он скачан правильно.
- Автоматические настройки и диспетчер источников делают возможным одновременное скачивание нескольких файлов без необходимости следить за работой программы.
- Функция предпросмотра позволяет просмотреть недокачанные фильмы и заглянуть в архивы ещё до того, как они скачаны до конца.
Для предпросмотра видео, рекомендуется программа Video Lan Client (VLC).
- В eMule есть веб-сервисы и веб-сервер, позволяющий управлять клиентом в Интернете или с мобильного телефона.
- Есть возможность отправлять сообщения другим клиентам, и добавлять их в список друзей.
Вы всегда будете видеть, когда ваши друзья бывают в сети.
- В eMule интегрирован IRC-клиент.
Вы можете общаться с другими людьми по всей планете.
Ссылки
Источник: wikiprograms.org