EMule

Last updated
eMule
Original author(s) Merkur
Developer(s) eMule-Team
Initial releaseMay 13, 2002;21 years ago (2002-05-13)
Final release 0.50a (April 7, 2010;13 years ago (2010-04-07) [1] ) [±]
Repository
Written in C++ [2]
Operating system Windows
Available in43 languages [3]
Type Peer-to-peer file sharing
License GNU GPLv2
Website emule-project.net
eMule Community
Developer(s) fox88
Stable release
0.70a / August 26, 2023;2 months ago (2023-08-26) [4]
Repository github.com/irwir/eMule
Website Forum community thread

eMule is a free peer-to-peer file sharing application for Microsoft Windows. Started in May 2002 as an alternative to eDonkey2000, eMule now connects to both the eDonkey network and the Kad network. The distinguishing features of eMule are the direct exchange of sources between client nodes, fast recovery of corrupted downloads, and the use of a credit system to reward frequent uploaders. Furthermore, eMule transmits data in zlib-compressed form to save bandwidth.

Contents

eMule is coded in C++ using the Microsoft Foundation Classes. Since July 2002 eMule has been free software, released under the GNU General Public License; its popularity has led to eMule's codebase being used as the basis of cross-platform clients aMule, JMule, xMule, along with the release of many eMule mods (modifications of the original eMule) on the Internet.

As of October 2023, it is the fifth most downloaded project on SourceForge, with over 693 million downloads. [5]

Development was later restarted by the community as eMule Community; the latest stable version is 0.70a. [4]

History

The eMule project was started on May 13, 2002 by Hendrik Breitkreuz (also known as Merkur) who was dissatisfied with the original eDonkey2000 client. Over time more developers joined the effort. The source was first released at version 0.02 and published on SourceForge on July 6, 2002.

eMule was first released as a binary on August 4, 2002 at version 0.05a. The 'Credit System' was implemented for the first time on September 14, 2002 in version 0.19a. The eMule project website started up on December 8, 2002.

Nodes in Kad network EMule Kad nodes 20111024142233.png
Nodes in Kad network

Current versions (v0.40+) of eMule have added support for the Kad network. This network has an implementation of the Kademlia protocol, which does not rely on central servers as the eDonkey network does, but is an implementation of a distributed hash table.

Also added in recent versions were the ability to search using unicode, allowing for searches for files in non-Latin alphabets, and the ability to search servers for files with complete sources of unfinished files on the eDonkey network.

In new versions, a "Bad source list" was added. The application adds an IP address to this list after one unsuccessful connection. After adding an IP to the "Bad source list", the application treats this IP as a "dead" IP. Unavailable IPs are banned for a time period from 15 to 45 minutes. Some users have complained that it leads to a loss of active sources and subsequently slows download speed.

Other recent additions include: the ability to run eMule from a user account with limited privileges (thus enhancing security), and AICH (so that a corrupted chunk does not need to be re-downloaded entirely).

The 0.46b version added the creation and management of "eMule collection" files, which contain a set of links to files intended to be downloaded as a set.

From 2007, many ISPs have used bandwidth throttling for usual P2P ports, resulting in slow performances. [6] The 0.47b version adds protocol obfuscation and eMule will automatically select two port numbers at random in the startup wizard.

Basic concepts

File transfer statistics of v0.48a Emule-transfer-stats-window 048a.png
File transfer statistics of v0.48a

Each file that is shared using eMule is hashed as a hash list comprising separate 9500 KiB chunks using the MD4 algorithm. The top-level MD4 hash, file size, filename, and several secondary search attributes such as bit rate and codec are stored on eD2k servers and the serverless Kad network.

Search parameters in eMule v0.50a EMule v0 5a search parameters 20111024140149.png
Search parameters in eMule v0.50a

Users can search for filenames in the servers/kad and are presented with the filenames and the unique identifier consisting of the top-level MD4 hash for the file and the file's size that can be added to their downloads. The client then asks the servers where the other clients are using that hash. The servers return a set of IP/ports that indicate the locations of the clients that share the file.

eMule then asks the peers for the file. eMule will then be queued until an upload slot becomes available.

When a complete chunk of 9,728,000 bytes (9500 KiB) is downloaded and verified, this data is also shared by the downloader, helping others to download the file as well.

It is also possible that a client knows other clients that are also sharing that same file. In that case a source exchange between the clients is made. This exchange of known peers is done directly between the peers.

Newer versions of eMule support AICH (Advanced Intelligent Corruption Handling). It is meant to make eMule's corruption handling competitive with BitTorrent. SHA-1 hashes are computed for each 180 KiB sub-chunk and a whole SHA-1 hash tree is formed. AICH is processed purely with peer-to-peer source exchanges. eMule requires 10 agreeing peers regarding the SHA-1 hash, so rare files generally do not benefit from AICH.

Low ID

Users who cannot be reached from the outside because they are firewalled, behind a NAT device that has not been correctly port forwarded, or whose IP address ends with a zero (e.g. 123.45.67.0) [7] get a "Low ID" from the servers. They are still able to upload and download but need the help of servers or other kad clients to be reached by other clients. Since they cannot be notified that they are in front of an upload queue, they have to poll peers if an upload slot is available. Since they cannot connect to any other Low ID clients, they see only 40–60% [8] of the clients that a High ID can see. Their IP/ports are not exchanged between other peers, limiting their possibilities for finding sources via eMule's pure-P2P source exchange.

A Low ID client also consumes a lot more data [9] on an eserver than a High ID client due to the lowidcallbacks. Also, a releaser or heavy uploader that uses a releaser mod such as MorphXT or Xtreme that is forced to operate on a Low ID (hotel room, job) also will find that they will have little control over their upload priorities (especially powershares) as the servers appear to limit their connection-forwarding for each client, thus turning their upload queue to a contention situation where the first to be able to get forwarding and find an open slot gets it.

Credit system

Credits are not global; they are exchanged between two specific clients. The credit system is used to reward users contributing to the network, i.e. uploading to other clients. The strict queue system in eMule is based on the waiting time a user has spent in the queue. The credit system provides a major modifier to this waiting time by taking the upload and download between the two clients into consideration. The more a user uploads to a client the faster they advance in this client's queue. The modifiers are calculated from the amount of transferred data between the two clients. The values used can be seen in the client's details dialog. To view this information, right-click on any user and choose View Details.

All Clients uploading to you are rewarded by the credit system. It does not matter if the client supports the credit system or not. Non-supporting clients will grant you no credits when you upload to them. Credits are stored in the clients.met file. The unique user hash is used to identify the client. Your own credits are saved by the client who owes you the credit. This prevents faking the credits. Your own credits cannot be displayed.

The computation formula for the Official Credit System is composed of two ratios as follows: [10]

Both ratios are then compared and the lower one is used as the modifier. A few conditions exist:

An exception to this rule applies only when a peer is assigned a "Friend Slot" after being added to the client's Friends list. This automatically assigns a reserved upload slot for that peer so that he/she can begin downloading regardless of the Credit rating. Only one Friend Slot can be reserved so as to prevent any form of abuse such as upload discrimination. [11]

eMule compared to other P2P applications

eMule is said to be the most complete implementation of the eD2k protocol and its extensions[ by whom? ]. eMule supports AICH, making its corruption handling competitive with BitTorrent. eMule also supports source exchanges, allowing it to substantially reduce the loads on the servers and Kad. With a High ID and well-sourced downloads pre-acquired by server and/or Kad, eMule is able to sustain the peer sources on these files independent longer after disconnection from eD2k and Kad.

eMule mods

As a popular open source program, eMule has many variants, usually called mods. Some mods started as forks from official eMule versions and then continued to develop independently rather than modifying newer official versions. An example of this type of mod is the obsolete eMule Plus. Since eMule Plus forked off before the release of v0.30, the first official version to include Kad, eMule Plus does not support this feature mainly because the project development has been abandoned for about 4 years. Other current mods follow official eMule releases and make their own releases based on each new release of the official version. Since distributed mods are required to publicly share their source code by the GNU General Public License, useful features created by mod developers can be quickly incorporated into an official version.

Fake eMule sites and malware

Due to the popularity and open-source nature of eMule, some third parties have created modified versions of it, which frequently contain spyware and other malware programs. Some fake sites ask for credit card information or require the user to sign up for a paid membership. The official eMule is free and does not ask for such information.

These versions are usually found via rotating advertisements sometimes placed on legitimate sites. [12] [13]

Chinese mods of eMule client

VeryCD's easyMule is a popular eMule client among Chinese users. It has a simplified interface and lacks some advanced settings available in the standard eMule client. As of version 1.1 it only supports searching through the VeryCD database, though external eD2k links are accepted. Some criticized VeryCD for their misleading name "Dianlv" (Chinese :电驴; pinyin :Diàn Lǘ; lit.'Electronic Donkey'; generally the Chinese name for eDonkey or eMule) and the site emule.org.cn, which is named "Dianlv (eMule) Chinese Site" (电驴(eMule)中文网站). [14] [15]

Community version

On July 29, 2017 was released a "Community Version" of eMule [16] maintained by the official forum users. This version is available to download in a GitHub repository and is based on the latest official release or beta but contains additional features and bug fixes made by the community, prioritizing a more up-to-date version. [17]

See also

Related Research Articles

Uploading refers to transmitting data from one computer system to another through means of a network. Common methods of uploading include: uploading via web browsers, FTP clients], and terminals (SCP/SFTP). Uploading can be used in the context of clients that send files to a central server. While uploading can also be defined in the context of sending files between distributed clients, such as with a peer-to-peer (P2P) file-sharing protocol like BitTorrent, the term file sharing is more often used in this case. Moving files within a computer system, as opposed to over a network, is called file copying.

<span class="mw-page-title-main">Shareaza</span> Peer-to-peer file sharing application

Shareaza is a peer-to-peer file sharing client running under Microsoft Windows which supports the gnutella, Gnutella2 (G2), eDonkey, BitTorrent, FTP, HTTP and HTTPS network protocols and handles magnet links, ed2k links, and the now deprecated gnutella and Piolet links. It is available in 30 languages.

eDonkey2000

eDonkey2000 was (is) a peer-to-peer file sharing application developed by US company MetaMachine, using the Multisource File Transfer Protocol. It supported both the eDonkey2000 network and the Overnet network.

BitTorrent, also referred to as simply torrent, is a communication protocol for peer-to-peer file sharing (P2P), which enables users to distribute data and electronic files over the Internet in a decentralized manner. The protocol is developed and maintained by Rainberry, Inc., and was first released in 2001.

aMule

aMule is a free peer-to-peer file sharing utility that works with the eDonkey network and the Kad network, offering similar features to eMule and adding others such as GeoIP. On August 18, 2003 it was forked from the xMule source code, which itself is a fork of the lMule project, which was the first attempt to bring the eMule client to Linux. These projects were discontinued and aMule is the resulting project, though aMule has less and less resemblance to the client that sired it.

<span class="mw-page-title-main">BitComet</span> BitTorrent, FTP and HTTP client

BitComet is a cross-protocol BitTorrent, HTTP and FTP client written in C++ for Microsoft Windows and available in 52 different languages. Its first public release was version 0.28. The current BitComet logo has been used since version 0.50.

<span class="mw-page-title-main">Magnet URI scheme</span> Scheme that defines the format of magnet links

Magnet is a URI scheme that defines the format of magnet links, a de facto standard for identifying files (URN) by their content, via cryptographic hash value rather than by their location.

The eDonkey Network is a decentralized, mostly server-based, peer-to-peer file sharing network created in 2000 by US developers Jed McCaleb and Sam Yagan that is best suited to share big files among users, and to provide long term availability of files. Like most sharing networks, it is decentralized, as there is no central hub for the network; also, files are not stored on a central server but are exchanged directly between users based on the peer-to-peer principle.

The Kad network is a peer-to-peer (P2P) network which implements the Kademlia P2P overlay protocol. The majority of users on the Kad Network are also connected to servers on the eDonkey network, and Kad Network clients typically query known nodes on the eDonkey network in order to find an initial node on the Kad network.

GnucDNA was a software library for building peer-to-peer applications. It provides developers with a common layer to create their own Gnutella or Gnutella2 client or network. As a separate component, GnucDNA can be updated independently of the client, passing down improvements to the applications already using it.

In computing and specifically in Internet slang, a leech is one who benefits, usually deliberately, from others' information or effort but does not offer anything in return, or makes only token offerings in an attempt to avoid being called a leech. In economics, this type of behavior is called "free riding" and is associated with the free rider problem. The term originated in the bulletin board system era, when it referred to users that would download files and upload nothing in return.

File sharing is a method of distributing electronically stored information such as computer programs and digital media. Below is a list of file sharing applications, most of them make use of peer-to-peer file sharing technologies.

<span class="mw-page-title-main">VeryCD</span> Chinese file sharing website

VeryCD is a Chinese website that shares files via eD2k links. The website was begun in September 2003 by Huang Yimeng. In June 2005, Shanghai Source Networking Technology Co., Ltd was established. It is a for-profit organization headquartered in Shanghai, China. Today, VeryCD is one of the most popular file-sharing websites in China.

The following tables compare general and technical information for a number of available applications supporting the eDonkey network.

In computing, eD2k links (ed2k://) are hyperlinks used to denote files stored on computers connected to the eDonkey filesharing P2P network.

This is a glossary of jargon related to peer-to-peer file sharing via the BitTorrent protocol.

Peer-to-peer file sharing (P2P) systems like Gnutella, KaZaA, and eDonkey/eMule, have become extremely popular in recent years, with the estimated user population in the millions. An academic research paper analyzed Gnutella and eMule protocols and found weaknesses in the protocol; many of the issues found in these networks are fundamental and probably common on other P2P networks. Users of file sharing networks, such as eMule and Gnutella, are subject to monitoring of their activity. Clients may be tracked by IP address, DNS name, software version they use, files they share, queries they initiate, and queries they answer to. Clients may also share their private files to the network without notice due to inappropriate settings.

libtorrent

libtorrent is an open-source implementation of the BitTorrent protocol. It is written in and has its main library interface in C++. Its most notable features are support for Mainline DHT, IPv6, HTTP seeds and μTorrent's peer exchange. libtorrent uses Boost, specifically Boost.Asio to gain its platform independence. It is known to build on Windows and most Unix-like operating systems.

<span class="mw-page-title-main">Lphant</span> Peer-to-peer sharing software

Lphant was a peer-to-peer file sharing client for the Microsoft Windows, Linux and Mac OS operating systems, which supports the eDonkey Network and the BitTorrent protocol. It was available in 19 languages. The name and logo of the original Lphant application has been replicated in a program called "Lphant 6.0".

In the BitTorrent file distribution system, a torrent file or meta-info file is a computer file that contains metadata about files and folders to be distributed, and usually also a list of the network locations of trackers, which are computers that help participants in the system find each other and form efficient distribution groups called swarms. Torrent files are normally named with the extension .torrent.

References

  1. "The eMule Project at SourceForge.net". eMule.SourceForge.net. 2010-04-07. Retrieved 2010-07-11.
  2. Lextrait, Vincent (January 2010). "The Programming Languages Beacon, v10.0". Archived from the original on 30 May 2012. Retrieved 14 March 2010.
  3. eMule 0.50a Source Archived 2011-06-13 at the Wayback Machine : /srchybrid/lang/
  4. 1 2 "Releases". GitHub . 2021-05-13. Archived from the original on 2021-06-06. Retrieved 2021-06-01.
  5. "Top Project Listings". sourceforge.net. Retrieved 2023-10-29.
  6. "DailyTech - More ISP Confessions: We Throttle P2P Traffic". Archived from the original on 2009-09-16. Retrieved 2009-08-08.
  7. forum.emule-project.net Archived 2007-09-27 at the Wayback Machine How a Low ID is calculated.
  8. "Low Id clients increasing - Official eMule-Board". emule-project.net. Archived from the original on 2023-01-17. Retrieved 2007-11-02.
  9. forum.emule-project.net Archived 2023-01-17 at the Wayback Machine lugdunummaster's technical post on direct and collateral upstream bandwidth consumption of a Low ID and a High ID client on RazorBack, in this example 20 times more overhead
  10. "eMule-Project.net - Official eMule Homepage. Downloads, Help, Docu, News..." emule-project.net. Archived from the original on 2008-05-12. Retrieved 2008-05-22.
  11. "eMule-Project.net - Official eMule Homepage. Downloads, Help, Docu, News..." www.emule-project.net. Archived from the original on 2007-10-11. Retrieved 2007-10-12.
  12. "The Spyware Infested Filesharing Programs List". 10 November 2006. Archived from the original on 26 February 2009. Retrieved 2009-03-11.
  13. "Fraudulent sites to eMule". 11 December 2008. Archived from the original on 2009-03-07. Retrieved 2009-03-16.
  14. 陈佼"每周一蛋疼":诚恳建议"电驴"改名 (in Chinese). cnBeta. Archived from the original on 2010-07-20. Retrieved 2010-07-20.
  15. "VeryCD对eMule/电驴/电骡/VeryCD/EasyMule等词的混淆性宣传分析与证据" (in Chinese). Archived from the original on 2010-07-05. Retrieved 2009-09-17.
  16. "Release eMule_v0.50b-unofficial: .: Fixed: minimize to tray after display scaling change". irwir/eMule. 29 July 2017. Archived from the original on 11 December 2020. Retrieved 7 April 2021.
  17. "eMule-Project.net". Archived from the original on 9 August 2020. Retrieved 7 April 2021.