E-Donkey Protokoll / OpenDonkey
hacked by
w3seek
.:: RAZER 2000 ::.
*************************************************************
* Please check my new file sharing project *
* *
* W3SEEK P2P NETWORK *
* http://www.w3seek.de *
* *
*************************************************************
Befehlsaufbau (vermutlich)
Bytes (Beispiel an Message an Client):
------------------------------------------------------------
| E3 | 06 | 00 | 00 | 00 | 38 | 03 | 00 | 61 | 61 | 61
------------------------------------------------------------
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ...
------------------------------------------------------------
| V | PS | B | Parameter.........
------------------------------------------------------------
// V = Version oder Befehls-Beginn
// PS = Länge der Parameter einschließlich Befehls-ID
// B = Befehls-ID
---------------------------------------------------------------
// Mit % markierte bytes bleiben immer gleich
// Mit ! Anzahl der Bytes ab Byte 5 (gespeichert als integer)
// B = Befehls-ID
1. Client -> Server
// Befehls-IDs:
// 1F: ExitRoom (Chat)
// 16: Submit Search
// 01: Login
// 19: Download/Resume
// 1D: Chat-Räume anfragen
+Chat-Funktionen:
----------------
-ExitRoom (immer das selbe):
E3 03 00 00 00 1F 00 00
! B
-Chaträume anfragen
E3 01 00 00 00 1D
! B
-Chatraum betreten
E3 03 00 00 00 1F 02 00
! B {*1 }
(*1): Vermutlich Chatraum-ID im Shortint (16 Bit ohne Vorzeichen)
-Chatnachricht versenden
E3 07 00 00 00 1E 04 00 74 65 73 74
! B { *1 } { *2 }
(*1): Länge der Nachricht in Bytes
(*2): Nachricht als String
+Suchen-Funktionen:
------------------
() ist die länge des strings der 1 byte nacher folgt!
*1, *2, *3: Suchstrings
{T e x t}: Suchstring der konstant ist
-Submit Search (All):
E3 07 00 00 00 16 01 03 00 61 61 61
! B () { *1 }
-Suchen nach "Audio"
E3 14 00 00 00 16 00 00 01 03 00 61 61 61 02 05 00 41 75 64 69 6F 01 00 03
() { *1 } () {A u d i o}
-Suchen nach "Video"
E3 14 00 00 00 16 00 00 01 03 00 61 61 61 02 05 00 56 69 64 65 6F 01 00 03
() { *1 } () {V i d e o}
-Suchen nach "Programs"
E3 12 00 00 00 16 00 00 01 03 00 61 61 61 02 03 00 50 72 6F 01 00 03
() { *1 } () {P r o}
-Suchen nach "Documents"
E3 12 00 00 00 16 00 00 01 03 00 61 61 61 02 03 00 44 6F 63 01 00 03
() { *1 } () {D o c}
-Suchen nach "Collections"
E3 12 00 00 00 16 00 00 01 03 00 61 61 61 02 03 00 43 6F 6C 01 00 03
() { *1 } () {C o l}
-Suchen nach "Users"
E3 07 00 00 00 1A 01 03 00 61 61 61
() { *1 }
-Suchen nach "Format and Size"
// Testvalues: aaa Format: bbb Size greater than: 111 Size less than: 222
E3 28 00 00 00 16 00 00 00 00 00 00 01 03 00 61 61 61 02 03 00 62 62 62 01 00 04 03 6F 00 00 00 01 01 00 02 03 DE 00 00 00 02 01 00 02
() { *1 } () { *2 } { *4 } { *5 }
(*5): Cardinal (Size less than)
(*4): Cardinal (Size greater than)
+Login-Funktionen:
-----------------
-Login (gleich nach verbindung senden):
E3 3A 00 00 00 01 EA DA 80 1E C2 CF 6B 3E 06 5A 0C D9 F4 8C B9 43 00 00 00 00 36 12 03 00 00 00 02 01 00 01 03 00 61 62 63 03 01 00 11 38 00 00 00 03 01 00 0F 36 12 00 00 2C 80 00 00 04 00
! B { *6 } { *3 } { *5 } *1 { *2 } { *7 } { *4 }
(*1): Länge des Benutzernamens
(*2): Benutzername
(*3): Alte User-ID
(*4): Port für eingehende Verbindungen
(*5): Port für eingehende Verbindungen (Bytes vertauscht)
(*6): User-Hash-ID (Zufallszahlen, 16 Bytes)
(*7): Version als Cardinal
+Download-Funktionen
-------------------
-Bei Resume oder Downloadbeginn:
der Link aus dem eDonkey-Client:
<a href="ed2k://|file|Halflife_blueshift_ISO.bin|714311808|6d324581d0eaaa82a0577e2601b0c7fe|">Halflife_blueshift_ISO.bin</a>
E3 11 00 00 00 19 6D 32 45 81 D0 EA AA 82 A0 57 7E 26 01 B0 C7 FE
| |
| |
+----------------------- FILE-ID ----------------------------+
2. Server -> Client
// Befehls-IDs:
// 38: Message an client (auch siehe "Login Server->Client"!)
// 34: Statusinformationen übertragen
// 33: Suche beendet
// 40: ID wurde geändert (Doppelter user)
-Message an Clients:
E3 06 00 00 00 38 03 00 61 61 61
! B *1 {suchbegriff}
(*1): Länge der nachricht in bytes
-Statusinformationen übertragen:
E3 09 00 00 00 34 02 00 00 00 00 00 00 00
! B {*1 } {*2 }
(*1): Anzahl der user, im format Cardinal
(*2): Anzahl der freigegebenen Dateien, im format Cardinal
-Suche beendet:
E3 06 00 00 00 33 00 00 00 00 00
! B { *1 }
(*1): vermutlich anzahl der treffer, format Cardinal
+Chatfunktionen:
================
-Members anzeigen, die im aktuellen Raum sind:
E3 38 00 00 00 3D 01 00 00 00 EA DA 80 1E C2 CF 6B 3E 06 5A 0C D9 F4 8C B9 43 D9 00 99 15 36 12 03 00 00 00 02 01 00 01 03 00 61 62 63 03 01 00 11 38 00 00 00 03 01 00 0F 36 12 00 00
! B { *1 } { *2 } { *7 } *3 { *4 } { *5 } { *6 }
(*1): Anzahl der User im Raum (ohne eigenen User!)
(*2): User-ID
(*3): Länge des Usernamen in Bytes
(*4): Username als String
(*5): Version
(*6): Port für eingehende Verbindungen als Cardinal
(*7): Port für eingehende Verbindungen (Bytes vertauscht!)
// Achtung: Der eigene Username wird nicht mit übertragen!
-Chatnachricht versenden:
E3 09 00 00 00 3A D9 00 99 15 02 00 68 69
! B { *1 } *2 { *3 }
(*1): User-ID des Absenders als Cardinal
(*2): Länge der nachricht als Byte
(*3): Nachricht als Strin