eMule es una aplicación gratuita de intercambio de archivos peer-to-peer para Microsoft Windows . Lanzada en mayo de 2002 como una alternativa a eDonkey2000 , eMule ahora se conecta tanto a la red eDonkey como a la red Kad . Las características distintivas de eMule son el intercambio directo de fuentes entre nodos de clientes, la recuperación rápida de descargas corruptas y el uso de un sistema de créditos para recompensar a quienes suben archivos con frecuencia. Además, eMule transmite datos en formato comprimido zlib para ahorrar ancho de banda.
eMule está escrito en C++ utilizando las Microsoft Foundation Classes . Desde julio de 2002, eMule es software libre , publicado bajo la Licencia Pública General de GNU ; su popularidad ha llevado a que el código base de eMule se utilice como base de clientes multiplataforma como aMule , JMule y xMule , junto con el lanzamiento de muchos mods de eMule (modificaciones del eMule original) en Internet.
A partir de octubre de 2023, [actualizar]es el quinto proyecto más descargado en SourceForge , con más de 693 millones de descargas. [5]
El desarrollo fue reiniciado posteriormente por la comunidad como eMule Community ; la última versión estable es 0.70b. [4]
El proyecto eMule fue iniciado el 13 de mayo de 2002 por Hendrik Breitkreuz (también conocido como Merkur), quien no estaba satisfecho con el cliente original eDonkey2000 . Con el tiempo, más desarrolladores se unieron al esfuerzo. El código fuente se publicó por primera vez en la versión 0.02 y se publicó en SourceForge el 6 de julio de 2002.
eMule se lanzó por primera vez como binario el 4 de agosto de 2002 en la versión 0.05a. El "Sistema de créditos" se implementó por primera vez el 14 de septiembre de 2002 en la versión 0.19a. El sitio web del proyecto eMule se puso en marcha el 8 de diciembre de 2002.
Las versiones actuales (v0.40+) de eMule han añadido soporte para la red Kad . Esta red tiene una implementación del protocolo Kademlia , que no depende de servidores centrales como lo hace la red eDonkey , sino que es una implementación de una tabla hash distribuida .
También se agregó en versiones recientes la capacidad de buscar usando Unicode , lo que permite realizar búsquedas de archivos en alfabetos no latinos, y la capacidad de buscar servidores de archivos con fuentes completas de archivos sin terminar en la red eDonkey .
En las nuevas versiones, se agregó una "Lista de fuentes incorrectas". La aplicación agrega una dirección IP a esta lista después de una conexión fallida. Después de agregar una IP a la "Lista de fuentes incorrectas", la aplicación trata esta IP como una IP "muerta". Las IP no disponibles se bloquean por un período de tiempo de 15 a 45 minutos. Algunos usuarios se han quejado de que esto provoca una pérdida de fuentes activas y, posteriormente, reduce la velocidad de descarga.
Otras incorporaciones recientes incluyen: la capacidad de ejecutar eMule desde una cuenta de usuario con privilegios limitados (mejorando así la seguridad) y AICH (para que no sea necesario volver a descargar por completo un fragmento dañado).
La versión 0.46b agregó la creación y administración de archivos de "colección eMule", que contienen un conjunto de enlaces a archivos destinados a ser descargados como un conjunto.
Desde 2007, muchos ISP han utilizado limitaciones de ancho de banda para los puertos P2P habituales, lo que da como resultado un rendimiento lento. [6] La versión 0.47b agrega ofuscación de protocolo y eMule seleccionará automáticamente dos números de puerto al azar en el asistente de inicio.
Cada archivo que se comparte mediante eMule se codifica como una lista de hash que comprende fragmentos separados de 9500 KiB utilizando el algoritmo MD4 . El hash MD4 de nivel superior , el tamaño del archivo, el nombre del archivo y varios atributos de búsqueda secundarios, como la velocidad de bits y el códec, se almacenan en servidores eD2k y en la red sin servidor Kad .
Los usuarios pueden buscar nombres de archivos en los servidores/kad y se les presentan los nombres de archivo y el identificador único que consiste en el hash MD4 de nivel superior para el archivo y el tamaño del archivo que se puede agregar a sus descargas. Luego, el cliente pregunta a los servidores dónde están usando ese hash los otros clientes. Los servidores devuelven un conjunto de IP/puertos que indican las ubicaciones de los clientes que comparten el archivo.
Luego, eMule solicita el archivo a sus pares. Luego, eMule quedará en cola hasta que haya un espacio de carga disponible.
Cuando se descarga y verifica un fragmento completo de 9.728.000 bytes (9500 KiB), el descargador también comparte estos datos, lo que ayuda a otros a descargar también el archivo.
También es posible que un cliente conozca a otros clientes que también estén compartiendo ese mismo archivo. En ese caso se realiza un intercambio de origen entre los clientes. Este intercambio de pares conocidos se realiza directamente entre los pares.
Las versiones más nuevas de eMule son compatibles con AICH ( Advanced Intelligent Corruption Handling ). Su objetivo es que el manejo de la corrupción de eMule sea competitivo con BitTorrent . Los hashes SHA-1 se calculan para cada subfragmento de 180 KiB y se forma un árbol de hashes SHA-1 completo . AICH se procesa únicamente con intercambios de fuentes peer to peer. eMule requiere que 10 pares estén de acuerdo con respecto al hash SHA-1, por lo que los archivos raros generalmente no se benefician de AICH.
Los usuarios que no pueden ser alcanzados desde el exterior porque están protegidos por un cortafuegos , detrás de un dispositivo NAT que no ha sido correctamente reenviado por puerto , o cuya dirección IP termina en cero (por ejemplo, 123.45.67.0) [7] obtienen un "ID bajo" de los servidores. Aún pueden cargar y descargar, pero necesitan la ayuda de servidores u otros clientes kad para que otros clientes puedan comunicarse con ellos. Como no se les puede notificar que están frente a una cola de carga, tienen que sondear a sus pares si hay una ranura de carga disponible. Como no pueden conectarse a ningún otro cliente de ID bajo, solo ven el 40-60% [8] de los clientes que puede ver un ID alto. Sus IP /puertos no se intercambian entre otros pares, lo que limita sus posibilidades de encontrar fuentes a través del intercambio de fuentes P2P puro de eMule.
Un cliente de ID baja también consume muchos más datos [9] en un servidor electrónico que un cliente de ID alta debido a las devoluciones de llamadas de ID baja. Además, un liberador o un cargador intensivo que utiliza un mod de liberador como MorphXT o Xtreme que se ve obligado a operar en un ID bajo (habitación de hotel, trabajo) también encontrará que tendrá poco control sobre sus prioridades de carga (especialmente los powershares) ya que los servidores parecen limitar su reenvío de conexión para cada cliente, convirtiendo así su cola de carga en una situación de contención donde el primero que puede obtener el reenvío y encuentra un espacio libre lo obtiene.
Los créditos no son globales, se intercambian entre dos clientes específicos. El sistema de créditos se utiliza para recompensar a los usuarios que contribuyen a la red, es decir, que suben datos a otros clientes. El estricto sistema de colas de eMule se basa en el tiempo de espera que un usuario ha pasado en la cola. El sistema de créditos proporciona un modificador importante a este tiempo de espera al tener en cuenta la carga y descarga entre los dos clientes. Cuanto más sube un usuario a un cliente, más rápido avanza en la cola de este cliente. Los modificadores se calculan a partir de la cantidad de datos transferidos entre los dos clientes. Los valores utilizados se pueden ver en el cuadro de diálogo de detalles del cliente. Para ver esta información, haga clic derecho en cualquier usuario y elija Ver detalles.
Todos los clientes que suben contenido a su sitio reciben una recompensa a través del sistema de créditos. No importa si el cliente es compatible con el sistema de créditos o no. Los clientes que no lo sean no le otorgarán créditos cuando les suba contenido. Los créditos se almacenan en el archivo clients.met. El hash de usuario único se utiliza para identificar al cliente. Sus propios créditos son guardados por el cliente que le debe el crédito. Esto evita la falsificación de los créditos. Sus propios créditos no se pueden mostrar.
La fórmula de cálculo del Sistema Oficial de Crédito se compone de dos ratios como sigue: [10]
Luego se comparan ambas proporciones y se utiliza la más baja como modificador. Existen algunas condiciones:
Una excepción a esta regla se aplica únicamente cuando a un par se le asigna un "espacio de amigo" después de ser agregado a la lista de amigos del cliente. Esto asigna automáticamente un espacio de carga reservado para ese par para que pueda comenzar a descargar independientemente de la calificación crediticia. Solo se puede reservar un espacio de amigo para evitar cualquier forma de abuso, como la discriminación en la carga. [11]
Se dice que eMule es la implementación más completa del protocolo eD2k y sus extensiones [¿ por quién? ] . eMule es compatible con AICH, lo que hace que su manejo de la corrupción sea competitivo con BitTorrent . eMule también es compatible con intercambios de fuentes, lo que le permite reducir sustancialmente las cargas en los servidores y Kad. Con un ID alto y descargas bien obtenidas previamente por el servidor y/o Kad, eMule puede mantener las fuentes de pares en estos archivos independientes durante más tiempo después de la desconexión de eD2k y Kad.
Como programa de código abierto popular, eMule tiene muchas variantes, generalmente llamadas mods. Algunos mods comenzaron como bifurcaciones de versiones oficiales de eMule y luego continuaron desarrollándose de forma independiente en lugar de modificar versiones oficiales más nuevas. Un ejemplo de este tipo de mod es el obsoleto eMule Plus . Dado que eMule Plus se bifurcó antes del lanzamiento de la v0.30, la primera versión oficial que incluía Kad, eMule Plus no admite esta característica principalmente porque el desarrollo del proyecto ha estado abandonado durante aproximadamente 4 años. Otros mods actuales siguen los lanzamientos oficiales de eMule y hacen sus propios lanzamientos basados en cada nuevo lanzamiento de la versión oficial. Dado que los mods distribuidos deben compartir públicamente su código fuente según la Licencia Pública General de GNU, las características útiles creadas por los desarrolladores de mods se pueden incorporar rápidamente a una versión oficial.
Debido a la popularidad y al carácter de código abierto de eMule, algunos terceros han creado versiones modificadas del mismo, que con frecuencia contienen programas espía y otros programas maliciosos . Algunos sitios falsos solicitan información de la tarjeta de crédito o requieren que el usuario se registre para obtener una membresía paga. El eMule oficial es gratuito y no solicita dicha información.
Estas versiones suelen encontrarse a través de anuncios rotativos que a veces se colocan en sitios legítimos. [12] [13]
EasyMule de VeryCD es un cliente de eMule muy popular entre los usuarios chinos. Tiene una interfaz simplificada y carece de algunas configuraciones avanzadas disponibles en el cliente estándar de eMule. A partir de la versión 1.1, solo admite búsquedas en la base de datos de VeryCD, aunque se aceptan enlaces externos a eD2k. Algunos criticaron a VeryCD por su nombre engañoso "Dianlv" ( chino :电驴; pinyin : Diàn Lǘ ; lit. 'Electronic Donkey'; generalmente el nombre chino para eDonkey o eMule) y el sitio emule.org.cn, que se llama "Dianlv (eMule) Chinese Site" (电驴(eMule)中文网站). [14] [15]
El 29 de julio de 2017 se lanzó una "Versión comunitaria" de eMule [16] mantenida por los usuarios del foro oficial. Esta versión está disponible para descargar en un repositorio de GitHub y se basa en la última versión oficial o beta, pero contiene características adicionales y correcciones de errores realizadas por la comunidad, priorizando una versión más actualizada. [17]