<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://test.amule.szerverem.hu/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://test.amule.szerverem.hu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.139.115.64</id>
		<title>AMule Project FAQ - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://test.amule.szerverem.hu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.139.115.64"/>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/Special:Contributions/87.139.115.64"/>
		<updated>2026-04-05T10:33:52Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.3</generator>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/HowTo_Compile_In_Debian-de</id>
		<title>HowTo Compile In Debian-de</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/HowTo_Compile_In_Debian-de"/>
				<updated>2007-11-30T11:32:08Z</updated>
		
		<summary type="html">&lt;p&gt;87.139.115.64: /* Vorbereitung: wxwidgets compilieren und installieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;'''Deutsch''' | [[HowTo_Compile_In_Debian|English]] | [[HowTo_Compile_In_Debian-es|Español]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''ANMERKUNG:''' Diese Anleitung funktioniert auch f&amp;amp;uuml;r [http://www.ubuntulinux.com Ubuntu Linux].&lt;br /&gt;
&lt;br /&gt;
Siehe auch allgemein [[Compilation Installation-de|Kompilieren/Installieren]]&lt;br /&gt;
&lt;br /&gt;
== Bis du sicher das du kompilieren willst?? ==&lt;br /&gt;
&lt;br /&gt;
Wenn nicht, (was normal ist) eintscheide dich ob du das stabile [[aMule-de|aMule]] oder die Entwicklerversion [[aMule CVS-de|aMule CVS]] willst.&lt;br /&gt;
&lt;br /&gt;
=== [[aMule-de|aMule]] stabile Ver&amp;amp;ouml;ffentlichung ===&lt;br /&gt;
&lt;br /&gt;
'''Diese Pakete sind ausschlie&amp;amp;szlig;lich f&amp;amp;uuml;r Debian 3.1 Sarge!'''&lt;br /&gt;
&lt;br /&gt;
Du kannst du aktuell stable [[aMule-de|aMule]] Version als [http://packages.debian.org deb]s beziehen. Dazu musst du nur folgendes deiner ''/etc/apt/sources.list'' Datei hinzuf&amp;amp;uuml;gen:&lt;br /&gt;
&lt;br /&gt;
 deb http://amule-debian.dyndns.org/ debian/&lt;br /&gt;
&lt;br /&gt;
Und anschlie&amp;amp;szlig;end &amp;lt;code&amp;gt;apt-get update &amp;amp;&amp;amp; apt-get install amule&amp;lt;/code&amp;gt; ausf&amp;amp;uuml;ren.&lt;br /&gt;
&lt;br /&gt;
Pakete in diesem Repository:&lt;br /&gt;
*amule&lt;br /&gt;
*amule-daemon&lt;br /&gt;
*amule-remote-gui&lt;br /&gt;
*amule-gui-utils (alc, wxcas)&lt;br /&gt;
*amule-console-utils (amuleweb, alcc, cas)&lt;br /&gt;
*amule-utils (metapackage f&amp;amp;uuml;r amule-gui-utils und amule-console-utils)&lt;br /&gt;
&lt;br /&gt;
'''ANMERKUNGEN:''' &lt;br /&gt;
* Wenn [[aMule-de|aMule]] mit einer Fehlermeldung &amp;amp;uuml;ber libbfd-2.15.so abbricht bedeutet das, das du NICHT Debian Sarge benutzt. Fange lieber nicht mit irgendwelchen Symlinks oder anderen Tricks an, das kann dir das ganze System versauen.&lt;br /&gt;
&lt;br /&gt;
* http://dude.gemil.de ist veraltet. http://amule-debian.dyndns.org is (zumindest vorerst) leitet zur Zeit nur um, aber das k&amp;amp;ouml;nnte sich in Zukunft &amp;amp;auml;dern (Wenn das Repository wegen Bandbreitenbeschr&amp;amp;auml;nkungen verschoben werden muss).&lt;br /&gt;
&lt;br /&gt;
=== [[aMule CVS-de|aMule CVS]] Ver&amp;amp;ouml;ffentlichung ===&lt;br /&gt;
&lt;br /&gt;
Du kannst auch die aktuelle [[aMule CVS-de|aMule CVS]] als Paket beziehen. Dazu muss du folgende Zeile deiner ''/etc/apt/sources.list'' Datei hinzuf&amp;amp;uuml;gen:&lt;br /&gt;
&lt;br /&gt;
 F&amp;amp;uuml;r Debian Testing (aka Lenny). Meistes auch f&amp;amp;uuml; sid/unstable geeignet:&lt;br /&gt;
 &lt;br /&gt;
 deb http://www.vollstreckernet.de/debian/ testing amule&lt;br /&gt;
&lt;br /&gt;
 F&amp;amp;uuml;r Debian Stable (aka Etch)&lt;br /&gt;
 &lt;br /&gt;
 deb http://www.vollstreckernet.de/debian/ stable amule&lt;br /&gt;
&lt;br /&gt;
Wenn du auch eine aktuelle Version von wx (2.8 zur Zeit) ben&amp;amp;ouml;tigst, h&amp;amp;auml;nge einfach '''&amp;quot; wx&amp;quot;''' and die oben genannten Zeilen an..&lt;br /&gt;
Beachte das ein Leerzeichen zwischen amule und wx stehen muss.&lt;br /&gt;
Wenn du nur die wx-Pakete installieren willst, ersetze amule durch wx.&lt;br /&gt;
&lt;br /&gt;
Die Pakete sind mit gpg signiert. Diesen bekommst du durch ausf&amp;amp;uuml;ren von:&lt;br /&gt;
 ''gpg --keyserver wwwkeys.eu.pgp.net --recv 50D0AE60''&lt;br /&gt;
 ''gpg -a --export 50D0AE60 &amp;gt; /tmp/key''&lt;br /&gt;
 ''apt-key add /tmp/key'' (requires superuser privileges)&lt;br /&gt;
&lt;br /&gt;
Jetzt starte ''apt-get update &amp;amp;&amp;amp; apt-get install amule''&lt;br /&gt;
&lt;br /&gt;
Sieh dir auch die anderen [[aMule-de|aMule]] Zubeh&amp;amp;ouml;rprogramme an:&lt;br /&gt;
&lt;br /&gt;
'''[[aMule CVS-de|aMule CVS]]'''&lt;br /&gt;
&lt;br /&gt;
* amule&lt;br /&gt;
* amule-alc&lt;br /&gt;
* amule-alcc&lt;br /&gt;
* amule-alcc-dbg&lt;br /&gt;
* amule-alc-dbg&lt;br /&gt;
* amule-cas&lt;br /&gt;
* amule-cas-dbg&lt;br /&gt;
* amule-cmd&lt;br /&gt;
* amule-cmd-dbg&lt;br /&gt;
* amule-common&lt;br /&gt;
* amule-daemon&lt;br /&gt;
* amule-daemon-dbg&lt;br /&gt;
* amule-dbg&lt;br /&gt;
* amule-ed2k&lt;br /&gt;
* amule-ed2k-dbg&lt;br /&gt;
* amule-i18n-ar&lt;br /&gt;
* amule-i18n-bg&lt;br /&gt;
* amule-i18n-ca&lt;br /&gt;
* amule-i18n-da&lt;br /&gt;
* amule-i18n-de&lt;br /&gt;
* amule-i18n-en-gb&lt;br /&gt;
* amule-i18n-en-us&lt;br /&gt;
* amule-i18n-es&lt;br /&gt;
* amule-i18n-es-mx&lt;br /&gt;
* amule-i18n-et-ee&lt;br /&gt;
* amule-i18n-eu&lt;br /&gt;
* amule-i18n-fi&lt;br /&gt;
* amule-i18n-fr&lt;br /&gt;
* amule-i18n-gl&lt;br /&gt;
* amule-i18n-hr&lt;br /&gt;
* amule-i18n-hu&lt;br /&gt;
* amule-i18n-it&lt;br /&gt;
* amule-i18n-it-ch&lt;br /&gt;
* amule-i18n-ko-kr&lt;br /&gt;
* amule-i18n-nl&lt;br /&gt;
* amule-i18n-pl&lt;br /&gt;
* amule-i18n-pt-br&lt;br /&gt;
* amule-i18n-pt-pt&lt;br /&gt;
* amule-i18n-ru&lt;br /&gt;
* amule-i18n-sl&lt;br /&gt;
* amule-i18n-sv&lt;br /&gt;
* amule-i18n-tr&lt;br /&gt;
* amule-i18n-zh-cn&lt;br /&gt;
* amule-i18n-zh-tw&lt;br /&gt;
* amule-remote-gui&lt;br /&gt;
* amule-remote-gui-dbg&lt;br /&gt;
* amule-skin-gnome&lt;br /&gt;
* amule-skin-kde4&lt;br /&gt;
* amule-skin-tango&lt;br /&gt;
* amule-skin-xfce&lt;br /&gt;
* amule-theme-chicane&lt;br /&gt;
* amule-theme-default&lt;br /&gt;
* amule-theme-php-default&lt;br /&gt;
* amule-utils&lt;br /&gt;
* amule-utils-gui&lt;br /&gt;
* amuleweb&lt;br /&gt;
* amuleweb-dbg&lt;br /&gt;
* amule-wxcas&lt;br /&gt;
* amule-wxcas-dbg&lt;br /&gt;
* amule-xas&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel, wenn dir [[aMule-de|aMules]] [[AMuleWeb-de|Web interface]] gef&amp;amp;auml;llt und du das auch haben willst, starte nach den obigen Befehlen:&lt;br /&gt;
&lt;br /&gt;
F&amp;amp;uuml;r [[aMule CVS-de|aMule CVS]]: ''apt-get install amuleweb''&lt;br /&gt;
&lt;br /&gt;
F&amp;amp;uuml;r [[aMule-de|aMule]] stabile Ver&amp;amp;ouml;ffentlichung: ''apt-get install amule-console-utils''&lt;br /&gt;
&lt;br /&gt;
Wenn du [[aMule-de|aMule]] immernoch kompilieren willst anstatt ein Paket zu verwenden: Lies weiter...&lt;br /&gt;
&lt;br /&gt;
==Info: Welche aMule Version braucht welches wx?==&lt;br /&gt;
* Debian Etch liefert aMule 2.1.3 und wxwidgets 2.6.3&lt;br /&gt;
&lt;br /&gt;
* aMule 2.1 braucht wxwidgets 2.6. Neuere Versionen von wxwidgets werden nicht unterst&amp;amp;uuml;tzt.&lt;br /&gt;
* aMule 2.2 braucht wxwidgets 2.8. &amp;amp;Auml;ltere Versionen von wxwidgets werden nicht unterst&amp;amp;uuml;tzt.&lt;br /&gt;
&lt;br /&gt;
==Welche Entwicklerpakete ben&amp;amp;ouml;tige ich zum kompilieren?==&lt;br /&gt;
&lt;br /&gt;
Zum kompilieren von [[aMule CVS-de|aMule CVS]] und [[aMule-de|aMule 2.2.0]] m&amp;amp;uuml;ssen folgende Pakete installiert sein:&lt;br /&gt;
&lt;br /&gt;
* libglib2.0-dev&lt;br /&gt;
* libgtk2.0-dev&lt;br /&gt;
* zlib1g-dev&lt;br /&gt;
* libwxgtk2.8-dev (Wenn du wx von Hand kompilieren willst, brauchst du das nicht. Dieses Paket gibt es f&amp;amp;uuml;r Debian nur aus Vollstrecker`s Repository)&lt;br /&gt;
* libgd2-xpm-dev&lt;br /&gt;
* bison&lt;br /&gt;
* flex&lt;br /&gt;
* libreadline5-dev&lt;br /&gt;
* libgeoip-dev&lt;br /&gt;
* libupnp-dev&lt;br /&gt;
&lt;br /&gt;
Wenn du die externe Kryptobibliothek verwenden willst brauchst du zus&amp;amp;auml;tzlich:&lt;br /&gt;
&lt;br /&gt;
* libcrypto++-dev&lt;br /&gt;
&lt;br /&gt;
==Vorbereitung: wxwidgets compilieren und installieren==&lt;br /&gt;
Dieses vorgehen ist f&amp;amp;uuml;r alle Debian Ver&amp;amp;ouml;ffentlichungen gleich.&lt;br /&gt;
&lt;br /&gt;
Um aMule kompilieren zu k&amp;amp;uuml;nnen muss eine aktuelle Version von [[wxWidgets-de|wxWidgets]] installiert sein. Um das zu erreichen:&lt;br /&gt;
Deinstalliere alle fr&amp;amp;uuml;her erstellten Versionen von wx (vergleiche [[How to uninstall wxWidgets-de|Wie deinstalliere ich wxWidgets]]&lt;br /&gt;
und [[Check if wx is installed twice-de|Pr&amp;amp;uuml;fen ob wx doppelt installiert ist]])&lt;br /&gt;
Folgende Pakete m&amp;amp;uuml;ssen installiert sein:&lt;br /&gt;
&lt;br /&gt;
* flex&lt;br /&gt;
* bison&lt;br /&gt;
* gettext&lt;br /&gt;
* libgtk2.0-dev&lt;br /&gt;
* python-dev (&amp;gt;= 2.4.3)&lt;br /&gt;
* python-dbg&lt;br /&gt;
* lib1g-dev&lt;br /&gt;
* libjpeg62-dev&lt;br /&gt;
* libpng12-dev&lt;br /&gt;
* libtiff4-dev&lt;br /&gt;
* libgl1-mesa-dev '''oder''' libgl-dev&lt;br /&gt;
* libglu1-mesa-dev '''oder''' libglu-dev&lt;br /&gt;
* libesd0-dev&lt;br /&gt;
* libgnomeprintui2.2-dev&lt;br /&gt;
* libgconf2-dev&lt;br /&gt;
* libgstreamer0.10-dev&lt;br /&gt;
* libgstreamer-plugins-base0.10-dev&lt;br /&gt;
* python-central&lt;br /&gt;
* bc&lt;br /&gt;
&lt;br /&gt;
Um ein aktuelles wxwidges zu installieren, können folgende Zeilen zur /etc/apt/sources.list hinzugefügt werden:&lt;br /&gt;
&lt;br /&gt;
deb http://apt.wxwidgets.org/ etch-wx main&lt;br /&gt;
&lt;br /&gt;
deb-src http://apt.wxwidgets.org/ etch-wx main&lt;br /&gt;
&lt;br /&gt;
Dann sollten noch folgende Zeilen ausgeführt werden:&lt;br /&gt;
# $curl http://apt.wxwidgets.org/key.asc | sudo apt-key add -&lt;br /&gt;
# $sudo apt-get update&lt;br /&gt;
# $sudo apt-get install libwxbase2.8-dev&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://wiki.wxpython.org/InstallingOnUbuntuOrDebian)&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch aus den Quellen kompiliert werden:&lt;br /&gt;
&lt;br /&gt;
# Lade dazu das aktuelle wxwidgets wxGTK Quelltextarchiv von &amp;lt;tt&amp;gt;http://www.wxwidgets.org/downloads/&amp;lt;/tt&amp;gt; herunter&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ tar xvzf wxgtk-''Version''.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ cd wxGTK-''Version''&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ ./configure --prefix=/usr --with-gtk --enable-unicode --disable-compat24 --enable-optimise&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ make&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;# make install&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;# ldconfig&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ = als normaler Nutzer ausgef&amp;amp;uuml;hrt&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; = als root ausgef&amp;amp;uuml;hrt&lt;br /&gt;
&lt;br /&gt;
==aMule kompilieren und installieren==&lt;br /&gt;
Jetzt da du ein aktuelles wxGTK hast, mach weiter mit aMule:&lt;br /&gt;
# Installiere alle ben&amp;amp;ouml;tigten Paket die unter '''&amp;quot;Welche Entwicklerpakete ben&amp;amp;ouml;tige ich zum kompilieren?&amp;quot;'''&lt;br /&gt;
# Lade das aMule Quelltextarchiv von &amp;lt;tt&amp;gt;http://www.amule.org&amp;lt;/tt&amp;gt; herunter (Beachte: Zum kompilieren von aMule 2.1.3 ben&amp;amp;ouml;tigst du noch [http://cvs.pld-linux.org/cgi-bin/cvsweb/SOURCES/aMule-wx.patch?rev=1.2 DIESEN] Patch.&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ tar xvjf aMule-''Version''.tar.bz2&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ cd aMule-''Version''&amp;lt;/tt&amp;gt;&lt;br /&gt;
# F&amp;amp;uuml; eine &amp;amp;Uuml;bersicht welche Funktionen die (de)aktivieren kannst: &amp;lt;tt&amp;gt;$ ./configure --help&amp;lt;/tt&amp;gt;&lt;br /&gt;
# Im einfachsten Fall f&amp;amp;uuml;hre &amp;lt;tt&amp;gt;$ ./configure --disable-debug --enable-optimize&amp;lt;/tt&amp;gt; aus&lt;br /&gt;
# &amp;lt;tt&amp;gt;$ make&amp;lt;/tt&amp;gt;&lt;br /&gt;
# &amp;lt;tt&amp;gt;# make install&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$ = als normaler Nutzer ausgef&amp;amp;uuml;hrt&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; = als root ausgef&amp;amp;uuml;hrt&lt;br /&gt;
&lt;br /&gt;
Das wars! Jetzt starte aMule mit dem Befehl &amp;quot;amule&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Eigene Debianpakete bauen ==&lt;br /&gt;
&lt;br /&gt;
Zuerst brauchst du das Quelltextarchiv. Beachte; Nur aMule-CVS und Ver&amp;amp;ouml;ffentlichen von aMule 2.2.0 oder neuer k&amp;amp;ouml;nnen direkt zum bauen von Paketen verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Zuerst musst du alle n&amp;amp;ouml;tigen Werkzeuge installieren:&lt;br /&gt;
&lt;br /&gt;
* build-essential&lt;br /&gt;
* debhelper&lt;br /&gt;
* libglib2.0-dev&lt;br /&gt;
* libgtk2.0-dev&lt;br /&gt;
* zlib1g-dev&lt;br /&gt;
* libwxgtk2.8-dev&lt;br /&gt;
* libgd2-xpm-dev&lt;br /&gt;
* bison&lt;br /&gt;
* flex&lt;br /&gt;
* libcrypto++-dev&lt;br /&gt;
* libreadline5-dev&lt;br /&gt;
* libgeoip-dev&lt;br /&gt;
* libupnp-dev&lt;br /&gt;
&lt;br /&gt;
'''Alle Befehle m&amp;amp;uuml;ssen im obersten Verzeichnis des entpackten Quelltextarchives ausgef&amp;amp;uuml;hrt werden (normalerweise .../amule-cvs oder .../aMule-&amp;lt;Version&amp;gt;)'''&lt;br /&gt;
&lt;br /&gt;
Erstelle einen neuen Changelogeintrag (die Version im Changelog gibt die Version deiner Pakete vor) mit: &lt;br /&gt;
 dch -v `date +%Y%m%d` New Upstream CVS Release&lt;br /&gt;
Nun starte den Paketbau mit:&lt;br /&gt;
 dpkg-buildpackage -uc -b -rfakeroot&lt;br /&gt;
Nun wurden alle Pakete im &amp;amp;uuml;bergeordneten Verzeichnis erstellt.&lt;br /&gt;
Zum installieren verwende:&lt;br /&gt;
 dpkg -i &amp;lt;Paket&amp;gt;&lt;br /&gt;
oder erstelle dein eigenes Repository.&lt;br /&gt;
&lt;br /&gt;
Du kannst auch nur einzelne Pakete bauen. Informationen hierzu gibt:&lt;br /&gt;
 debian/rules help&lt;br /&gt;
&lt;br /&gt;
== Geschafft... ==&lt;br /&gt;
&lt;br /&gt;
Das wars! Dein selbstkompiliertes [[aMule-de|aMule]] ist auf deinem System installiert und wartet darauf benutzt zu werden.&lt;br /&gt;
&lt;br /&gt;
Um [[aMule-de|aMule]] zu starten, tippe einfach &amp;lt;code&amp;gt;&amp;quot;amule&amp;quot;&amp;lt;/code&amp;gt;. Um zu sehen ob alles funktioniert hat tippe &amp;lt;code&amp;gt;&amp;quot;amule -v&amp;quot;&amp;lt;/code&amp;gt; und vergleiche die Ausgabe mit der Version die du installiert/kompiliert hast.&lt;br /&gt;
&lt;br /&gt;
Wenn diese Anleitung dir nicht geholfen hat, hast du ein seltenes Problem auf deinem System ;-) Suche auf  http://www.amule.org ([http://www.amule.org/amule aMule Forum] auf http://forum.amule.org ) oder besuche und in #amule auf irc.freenode.net und (nicht verzweifeln) wir werden unser besten tun dir zu helfen.&lt;br /&gt;
&lt;br /&gt;
== Abschlu&amp;amp;szlig;bemerkung ==&lt;br /&gt;
&lt;br /&gt;
Wenn du einer der seltenen F&amp;amp;auml;lle bist die [[aMule-de|aMule]] statisch kompilieren wollen, musst du zus&amp;amp;auml;tzlich ''libtiff4-dev'' (mit ''apt-get install libtiff4-dev'') installieren. Allerdings, dies wird '''NICHT''' empfohlen und, im Ernst, wird nicht wirklich besser funktionieren oder &amp;amp;uuml;berhaupt funktionieren.&lt;/div&gt;</summary>
		<author><name>87.139.115.64</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO</id>
		<title>EC Protocol HOWTO</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO"/>
				<updated>2007-08-24T11:59:44Z</updated>
		
		<summary type="html">&lt;p&gt;87.139.115.64: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Work in progress, this site is under heavy construction.&lt;br /&gt;
&lt;br /&gt;
== Basic Protocol Structure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Protocol definition'''&lt;br /&gt;
&lt;br /&gt;
Short description:&lt;br /&gt;
&lt;br /&gt;
EC protocol consist of two layers: a low-level transmission layer, and&lt;br /&gt;
a high level application layer.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The transmission layer consist of an two int32 values.&amp;lt;br&amp;gt;&lt;br /&gt;
A uint32 flag specify the format of the message e.g. if the packet uses utf8 encoded numbers or is compressed by zlib.&amp;lt;br&amp;gt;&lt;br /&gt;
The next uint32 determines the size of the application layer data.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The application layer consists of an op-code and a tag counter,followed by a tag structure.&lt;br /&gt;
&lt;br /&gt;
== Transmission layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The transmission layer is completely independent of the application layer,&amp;lt;br&amp;gt;&lt;br /&gt;
and holds only transport-related information.&lt;br /&gt;
&lt;br /&gt;
The transmission layer actually consists of an uint32 number, referenced below as flags,&amp;lt;br&amp;gt;&lt;br /&gt;
which describes flags for the current transmission session (send/receive operation).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This four-byte value is the only one in the whole protocol, that is transmitted LSB first,&amp;lt;br&amp;gt;&lt;br /&gt;
and zero bytes omitted (therefore an empty transmission flags value is sent as 0x20, not 0x20 0x0 0x0 0x0).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit description:&lt;br /&gt;
&lt;br /&gt;
:bit 0: Compression flag. When set, zlib compression is applied to the application layer's data.&lt;br /&gt;
&lt;br /&gt;
:bit 1: Compressed numbers. When set (presumably on small packets that doesn't worth compressing by zlib), all the numbers used&lt;br /&gt;
::in the protocol are encoded as a wide char converted to utf-8 to let some zero bytes not to be sent over the network&lt;br /&gt;
&lt;br /&gt;
:bit 2: Has ID. When this flag is set, an uint32 number follows the flags, which is the ID of this packet. The response to this&lt;br /&gt;
::packet also has to have this ID. The only requirement for the ID value is that they should be unique in one session (or at&lt;br /&gt;
::least do not repeat for a reasonably long time.)&lt;br /&gt;
&lt;br /&gt;
:bit 3: Reserved for later use.&lt;br /&gt;
&lt;br /&gt;
:bit 4: Accepts value present. A client sets this flag and sends  another uint32 value (encoded as above, LSB first, zero&lt;br /&gt;
::bytes omitted), which is a fully constructed flags value, bits set meaning that the client can accept those extensions.&lt;br /&gt;
::No extensions can be used, until the other side sends an accept value for them. It is not defined when this value&lt;br /&gt;
::should be send, best is on first transfer, but can be sent any time later, even changing the previously announced flags.&lt;br /&gt;
&lt;br /&gt;
:bit 5: Always set to 1, to distinguish from older (pre-rc8) clients.&lt;br /&gt;
&lt;br /&gt;
:bit 6: Always set to 0, to distinguish from older (pre-rc8) clients.&lt;br /&gt;
&lt;br /&gt;
:bits 7,15,23: Extension flag, means that the next byte of the flags is present.&lt;br /&gt;
&lt;br /&gt;
:bits 8-14,16-22,24-32: Reserved for later use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Transmission layer example:&lt;br /&gt;
:0x30 0x23 &amp;lt;appdata&amp;gt; - Client uses no extensions on this packet, and indicates that it can accept zlib compression and compressed numbers.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
:Note 1: On the &amp;quot;accepts&amp;quot; value, the predefined flags must be set to their predefined values, because this can be used as a sort of a sanity check.&lt;br /&gt;
&lt;br /&gt;
:Note 2: Bits marked as &amp;quot;reserved&amp;quot; should always be set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Application layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data transmission is done in packets. A packet can be considered as&amp;lt;br&amp;gt;&lt;br /&gt;
a special tag - with no data, no tagLen field, and with the tagCount&amp;lt;br&amp;gt;&lt;br /&gt;
field always present. All numbers part of the application layer are&amp;lt;br&amp;gt;&lt;br /&gt;
transmitted in network byte order, i.e. MSB first.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:A packet contains the following:&lt;br /&gt;
::[ec_opcode_t] OPCODE&lt;br /&gt;
::[uint16] TAGCOUNT&lt;br /&gt;
::&amp;lt;tags&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In detail: The opcode means what to to or what the data fields contain.&amp;lt;br&amp;gt;&lt;br /&gt;
Its type is set as ec_opcode_t, which currently is an uint8.&amp;lt;br&amp;gt;&lt;br /&gt;
TagCount is the number of first level tags this packet has. Then are the&amp;lt;br&amp;gt;&lt;br /&gt;
tags themselves.&lt;br /&gt;
&lt;br /&gt;
:A tag consist of:&lt;br /&gt;
::[ec_tagname_t] TAGNAME&lt;br /&gt;
::[ec_tagtype_t] TAGTYPE&lt;br /&gt;
::[ec_taglen_t] TAGLEN&lt;br /&gt;
::&amp;lt;[uint16] TAGCOUNT&amp;gt;?&lt;br /&gt;
:::&amp;lt;sub-tags&amp;gt;&lt;br /&gt;
:::&amp;lt;tag data&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ec_tagname_t is defined as an uint16, ec_taglen_t as an uint32 value&amp;lt;br&amp;gt;&lt;br /&gt;
at the moment. ec_tagtype_t is an uint8. &amp;lt;br&amp;gt;&lt;br /&gt;
TagName tells what it contains (see ECcodes.h for details).&amp;lt;br&amp;gt;&lt;br /&gt;
TagType sends the type of this tag (see ECPacket.h for types)&amp;lt;br&amp;gt;&lt;br /&gt;
TagLen contains the whole length of the tag, including the lengths of the&amp;lt;br&amp;gt;&lt;br /&gt;
possible sub-tags, but without the size of the tagName, tagType and &amp;lt;br&amp;gt;&lt;br /&gt;
tagLen fields. Actually the lowest bit of the tagname doesn't belong to the &amp;lt;br&amp;gt;&lt;br /&gt;
tagName itself, so it has to be cleared before checking the name.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags may contain sub-tags to store the information, and a tagCount field&amp;lt;br&amp;gt;&lt;br /&gt;
is present only for these tags. The presence of the tagCount field can&amp;lt;br&amp;gt;&lt;br /&gt;
be tested by checking the lowest bit of the tagName field, when it is&amp;lt;br&amp;gt;&lt;br /&gt;
set, tagCount field present.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a tag contains sub-tags, the sub-tags are sent before the tag's own&amp;lt;br&amp;gt;&lt;br /&gt;
data. So, tag data length can be calculated by substracting all sub-tags'&amp;lt;br&amp;gt;&lt;br /&gt;
length from the tagLen value, and the remainder is the data length, if&amp;lt;br&amp;gt;&lt;br /&gt;
non-zero.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Future Changes ==&lt;br /&gt;
&lt;br /&gt;
Future changes of the EC protocol (probably after 2.2.0) may be:&lt;br /&gt;
*no more \0 for string termination&lt;br /&gt;
*last bit of flag byte indicates a following flag byte, and so on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
You get definitions of OP- and Tag-Codes at this locations in the source:&lt;br /&gt;
*./src/lib/ec/[c#|cpp|java]/ECCodes.[cs|h|java]&lt;br /&gt;
* ./docs/EC_Protocol.txt (outdated, but much useful information)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
*aMule sends EC packets in two flavours (albeit it would understand other flag options as well), depending on the packet size.&lt;br /&gt;
**zlib compressed application data that doesn't use utf8 compressed numbers when decompressed.&lt;br /&gt;
**utf8 compressed numbers in the application data&lt;br /&gt;
*The tag size doesn't take into account the size of utf8 compressed numbers in subtags. When parsing, you may want to drop the length completely and get it by the size of the subtags + size of the value field (determined by the value type flag).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a packet in hex values that is send to aMule&lt;br /&gt;
for authorization:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00 00 00 22 //flag&lt;br /&gt;
00 00 00 36 //packet body length 54&lt;br /&gt;
02      //EC_OP_AUTH_REQ&lt;br /&gt;
04      //tag count&lt;br /&gt;
&lt;br /&gt;
c8 80          //EC_TAG_CLIENT_NAME&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
0d             //value length 13&lt;br /&gt;
61 6d 75 6c 65 2d 72 65 6d 6f 74 65 00 //&amp;quot;amule-remote\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
c8 82          //EC_TAG_CLIENT_VERSION&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
07             //value length 7&lt;br /&gt;
30 78 30 30 30 31 00 // &amp;quot;0x0001\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
04             //EC_TAG_PROTOCOL_VERSION&lt;br /&gt;
03             //EC_TAGTYPE_UINT16&lt;br /&gt;
02             //value length 2&lt;br /&gt;
02 00          //value is defined by EC_CURRENT_PROTOCOL_VERSION&lt;br /&gt;
&lt;br /&gt;
02              //EC_TAG_PASSWD_HASH&lt;br /&gt;
09             //EC_TAGTYPE_HASH16&lt;br /&gt;
10             //value length 16&lt;br /&gt;
47 bc e5 c7 4f 58 9f 48 //md5 hashed password string&lt;br /&gt;
67 db d5 7e 9c a9 f8 08 //password &amp;quot;aaa&amp;quot; was used&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c8 80 is in fact an utf8 encoded number. It decodes to 02 00 (or 512 in decimal).&amp;lt;br&amp;gt;&lt;br /&gt;
As every tag code, it is shifted one bit to left to&lt;br /&gt;
fit in a bit that indicates the presence of subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
The lowest bit of 02 00 is 0; so this tag doesn't have subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
When we shift the value to the right one bit (or divide by 2),&lt;br /&gt;
we get 01 00.&amp;lt;br&amp;gt;&lt;br /&gt;
That's the value that can be found in ECCodes.h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a simple search request that is send without utf8 compressed numbers.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00 00 00 20 //plain format, no compression&lt;br /&gt;
00 00 00 21 //message length: 33&lt;br /&gt;
 &lt;br /&gt;
26 00	//EC_OP_SEARCH_START&lt;br /&gt;
01	//tag count&lt;br /&gt;
	0e 03	//EC_TAG_SEARCH_TYPE&lt;br /&gt;
	02	//EC_TAGTYPE_UINT8&lt;br /&gt;
	00 00 00 17	//tag length: 23&lt;br /&gt;
	00 02	//subtag count&lt;br /&gt;
&lt;br /&gt;
		0e 04		//EC_TAG_SEARCH_NAME&lt;br /&gt;
		06		//EC_TAGTYPE_STRING&lt;br /&gt;
		00 00 00 05	//tag length&lt;br /&gt;
		74 65 73 74 00 	//&amp;quot;test\0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
		0e 0a		//EC_TAG_SEARCH_FILE_TYPE&lt;br /&gt;
		06		//EC_TAGTYPE_STRING&lt;br /&gt;
		00 00 00 01	//tag length&lt;br /&gt;
		00		//&amp;quot;\0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
	00			//uint8 search type (local)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>87.139.115.64</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO</id>
		<title>EC Protocol HOWTO</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO"/>
				<updated>2007-08-21T17:18:24Z</updated>
		
		<summary type="html">&lt;p&gt;87.139.115.64: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Work in progress, this site is under heavy construction.&lt;br /&gt;
&lt;br /&gt;
== Basic Protocol Structure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Protocol definition'''&lt;br /&gt;
&lt;br /&gt;
Short description:&lt;br /&gt;
&lt;br /&gt;
EC protocol consist of two layers: a low-level transmission layer, and&lt;br /&gt;
a high level application layer.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The transmission layer consist of an two int32 values.&amp;lt;br&amp;gt;&lt;br /&gt;
A uint32 flag specify the format of the message e.g. if the packet uses utf8 encoded numbers or is compressed by zlib.&amp;lt;br&amp;gt;&lt;br /&gt;
The next uint32 determines the size of the application layer data.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The application layer consists of an op-code and a tag counter,followed by a tag structure.&lt;br /&gt;
&lt;br /&gt;
== Transmission layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The transmission layer is completely independent of the application layer,&amp;lt;br&amp;gt;&lt;br /&gt;
and holds only transport-related information.&lt;br /&gt;
&lt;br /&gt;
The transmission layer actually consists of an uint32 number, referenced below as flags,&amp;lt;br&amp;gt;&lt;br /&gt;
which describes flags for the current transmission session (send/receive operation).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This four-byte value is the only one in the whole protocol, that is transmitted LSB first,&amp;lt;br&amp;gt;&lt;br /&gt;
and zero bytes omitted (therefore an empty transmission flags value is sent as 0x20, not 0x20 0x0 0x0 0x0).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit description:&lt;br /&gt;
&lt;br /&gt;
:bit 0: Compression flag. When set, zlib compression is applied to the application layer's data.&lt;br /&gt;
&lt;br /&gt;
:bit 1: Compressed numbers. When set (presumably on small packets that doesn't worth compressing by zlib), all the numbers used&lt;br /&gt;
::in the protocol are encoded as a wide char converted to utf-8 to let some zero bytes not to be sent over the network&lt;br /&gt;
&lt;br /&gt;
:bit 2: Has ID. When this flag is set, an uint32 number follows the flags, which is the ID of this packet. The response to this&lt;br /&gt;
::packet also has to have this ID. The only requirement for the ID value is that they should be unique in one session (or at&lt;br /&gt;
::least do not repeat for a reasonably long time.)&lt;br /&gt;
&lt;br /&gt;
:bit 3: Reserved for later use.&lt;br /&gt;
&lt;br /&gt;
:bit 4: Accepts value present. A client sets this flag and sends  another uint32 value (encoded as above, LSB first, zero&lt;br /&gt;
::bytes omitted), which is a fully constructed flags value, bits set meaning that the client can accept those extensions.&lt;br /&gt;
::No extensions can be used, until the other side sends an accept value for them. It is not defined when this value&lt;br /&gt;
::should be send, best is on first transfer, but can be sent any time later, even changing the previously announced flags.&lt;br /&gt;
&lt;br /&gt;
:bit 5: Always set to 1, to distinguish from older (pre-rc8) clients.&lt;br /&gt;
&lt;br /&gt;
:bit 6: Always set to 0, to distinguish from older (pre-rc8) clients.&lt;br /&gt;
&lt;br /&gt;
:bits 7,15,23: Extension flag, means that the next byte of the flags is present.&lt;br /&gt;
&lt;br /&gt;
:bits 8-14,16-22,24-32: Reserved for later use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Transmission layer example:&lt;br /&gt;
:0x30 0x23 &amp;lt;appdata&amp;gt; - Client uses no extensions on this packet, and indicates that it can accept zlib compression and compressed numbers.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
:Note 1: On the &amp;quot;accepts&amp;quot; value, the predefined flags must be set to their predefined values, because this can be used as a sort of a sanity check.&lt;br /&gt;
&lt;br /&gt;
:Note 2: Bits marked as &amp;quot;reserved&amp;quot; should always be set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Application layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data transmission is done in packets. A packet can be considered as&amp;lt;br&amp;gt;&lt;br /&gt;
a special tag - with no data, no tagLen field, and with the tagCount&amp;lt;br&amp;gt;&lt;br /&gt;
field always present. All numbers part of the application layer are&amp;lt;br&amp;gt;&lt;br /&gt;
transmitted in network byte order, i.e. MSB first.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:A packet contains the following:&lt;br /&gt;
::[ec_opcode_t] OPCODE&lt;br /&gt;
::[uint16] TAGCOUNT&lt;br /&gt;
::&amp;lt;tags&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In detail: The opcode means what to to or what the data fields contain.&amp;lt;br&amp;gt;&lt;br /&gt;
Its type is set as ec_opcode_t, which currently is an uint8.&amp;lt;br&amp;gt;&lt;br /&gt;
TagCount is the number of first level tags this packet has. Then are the&amp;lt;br&amp;gt;&lt;br /&gt;
tags themselves.&lt;br /&gt;
&lt;br /&gt;
:A tag consist of:&lt;br /&gt;
::[ec_tagname_t] TAGNAME&lt;br /&gt;
::[ec_tagtype_t] TAGTYPE&lt;br /&gt;
::[ec_taglen_t] TAGLEN&lt;br /&gt;
::&amp;lt;[uint16] TAGCOUNT&amp;gt;?&lt;br /&gt;
:::&amp;lt;sub-tags&amp;gt;&lt;br /&gt;
:::&amp;lt;tag data&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ec_tagname_t is defined as an uint16, ec_taglen_t as an uint32 value&amp;lt;br&amp;gt;&lt;br /&gt;
at the moment. ec_tagtype_t is an uint8. &amp;lt;br&amp;gt;&lt;br /&gt;
TagName tells what it contains (see ECcodes.h for details).&amp;lt;br&amp;gt;&lt;br /&gt;
TagType sends the type of this tag (see ECPacket.h for types)&amp;lt;br&amp;gt;&lt;br /&gt;
TagLen contains the whole length of the tag, including the lengths of the&amp;lt;br&amp;gt;&lt;br /&gt;
possible sub-tags, but without the size of the tagName, tagType and &amp;lt;br&amp;gt;&lt;br /&gt;
tagLen fields. Actually the lowest bit of the tagname doesn't belong to the &amp;lt;br&amp;gt;&lt;br /&gt;
tagName itself, so it has to be cleared before checking the name.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags may contain sub-tags to store the information, and a tagCount field&amp;lt;br&amp;gt;&lt;br /&gt;
is present only for these tags. The presence of the tagCount field can&amp;lt;br&amp;gt;&lt;br /&gt;
be tested by checking the lowest bit of the tagName field, when it is&amp;lt;br&amp;gt;&lt;br /&gt;
set, tagCount field present.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a tag contains sub-tags, the sub-tags are sent before the tag's own&amp;lt;br&amp;gt;&lt;br /&gt;
data. So, tag data length can be calculated by substracting all sub-tags'&amp;lt;br&amp;gt;&lt;br /&gt;
length from the tagLen value, and the remainder is the data length, if&amp;lt;br&amp;gt;&lt;br /&gt;
non-zero.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Future Changes ==&lt;br /&gt;
&lt;br /&gt;
Future changes of the EC protocol (probably after 2.2.0) may be:&lt;br /&gt;
*no more \0 for string termination&lt;br /&gt;
*last bit of flag byte indicates a following flag byte, and so on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
*aMule sends EC packets in two flavours (albeit it would understand other flag options as well), depending on the packet size.&lt;br /&gt;
**zlib compressed application data that doesn't use utf8 compressed numbers when decompressed.&lt;br /&gt;
**utf8 compressed numbers in the application data&lt;br /&gt;
*The tag size doesn't take into account the size of utf8 compressed numbers in subtags. When parsing, you may want to drop the length completely and get it by the size of the subtags + size of the value field (determined by the value type flag).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a packet in hex values that is send to aMule&lt;br /&gt;
for authorization:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00 00 00 22 //flag&lt;br /&gt;
00 00 00 36 //packet body length 54&lt;br /&gt;
02      //EC_OP_AUTH_REQ&lt;br /&gt;
04      //tag count&lt;br /&gt;
&lt;br /&gt;
c8 80          //EC_TAG_CLIENT_NAME&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
0d             //value length 13&lt;br /&gt;
61 6d 75 6c 65 2d 72 65 6d 6f 74 65 00 //&amp;quot;amule-remote\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
c8 82          //EC_TAG_CLIENT_VERSION&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
07             //value length 7&lt;br /&gt;
30 78 30 30 30 31 00 // &amp;quot;0x0001\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
04             //EC_TAG_PROTOCOL_VERSION&lt;br /&gt;
03             //EC_TAGTYPE_UINT16&lt;br /&gt;
02             //value length 2&lt;br /&gt;
02 00          //value is defined by EC_CURRENT_PROTOCOL_VERSION&lt;br /&gt;
&lt;br /&gt;
02              //EC_TAG_PASSWD_HASH&lt;br /&gt;
09             //EC_TAGTYPE_HASH16&lt;br /&gt;
10             //value length 16&lt;br /&gt;
47 bc e5 c7 4f 58 9f 48 //md5 hashed password string&lt;br /&gt;
67 db d5 7e 9c a9 f8 08 //password &amp;quot;aaa&amp;quot; was used&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c8 80 is in fact an utf8 encoded number. It decodes to 02 00 (or 512 in decimal).&amp;lt;br&amp;gt;&lt;br /&gt;
As every tag code, it is shifted one bit to left to&lt;br /&gt;
fit in a bit that indicates the presence of subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
The lowest bit of 02 00 is 0; so this tag doesn't have subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
When we shift the value to the right one bit (or divide by 2),&lt;br /&gt;
we get 01 00.&amp;lt;br&amp;gt;&lt;br /&gt;
That's the value that can be found in ECCodes.h.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a simple search request that is send without utf8 compressed numbers.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00 00 00 20 //plain format, no compression&lt;br /&gt;
00 00 00 21 //message length: 33&lt;br /&gt;
 &lt;br /&gt;
26 00	//EC_OP_SEARCH_START&lt;br /&gt;
01	//tag count&lt;br /&gt;
	0e 03	//EC_TAG_SEARCH_TYPE&lt;br /&gt;
	02	//EC_TAGTYPE_UINT8&lt;br /&gt;
	00 00 00 17	//tag length: 23&lt;br /&gt;
	00 02	//subtag count&lt;br /&gt;
&lt;br /&gt;
		0e 04		//EC_TAG_SEARCH_NAME&lt;br /&gt;
		06		//EC_TAGTYPE_STRING&lt;br /&gt;
		00 00 00 05	//tag length&lt;br /&gt;
		74 65 73 74 00 	//&amp;quot;test\0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
		0e 0a		//EC_TAG_SEARCH_FILE_TYPE&lt;br /&gt;
		06		//EC_TAGTYPE_STRING&lt;br /&gt;
		00 00 00 01	//tag length&lt;br /&gt;
		00		//&amp;quot;\0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
	00			//uint8 search type (local)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>87.139.115.64</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO</id>
		<title>EC Protocol HOWTO</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO"/>
				<updated>2007-08-21T16:51:00Z</updated>
		
		<summary type="html">&lt;p&gt;87.139.115.64: extend short description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Work in progress, this site is under heavy construction.&lt;br /&gt;
&lt;br /&gt;
== Basic Protocol Structure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Protocol definition'''&lt;br /&gt;
&lt;br /&gt;
Short description:&lt;br /&gt;
&lt;br /&gt;
EC protocol consist of two layers: a low-level transmission layer, and&lt;br /&gt;
a high level application layer.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The transmission layer consist of an two int32 values.&amp;lt;br&amp;gt;&lt;br /&gt;
A uint32 flag specify the format of the message e.g. if the packet uses utf8 encoded numbers or is compressed by zlib.&amp;lt;br&amp;gt;&lt;br /&gt;
The next uint32 determines the size of the application layer data.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The application layer consists of an op-code and a tag counter,followed by a tag structure.&lt;br /&gt;
&lt;br /&gt;
== Transmission layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The transmission layer is completely independent of the application layer,&amp;lt;br&amp;gt;&lt;br /&gt;
and holds only transport-related information.&lt;br /&gt;
&lt;br /&gt;
The transmission layer actually consists of an uint32 number, referenced below as flags,&amp;lt;br&amp;gt;&lt;br /&gt;
which describes flags for the current transmission session (send/receive operation).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This four-byte value is the only one in the whole protocol, that is transmitted LSB first,&amp;lt;br&amp;gt;&lt;br /&gt;
and zero bytes omitted (therefore an empty transmission flags value is sent as 0x20, not 0x20 0x0 0x0 0x0).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit description:&lt;br /&gt;
&lt;br /&gt;
:bit 0: Compression flag. When set, zlib compression is applied to the application layer's data.&lt;br /&gt;
&lt;br /&gt;
:bit 1: Compressed numbers. When set (presumably on small packets that doesn't worth compressing by zlib), all the numbers used&lt;br /&gt;
::in the protocol are encoded as a wide char converted to utf-8 to let some zero bytes not to be sent over the network&lt;br /&gt;
&lt;br /&gt;
:bit 2: Has ID. When this flag is set, an uint32 number follows the flags, which is the ID of this packet. The response to this&lt;br /&gt;
::packet also has to have this ID. The only requirement for the ID value is that they should be unique in one session (or at&lt;br /&gt;
::least do not repeat for a reasonably long time.)&lt;br /&gt;
&lt;br /&gt;
:bit 3: Reserved for later use.&lt;br /&gt;
&lt;br /&gt;
:bit 4: Accepts value present. A client sets this flag and sends  another uint32 value (encoded as above, LSB first, zero&lt;br /&gt;
::bytes omitted), which is a fully constructed flags value, bits set meaning that the client can accept those extensions.&lt;br /&gt;
::No extensions can be used, until the other side sends an accept value for them. It is not defined when this value&lt;br /&gt;
::should be send, best is on first transfer, but can be sent any time later, even changing the previously announced flags.&lt;br /&gt;
&lt;br /&gt;
:bit 5: Always set to 1, to distinguish from older (pre-rc8) clients.&lt;br /&gt;
&lt;br /&gt;
:bit 6: Always set to 0, to distinguish from older (pre-rc8) clients.&lt;br /&gt;
&lt;br /&gt;
:bits 7,15,23: Extension flag, means that the next byte of the flags is present.&lt;br /&gt;
&lt;br /&gt;
:bits 8-14,16-22,24-32: Reserved for later use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Transmission layer example:&lt;br /&gt;
:0x30 0x23 &amp;lt;appdata&amp;gt; - Client uses no extensions on this packet, and indicates that it can accept zlib compression and compressed numbers.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
:Note 1: On the &amp;quot;accepts&amp;quot; value, the predefined flags must be set to their predefined values, because this can be used as a sort of a sanity check.&lt;br /&gt;
&lt;br /&gt;
:Note 2: Bits marked as &amp;quot;reserved&amp;quot; should always be set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Application layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data transmission is done in packets. A packet can be considered as&amp;lt;br&amp;gt;&lt;br /&gt;
a special tag - with no data, no tagLen field, and with the tagCount&amp;lt;br&amp;gt;&lt;br /&gt;
field always present. All numbers part of the application layer are&amp;lt;br&amp;gt;&lt;br /&gt;
transmitted in network byte order, i.e. MSB first.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:A packet contains the following:&lt;br /&gt;
::[ec_opcode_t] OPCODE&lt;br /&gt;
::[uint16] TAGCOUNT&lt;br /&gt;
::&amp;lt;tags&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In detail: The opcode means what to to or what the data fields contain.&amp;lt;br&amp;gt;&lt;br /&gt;
Its type is set as ec_opcode_t, which currently is an uint8.&amp;lt;br&amp;gt;&lt;br /&gt;
TagCount is the number of first level tags this packet has. Then are the&amp;lt;br&amp;gt;&lt;br /&gt;
tags themselves.&lt;br /&gt;
&lt;br /&gt;
:A tag consist of:&lt;br /&gt;
::[ec_tagname_t] TAGNAME&lt;br /&gt;
::[ec_tagtype_t] TAGTYPE&lt;br /&gt;
::[ec_taglen_t] TAGLEN&lt;br /&gt;
::&amp;lt;[uint16] TAGCOUNT&amp;gt;?&lt;br /&gt;
:::&amp;lt;sub-tags&amp;gt;&lt;br /&gt;
:::&amp;lt;tag data&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ec_tagname_t is defined as an uint16, ec_taglen_t as an uint32 value&amp;lt;br&amp;gt;&lt;br /&gt;
at the moment. ec_tagtype_t is an uint8. &amp;lt;br&amp;gt;&lt;br /&gt;
TagName tells what it contains (see ECcodes.h for details).&amp;lt;br&amp;gt;&lt;br /&gt;
TagType sends the type of this tag (see ECPacket.h for types)&amp;lt;br&amp;gt;&lt;br /&gt;
TagLen contains the whole length of the tag, including the lengths of the&amp;lt;br&amp;gt;&lt;br /&gt;
possible sub-tags, but without the size of the tagName, tagType and &amp;lt;br&amp;gt;&lt;br /&gt;
tagLen fields. Actually the lowest bit of the tagname doesn't belong to the &amp;lt;br&amp;gt;&lt;br /&gt;
tagName itself, so it has to be cleared before checking the name.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags may contain sub-tags to store the information, and a tagCount field&amp;lt;br&amp;gt;&lt;br /&gt;
is present only for these tags. The presence of the tagCount field can&amp;lt;br&amp;gt;&lt;br /&gt;
be tested by checking the lowest bit of the tagName field, when it is&amp;lt;br&amp;gt;&lt;br /&gt;
set, tagCount field present.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a tag contains sub-tags, the sub-tags are sent before the tag's own&amp;lt;br&amp;gt;&lt;br /&gt;
data. So, tag data length can be calculated by substracting all sub-tags'&amp;lt;br&amp;gt;&lt;br /&gt;
length from the tagLen value, and the remainder is the data length, if&amp;lt;br&amp;gt;&lt;br /&gt;
non-zero.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Future Changes'''&lt;br /&gt;
Future changes of the EC protocol (probably after 2.2.0) may be:&lt;br /&gt;
*no more \0 for string termination&lt;br /&gt;
*last bit of flag byte indicates a following flag byte, and so on&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
This is a packet in hex values that is send to aMule&lt;br /&gt;
for authorization:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00 00 00 22 //flag&lt;br /&gt;
00 00 00 36 //packet body length 54&lt;br /&gt;
02      //EC_OP_AUTH_REQ&lt;br /&gt;
04      //tag count&lt;br /&gt;
&lt;br /&gt;
c8 80          //EC_TAG_CLIENT_NAME&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
0d             //value length 13&lt;br /&gt;
61 6d 75 6c 65 2d 72 65 6d 6f 74 65 00 //&amp;quot;amule-remote\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
c8 82          //EC_TAG_CLIENT_VERSION&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
07             //value length 7&lt;br /&gt;
30 78 30 30 30 31 00 // &amp;quot;0x0001\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
04             //EC_TAG_PROTOCOL_VERSION&lt;br /&gt;
03             //EC_TAGTYPE_UINT16&lt;br /&gt;
02             //value length 2&lt;br /&gt;
02 00          //value is defined by EC_CURRENT_PROTOCOL_VERSION&lt;br /&gt;
&lt;br /&gt;
02              //EC_TAG_PASSWD_HASH&lt;br /&gt;
09             //EC_TAGTYPE_HASH16&lt;br /&gt;
10             //value length 16&lt;br /&gt;
47 bc e5 c7 4f 58 9f 48 //md5 hashed password string&lt;br /&gt;
67 db d5 7e 9c a9 f8 08 //password &amp;quot;aaa&amp;quot; was used&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c8 80 is in fact an utf8 encoded number. It decodes to 02 00 (or 512 in decimal).&amp;lt;br&amp;gt;&lt;br /&gt;
As every tag code, it is shifted one bit to left to&lt;br /&gt;
fit in a bit that indicates the presence of subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
The lowest bit of 02 00 is 0; so this tag doesn't have subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
When we shift the value to the right one bit (or divide by 2),&lt;br /&gt;
we get 01 00.&amp;lt;br&amp;gt;&lt;br /&gt;
That's the value that can be found in ECCodes.h.&lt;br /&gt;
&lt;br /&gt;
This is a search request that&lt;/div&gt;</summary>
		<author><name>87.139.115.64</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO</id>
		<title>EC Protocol HOWTO</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO"/>
				<updated>2007-08-21T16:41:45Z</updated>
		
		<summary type="html">&lt;p&gt;87.139.115.64: filled in some text from the docs/EC_Protocol.txt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Work in progress, this site is under heavy construction.&lt;br /&gt;
&lt;br /&gt;
== Basic Protocol Structure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Protocol definition'''&lt;br /&gt;
&lt;br /&gt;
Short description:&lt;br /&gt;
&lt;br /&gt;
:EC protocol consist of two layers: a low-level transmission layer, and&lt;br /&gt;
:a high level application layer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Transmission layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The transmission layer is completely independent of the application layer,&amp;lt;br&amp;gt;&lt;br /&gt;
and holds only transport-related information.&lt;br /&gt;
&lt;br /&gt;
The transmission layer actually consists of an uint32 number, referenced below as flags,&amp;lt;br&amp;gt;&lt;br /&gt;
which describes flags for the current transmission session (send/receive operation).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This four-byte value is the only one in the whole protocol, that is transmitted LSB first,&amp;lt;br&amp;gt;&lt;br /&gt;
and zero bytes omitted (therefore an empty transmission flags value is sent as 0x20, not 0x20 0x0 0x0 0x0).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bit description:&lt;br /&gt;
&lt;br /&gt;
:bit 0: Compression flag. When set, zlib compression is applied to the application layer's data.&lt;br /&gt;
&lt;br /&gt;
:bit 1: Compressed numbers. When set (presumably on small packets that doesn't worth compressing by zlib), all the numbers used&lt;br /&gt;
::in the protocol are encoded as a wide char converted to utf-8 to let some zero bytes not to be sent over the network&lt;br /&gt;
&lt;br /&gt;
:bit 2: Has ID. When this flag is set, an uint32 number follows the flags, which is the ID of this packet. The response to this&lt;br /&gt;
::packet also has to have this ID. The only requirement for the ID value is that they should be unique in one session (or at&lt;br /&gt;
::least do not repeat for a reasonably long time.)&lt;br /&gt;
&lt;br /&gt;
:bit 3: Reserved for later use.&lt;br /&gt;
&lt;br /&gt;
:bit 4: Accepts value present. A client sets this flag and sends  another uint32 value (encoded as above, LSB first, zero&lt;br /&gt;
::bytes omitted), which is a fully constructed flags value, bits set meaning that the client can accept those extensions.&lt;br /&gt;
::No extensions can be used, until the other side sends an accept value for them. It is not defined when this value&lt;br /&gt;
::should be send, best is on first transfer, but can be sent any time later, even changing the previously announced flags.&lt;br /&gt;
&lt;br /&gt;
:bit 5: Always set to 1, to distinguish from older (pre-rc8) clients.&lt;br /&gt;
&lt;br /&gt;
:bit 6: Always set to 0, to distinguish from older (pre-rc8) clients.&lt;br /&gt;
&lt;br /&gt;
:bits 7,15,23: Extension flag, means that the next byte of the flags is present.&lt;br /&gt;
&lt;br /&gt;
:bits 8-14,16-22,24-32: Reserved for later use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Transmission layer example:&lt;br /&gt;
:0x30 0x23 &amp;lt;appdata&amp;gt; - Client uses no extensions on this packet, and indicates that it can accept zlib compression and compressed numbers.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
:Note 1: On the &amp;quot;accepts&amp;quot; value, the predefined flags must be set to their predefined values, because this can be used as a sort of a sanity check.&lt;br /&gt;
&lt;br /&gt;
:Note 2: Bits marked as &amp;quot;reserved&amp;quot; should always be set to 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Application layer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data transmission is done in packets. A packet can be considered as&amp;lt;br&amp;gt;&lt;br /&gt;
a special tag - with no data, no tagLen field, and with the tagCount&amp;lt;br&amp;gt;&lt;br /&gt;
field always present. All numbers part of the application layer are&amp;lt;br&amp;gt;&lt;br /&gt;
transmitted in network byte order, i.e. MSB first.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:A packet contains the following:&lt;br /&gt;
::[ec_opcode_t] OPCODE&lt;br /&gt;
::[uint16] TAGCOUNT&lt;br /&gt;
::&amp;lt;tags&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In detail: The opcode means what to to or what the data fields contain.&amp;lt;br&amp;gt;&lt;br /&gt;
Its type is set as ec_opcode_t, which currently is an uint8.&amp;lt;br&amp;gt;&lt;br /&gt;
TagCount is the number of first level tags this packet has. Then are the&amp;lt;br&amp;gt;&lt;br /&gt;
tags themselves.&lt;br /&gt;
&lt;br /&gt;
:A tag consist of:&lt;br /&gt;
::[ec_tagname_t] TAGNAME&lt;br /&gt;
::[ec_tagtype_t] TAGTYPE&lt;br /&gt;
::[ec_taglen_t] TAGLEN&lt;br /&gt;
::&amp;lt;[uint16] TAGCOUNT&amp;gt;?&lt;br /&gt;
:::&amp;lt;sub-tags&amp;gt;&lt;br /&gt;
:::&amp;lt;tag data&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ec_tagname_t is defined as an uint16, ec_taglen_t as an uint32 value&amp;lt;br&amp;gt;&lt;br /&gt;
at the moment. ec_tagtype_t is an uint8. &amp;lt;br&amp;gt;&lt;br /&gt;
TagName tells what it contains (see ECcodes.h for details).&amp;lt;br&amp;gt;&lt;br /&gt;
TagType sends the type of this tag (see ECPacket.h for types)&amp;lt;br&amp;gt;&lt;br /&gt;
TagLen contains the whole length of the tag, including the lengths of the&amp;lt;br&amp;gt;&lt;br /&gt;
possible sub-tags, but without the size of the tagName, tagType and &amp;lt;br&amp;gt;&lt;br /&gt;
tagLen fields. Actually the lowest bit of the tagname doesn't belong to the &amp;lt;br&amp;gt;&lt;br /&gt;
tagName itself, so it has to be cleared before checking the name.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags may contain sub-tags to store the information, and a tagCount field&amp;lt;br&amp;gt;&lt;br /&gt;
is present only for these tags. The presence of the tagCount field can&amp;lt;br&amp;gt;&lt;br /&gt;
be tested by checking the lowest bit of the tagName field, when it is&amp;lt;br&amp;gt;&lt;br /&gt;
set, tagCount field present.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a tag contains sub-tags, the sub-tags are sent before the tag's own&amp;lt;br&amp;gt;&lt;br /&gt;
data. So, tag data length can be calculated by substracting all sub-tags'&amp;lt;br&amp;gt;&lt;br /&gt;
length from the tagLen value, and the remainder is the data length, if&amp;lt;br&amp;gt;&lt;br /&gt;
non-zero.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Future Changes'''&lt;br /&gt;
Future changes of the EC protocol (probably after 2.2.0) may be:&lt;br /&gt;
*no more \0 for string termination&lt;br /&gt;
*last bit of flag byte indicates a following flag byte, and so on&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
This is a packet in hex values that is send to aMule&lt;br /&gt;
for authorization:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00 00 00 22 //flag&lt;br /&gt;
00 00 00 36 //packet body length 54&lt;br /&gt;
02      //EC_OP_AUTH_REQ&lt;br /&gt;
04      //tag count&lt;br /&gt;
&lt;br /&gt;
c8 80          //EC_TAG_CLIENT_NAME&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
0d             //value length 13&lt;br /&gt;
61 6d 75 6c 65 2d 72 65 6d 6f 74 65 00 //&amp;quot;amule-remote\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
c8 82          //EC_TAG_CLIENT_VERSION&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
07             //value length 7&lt;br /&gt;
30 78 30 30 30 31 00 // &amp;quot;0x0001\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
04             //EC_TAG_PROTOCOL_VERSION&lt;br /&gt;
03             //EC_TAGTYPE_UINT16&lt;br /&gt;
02             //value length 2&lt;br /&gt;
02 00          //value is defined by EC_CURRENT_PROTOCOL_VERSION&lt;br /&gt;
&lt;br /&gt;
02              //EC_TAG_PASSWD_HASH&lt;br /&gt;
09             //EC_TAGTYPE_HASH16&lt;br /&gt;
10             //value length 16&lt;br /&gt;
47 bc e5 c7 4f 58 9f 48 //md5 hashed password string&lt;br /&gt;
67 db d5 7e 9c a9 f8 08 //password &amp;quot;aaa&amp;quot; was used&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c8 80 is in fact an utf8 encoded number. It decodes to 02 00 (or 512 in decimal).&amp;lt;br&amp;gt;&lt;br /&gt;
As every tag code, it is shifted one bit to left to&lt;br /&gt;
fit in a bit that indicates the presence of subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
The lowest bit of 02 00 is 0; so this tag doesn't have subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
When we shift the value to the right one bit (or divide by 2),&lt;br /&gt;
we get 01 00.&amp;lt;br&amp;gt;&lt;br /&gt;
That's the value that can be found in ECCodes.h.&lt;br /&gt;
&lt;br /&gt;
This is a search request that&lt;/div&gt;</summary>
		<author><name>87.139.115.64</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO</id>
		<title>EC Protocol HOWTO</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO"/>
				<updated>2007-08-21T16:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;87.139.115.64: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Basic Protocol Structure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Future Changes'''&lt;br /&gt;
Future changes of the EC protocol (probably after 2.2.0) may be:&lt;br /&gt;
*no more \0 for string termination&lt;br /&gt;
*last bit of flag byte indicates a following flag byte, and so on&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
This is a packet in hex values that is send to aMule&lt;br /&gt;
for authorization:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00 00 00 22 //flag&lt;br /&gt;
00 00 00 36 //packet body length 54&lt;br /&gt;
02      //EC_OP_AUTH_REQ&lt;br /&gt;
04      //tag count&lt;br /&gt;
&lt;br /&gt;
c8 80          //EC_TAG_CLIENT_NAME&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
0d             //value length 13&lt;br /&gt;
61 6d 75 6c 65 2d 72 65 6d 6f 74 65 00 //&amp;quot;amule-remote\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
c8 82          //EC_TAG_CLIENT_VERSION&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
07             //value length 7&lt;br /&gt;
30 78 30 30 30 31 00 // &amp;quot;0x0001\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
04             //EC_TAG_PROTOCOL_VERSION&lt;br /&gt;
03             //EC_TAGTYPE_UINT16&lt;br /&gt;
02             //value length 2&lt;br /&gt;
02 00          //value is defined by EC_CURRENT_PROTOCOL_VERSION&lt;br /&gt;
&lt;br /&gt;
02              //EC_TAG_PASSWD_HASH&lt;br /&gt;
09             //EC_TAGTYPE_HASH16&lt;br /&gt;
10             //value length 16&lt;br /&gt;
47 bc e5 c7 4f 58 9f 48 //md5 hashed password string&lt;br /&gt;
67 db d5 7e 9c a9 f8 08 //password &amp;quot;aaa&amp;quot; was used&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c8 80 is in fact an utf8 encoded number. It decodes to 02 00 (or 512 in decimal).&amp;lt;br&amp;gt;&lt;br /&gt;
As every tag code, it is shifted one bit to left to&lt;br /&gt;
fit in a bit that indicates the presence of subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
The lowest bit of 02 00 is 0; so this tag doesn't have subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
When we shift the value to the right one bit (or divide by 2),&lt;br /&gt;
we get 01 00.&amp;lt;br&amp;gt;&lt;br /&gt;
That's the value that can be found in ECCodes.h.&lt;/div&gt;</summary>
		<author><name>87.139.115.64</name></author>	</entry>

	<entry>
		<id>http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO</id>
		<title>EC Protocol HOWTO</title>
		<link rel="alternate" type="text/html" href="http://test.amule.szerverem.hu/wiki/EC_Protocol_HOWTO"/>
				<updated>2007-08-17T19:36:02Z</updated>
		
		<summary type="html">&lt;p&gt;87.139.115.64: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Basic Protocol Structure'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Future Changes'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
This is a packet in hex values that is send to aMule&lt;br /&gt;
for authorization:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00 00 00 22 //flag&lt;br /&gt;
00 00 00 36 //packet body length 54&lt;br /&gt;
02      //EC_OP_AUTH_REQ&lt;br /&gt;
04      //tag count&lt;br /&gt;
&lt;br /&gt;
c8 80          //EC_TAG_CLIENT_NAME&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
0d             //value length 13&lt;br /&gt;
61 6d 75 6c 65 2d 72 65 6d 6f 74 65 00 //&amp;quot;amule-remote\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
c8 82          //EC_TAG_CLIENT_VERSION&lt;br /&gt;
06             //EC_TAGTYPE_STRING&lt;br /&gt;
07             //value length 7&lt;br /&gt;
30 78 30 30 30 31 00 // &amp;quot;0x0001\0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
04             //EC_TAG_PROTOCOL_VERSION&lt;br /&gt;
03             //EC_TAGTYPE_UINT16&lt;br /&gt;
02             //value length 2&lt;br /&gt;
02 00          //value is defined by EC_CURRENT_PROTOCOL_VERSION&lt;br /&gt;
&lt;br /&gt;
02              //EC_TAG_PASSWD_HASH&lt;br /&gt;
09             //EC_TAGTYPE_HASH16&lt;br /&gt;
10             //value length 16&lt;br /&gt;
47 bc e5 c7 4f 58 9f 48 //md5 hashed password string&lt;br /&gt;
67 db d5 7e 9c a9 f8 08 //password &amp;quot;aaa&amp;quot; was used&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c8 80 is in fact an utf8 encoded number, which decodes to 02 00 (or 512 in decimal).&amp;lt;br&amp;gt;&lt;br /&gt;
As every tag code, it is shifted one bit to left to&lt;br /&gt;
fit in a bit that indicates the presence of subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
The lowest bit of 02 00 is 0; so this tag doesn't have subtags.&amp;lt;br&amp;gt;&lt;br /&gt;
When we shift the value to the right one bit (or divide by 2),&lt;br /&gt;
we get 01 00.&amp;lt;br&amp;gt;&lt;br /&gt;
That's the value that can be found in ECCodes.h.&lt;/div&gt;</summary>
		<author><name>87.139.115.64</name></author>	</entry>

	</feed>