aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-edonkey.h
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2007-10-27 15:28:35 +0000
committerAnders Broman <anders.broman@ericsson.com>2007-10-27 15:28:35 +0000
commit135ba5aeff64ab5be45f417761fee114e9a498ae (patch)
treec1537fd4ca9848861e30980cc528c1c08aa6fd73 /epan/dissectors/packet-edonkey.h
parentf209667d9353903369bcbbdfc6c19cd360597595 (diff)
downloadwireshark-135ba5aeff64ab5be45f417761fee114e9a498ae.tar.gz
wireshark-135ba5aeff64ab5be45f417761fee114e9a498ae.tar.bz2
wireshark-135ba5aeff64ab5be45f417761fee114e9a498ae.zip
From Stefano Picerno:
I made some updates to the edonkey dissector. Most kademlia1 and some kademlia2 messages are now completely decoded. svn path=/trunk/; revision=23288
Diffstat (limited to 'epan/dissectors/packet-edonkey.h')
-rw-r--r--epan/dissectors/packet-edonkey.h175
1 files changed, 171 insertions, 4 deletions
diff --git a/epan/dissectors/packet-edonkey.h b/epan/dissectors/packet-edonkey.h
index 3cb09fdc4e..e171c25a08 100644
--- a/epan/dissectors/packet-edonkey.h
+++ b/epan/dissectors/packet-edonkey.h
@@ -1,10 +1,13 @@
/* packet-edonkey.h
* Declarations for edonkey dissection
* Copyright 2003, Xuan Zhang <xz@aemail4u.com>
+ * Copyright 2007, Stefano Picerno <stefano.picerno@gmail.com>
* eDonkey dissector based on protocol descriptions from mldonkey:
* http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/edonkey-protocol.txt
* http://savannah.nongnu.org/download/mldonkey/docs/Edonkey-Overnet/overnet-protocol.txt
*
+ * Kademlia dissector based on source code inspection of aMule 2.1.3 and eMule 0.84b
+ *
* $Id$
*
* Wireshark - Network traffic analyzer
@@ -28,7 +31,7 @@
void proto_register_edonkey(void);
-#define EDONKEY_MAX_SNAP_SIZE 1500
+#define EDONKEY_MAX_SNAP_SIZE 1500
#define EDONKEY_TCP_HEADER_LENGTH 5
#define EDONKEY_UDP_HEADER_LENGTH 2
@@ -52,7 +55,7 @@ void proto_register_edonkey(void);
#define EDONKEY_MSG_CLIENT_CB_REQ 0x1c
/* define EDONKEY_MSG_UNKNOWN 0x20 */
#define EDONKEY_MSG_MORE_RESULTS 0x21
-#define EDONKEY_MSG_GET_SOURCES_OBFU 0x23
+#define EDONKEY_MSG_GET_SOURCES_OBFU 0x23
#define EDONKEY_MSG_SERVER_LIST 0x32
#define EDONKEY_MSG_SEARCH_FILE_RESULTS 0x33
#define EDONKEY_MSG_SERVER_STATUS 0x34
@@ -63,7 +66,7 @@ void proto_register_edonkey(void);
#define EDONKEY_MSG_SERVER_INFO_DATA 0x41
#define EDONKEY_MSG_FOUND_SOURCES 0x42
#define EDONKEY_MSG_SEARCH_USER_RESULTS 0x43
-#define EDONKEY_MSG_FOUND_SOURCES_OBFU 0x44
+#define EDONKEY_MSG_FOUND_SOURCES_OBFU 0x44
/* Client <-> Client */
#define EDONKEY_MSG_HELLO_CLIENT 0x10 /* 0x01 0x10 */
@@ -103,13 +106,15 @@ void proto_register_edonkey(void);
#define EMULE_MSG_HELLO_ANSWER 0x02
#define EMULE_MSG_DATA_COMPRESSED 0x40
#define EMULE_MSG_QUEUE_RANKING 0x60
+#define EMULE_MSG_FILE_DESC 0x61
#define EMULE_MSG_SOURCES_REQUEST 0x81
#define EMULE_MSG_SOURCES_ANSWER 0x82
#define EMULE_MSG_PUBLIC_KEY 0x85
#define EMULE_MSG_SIGNATURE 0x86
-#define EMULE_MSG_SEC_IDENT_STATE 0x87
+#define EMULE_MSG_SEC_IDENT_STATE 0x87
#define EMULE_MSG_MULTIPACKET 0x92
#define EMULE_MSG_MULTIPACKET_ANSWER 0x93
+#define EMULE_MSG_CALLBACK 0x99
#define EMULE_MSG_AICH_REQUEST 0x9b
#define EMULE_MSG_AICH_ANSWER 0x9c
#define EMULE_MSG_AICHFILEHASH_ANSWER 0x9d
@@ -239,3 +244,165 @@ void proto_register_edonkey(void);
/* EDONKEY SEARCH MIN/MAX */
#define EDONKEY_SEARCH_MIN 0x01
#define EDONKEY_SEARCH_MAX 0x02
+
+/* KADEMLIA TAGS */
+#define KADEMLIA_TAGTYPE_HASH 0x01
+#define KADEMLIA_TAGTYPE_STRING 0x02
+#define KADEMLIA_TAGTYPE_UINT32 0x03
+#define KADEMLIA_TAGTYPE_FLOAT32 0x04
+#define KADEMLIA_TAGTYPE_BOOL 0x05
+#define KADEMLIA_TAGTYPE_BOOLARRAY 0x06
+#define KADEMLIA_TAGTYPE_BLOB 0x07
+#define KADEMLIA_TAGTYPE_UINT16 0x08
+#define KADEMLIA_TAGTYPE_UINT8 0x09
+#define KADEMLIA_TAGTYPE_BSOB 0x0A
+#define KADEMLIA_TAGTYPE_UINT64 0x0B
+
+#define KADEMLIA_TAGTYPE_STR1 0x11
+#define KADEMLIA_TAGTYPE_STR2 0x12
+#define KADEMLIA_TAGTYPE_STR3 0x13
+#define KADEMLIA_TAGTYPE_STR4 0x14
+#define KADEMLIA_TAGTYPE_STR5 0x15
+#define KADEMLIA_TAGTYPE_STR6 0x16
+#define KADEMLIA_TAGTYPE_STR7 0x17
+#define KADEMLIA_TAGTYPE_STR8 0x18
+#define KADEMLIA_TAGTYPE_STR9 0x19
+#define KADEMLIA_TAGTYPE_STR10 0x1A
+#define KADEMLIA_TAGTYPE_STR11 0x1B
+#define KADEMLIA_TAGTYPE_STR12 0x1C
+#define KADEMLIA_TAGTYPE_STR13 0x1D
+#define KADEMLIA_TAGTYPE_STR14 0x1E
+#define KADEMLIA_TAGTYPE_STR15 0x1F
+#define KADEMLIA_TAGTYPE_STR16 0x20
+#define KADEMLIA_TAGTYPE_STR17 0x21
+#define KADEMLIA_TAGTYPE_STR18 0x22
+#define KADEMLIA_TAGTYPE_STR19 0x23
+#define KADEMLIA_TAGTYPE_STR20 0x24
+#define KADEMLIA_TAGTYPE_STR21 0x25
+#define KADEMLIA_TAGTYPE_STR22 0x26
+
+#define KADEMLIA_TAG_MEDIA_ARTIST 0xD0 /* <string> */
+#define KADEMLIA_TAG_MEDIA_ALBUM 0xD1 /* <string> */
+#define KADEMLIA_TAG_MEDIA_TITLE 0xD2 /* <string> */
+#define KADEMLIA_TAG_MEDIA_LENGTH 0xD3 /* <uint32> !!! */
+#define KADEMLIA_TAG_MEDIA_BITRATE 0xD4 /* <uint32> */
+#define KADEMLIA_TAG_MEDIA_CODEC 0xD5 /* <string> */
+#define KADEMLIA_TAG_USER_COUNT 0xF4 /* <uint32> */
+#define KADEMLIA_TAG_FILE_COUNT 0xF5 /* <uint32> */
+#define KADEMLIA_TAG_FILECOMMENT 0xF6 /* <string> */
+#define KADEMLIA_TAG_FILERATING 0xF7 /* <uint8> */
+#define KADEMLIA_TAG_BUDDYHASH 0xF8 /* <string> */
+#define KADEMLIA_TAG_CLIENTLOWID 0xF9 /* <uint32> */
+#define KADEMLIA_TAG_SERVERPORT 0xFA /* <uint16> */
+#define KADEMLIA_TAG_SERVERIP 0xFB /* <uint32> */
+#define KADEMLIA_TAG_SOURCEUPORT 0xFC /* <uint16> */
+#define KADEMLIA_TAG_SOURCEPORT 0xFD /* <uint16> */
+#define KADEMLIA_TAG_SOURCEIP 0xFE /* <uint32> */
+#define KADEMLIA_TAG_SOURCETYPE 0xFF /* <uint8> */
+
+#define EDONKEY_PROTO_ADU_KADEMLIA 0xA4
+#define EDONKEY_PROTO_ADU_KADEMLIA_COMP 0xA5
+
+#define EDONKEY_PROTO_KADEMLIA 0xE4
+#define EDONKEY_PROTO_KADEMLIA_COMP 0xE5
+
+/* KADEMLIA (opcodes) (udp) */
+#define KADEMLIA_BOOTSTRAP_REQ 0x00 /* <PEER (sender) [25]> */
+#define KADEMLIA2_BOOTSTRAP_REQ 0x01 /* */
+
+#define KADEMLIA_BOOTSTRAP_RES 0x08 /* <CNT [2]> <PEER [25]>*(CNT) */
+#define KADEMLIA2_BOOTSTRAP_RES 0x09 /* */
+
+#define KADEMLIA_HELLO_REQ 0x10 /* <PEER (sender) [25]> */
+#define KADEMLIA2_HELLO_REQ 0x11 /* */
+
+#define KADEMLIA_HELLO_RES 0x18 /* <PEER (receiver) [25]> */
+#define KADEMLIA2_HELLO_RES 0x19 /* */
+
+#define KADEMLIA_REQ 0x20 /* <TYPE [1]> <HASH (target) [16]> <HASH (receiver) 16> */
+#define KADEMLIA2_REQ 0x21 /* */
+
+#define KADEMLIA_RES 0x28 /* <HASH (target) [16]> <CNT> <PEER [25]>*(CNT) */
+#define KADEMLIA2_RES 0x29 /* */
+
+#define KADEMLIA_SEARCH_REQ 0x30 /* <HASH (key) [16]> <ext 0/1 [1]> <SEARCH_TREE>[ext] */
+/*#define UNUSED 0x31 Old Opcode, don't use. */
+#define KADEMLIA_SEARCH_NOTES_REQ 0x32 /* <HASH (key) [16]> */
+#define KADEMLIA2_SEARCH_KEY_REQ 0x33 /* */
+#define KADEMLIA2_SEARCH_SOURCE_REQ 0x34 /* */
+#define KADEMLIA2_SEARCH_NOTES_REQ 0x35 /* */
+
+#define KADEMLIA_SEARCH_RES 0x38 /* <HASH (key) [16]> <CNT1 [2]> (<HASH (answer) [16]> <CNT2 [2]> <META>*(CNT2))*(CNT1) */
+/*#define UNUSED 0x39 Old Opcode, don't use. */
+#define KADEMLIA_SEARCH_NOTES_RES 0x3A /* <HASH (key) [16]> <CNT1 [2]> (<HASH (answer) [16]> <CNT2 [2]> <META>*(CNT2))*(CNT1) */
+#define KADEMLIA2_SEARCH_RES 0x3B /* */
+
+#define KADEMLIA_PUBLISH_REQ 0x40 /* <HASH (key) [16]> <CNT1 [2]> (<HASH (target) [16]> <CNT2 [2]> <META>*(CNT2))*(CNT1) */
+/*#define UNUSED 0x41 Old Opcode, don't use. */
+#define KADEMLIA_PUBLISH_NOTES_REQ 0x42 /* <HASH (key) [16]> <HASH (target) [16]> <CNT2 [2]> <META>*(CNT2))*(CNT1) */
+#define KADEMLIA2_PUBLISH_KEY_REQ 0x43 /* */
+#define KADEMLIA2_PUBLISH_SOURCE_REQ 0x44 /* */
+#define KADEMLIA2_PUBLISH_NOTES_REQ 0x45 /* */
+
+#define KADEMLIA_PUBLISH_RES 0x48 /* <HASH (key) [16]> */
+/*#define UNUSED 0x49 Old Opcode, don't use. */
+#define KADEMLIA_PUBLISH_NOTES_RES 0x4A /* <HASH (key) [16]> */
+#define KADEMLIA2_PUBLISH_RES 0x4B /* */
+
+#define KADEMLIA_FIREWALLED_REQ 0x50 /* <TCPPORT (sender) [2]> */
+#define KADEMLIA_FINDBUDDY_REQ 0x51 /* <TCPPORT (sender) [2]> */
+#define KADEMLIA_CALLBACK_REQ 0x52 /* <TCPPORT (sender) [2]> */
+
+#define KADEMLIA_FIREWALLED_RES 0x58 /* <IP (sender) [4]> */
+#define KADEMLIA_FIREWALLED_ACK_RES 0x59 /* (null) */
+#define KADEMLIA_FINDBUDDY_RES 0x5A /* <TCPPORT (sender) [2]> */
+
+/* KADEMLIA (parameter) */
+#define KADEMLIA_FIND_VALUE 0x02
+#define KADEMLIA_STORE 0x04
+#define KADEMLIA_FIND_NODE 0x0B
+
+/* Kad search + some unused tags to mirror the ed2k ones. */
+#define KADEMLIA_TAG_FILENAME 0x01 /* <string> */
+#define KADEMLIA_TAG_FILESIZE 0x02 /* <uint32> */
+#define KADEMLIA_TAG_FILESIZE_HI 0x3A /* <uint32> */
+#define KADEMLIA_TAG_FILETYPE 0x03 /* <string> */
+#define KADEMLIA_TAG_FILEFORMAT 0x04 /* <string> */
+#define KADEMLIA_TAG_COLLECTION 0x05
+#define KADEMLIA_TAG_PART_PATH 0x06 /* <string> */
+#define KADEMLIA_TAG_PART_HASH 0x07
+#define KADEMLIA_TAG_COPIED 0x08 /* <uint32> */
+#define KADEMLIA_TAG_GAP_START 0x09 /* <uint32> */
+#define KADEMLIA_TAG_GAP_END 0x0A /* <uint32> */
+#define KADEMLIA_TAG_DESCRIPTION 0x0B /* <string> */
+#define KADEMLIA_TAG_PING 0x0C
+#define KADEMLIA_TAG_FAIL 0x0D
+#define KADEMLIA_TAG_PREFERENCE 0x0E
+#define KADEMLIA_TAG_PORT 0x0F
+#define KADEMLIA_TAG_IP_ADDRESS 0x10
+#define KADEMLIA_TAG_VERSION 0x11 /* <string> */
+#define KADEMLIA_TAG_TEMPFILE 0x12 /* <string> */
+#define KADEMLIA_TAG_PRIORITY 0x13 /* <uint32> */
+#define KADEMLIA_TAG_STATUS 0x14 /* <uint32> */
+#define KADEMLIA_TAG_SOURCES 0x15 /* <uint32> */
+#define KADEMLIA_TAG_PERMISSIONS 0x16
+#define KADEMLIA_TAG_QTIME 0x16
+#define KADEMLIA_TAG_PARTS 0x17
+#define KADEMLIA_TAG_MEDIA_ARTIST 0xD0 /* <string> */
+#define KADEMLIA_TAG_MEDIA_ALBUM 0xD1 /* <string> */
+#define KADEMLIA_TAG_MEDIA_TITLE 0xD2 /* <string> */
+#define KADEMLIA_TAG_MEDIA_LENGTH 0xD3 /* <uint32> !!! */
+#define KADEMLIA_TAG_MEDIA_BITRATE 0xD4 /* <uint32> */
+#define KADEMLIA_TAG_MEDIA_CODEC 0xD5 /* <string> */
+#define KADEMLIA_TAG_ENCRYPTION 0xF3 /* <uint8> */
+#define KADEMLIA_TAG_FILERATING 0xF7 /* <uint8> */
+#define KADEMLIA_TAG_BUDDYHASH 0xF8 /* <string> */
+#define KADEMLIA_TAG_CLIENTLOWID 0xF9 /* <uint32> */
+#define KADEMLIA_TAG_SERVERPORT 0xFA /* <uint16> */
+#define KADEMLIA_TAG_SERVERIP 0xFB /* <uint32> */
+#define KADEMLIA_TAG_SOURCEUPORT 0xFC /* <uint16> */
+#define KADEMLIA_TAG_SOURCEPORT 0xFD /* <uint16> */
+#define KADEMLIA_TAG_SOURCEIP 0xFE /* <uint32> */
+#define KADEMLIA_TAG_SOURCETYPE 0xFF /* <uint8> */
+
+