Difference between revisions of "EC Protocol HOWTO"

From AMule Project FAQ
Jump to: navigation, search
 
Line 4: Line 4:
  
 
'''Future Changes'''
 
'''Future Changes'''
 
+
Future changes of the EC protocol (probably after 2.2.0) may be:
 +
*no more \0 for string termination
 +
*last bit of flag byte indicates a following flag byte, and so on
  
 
'''Examples'''
 
'''Examples'''
Line 38: Line 40:
 
</pre>
 
</pre>
  
c8 80 is in fact an utf8 encoded number, which decodes to 02 00 (or 512 in decimal).<br>
+
c8 80 is in fact an utf8 encoded number. It decodes to 02 00 (or 512 in decimal).<br>
 
As every tag code, it is shifted one bit to left to
 
As every tag code, it is shifted one bit to left to
 
fit in a bit that indicates the presence of subtags.<br>
 
fit in a bit that indicates the presence of subtags.<br>

Revision as of 18:14, 21 August 2007

Basic Protocol Structure


Future Changes Future changes of the EC protocol (probably after 2.2.0) may be:

  • no more \0 for string termination
  • last bit of flag byte indicates a following flag byte, and so on

Examples

This is a packet in hex values that is send to aMule for authorization:

00 00 00 22 //flag
00 00 00 36 //packet body length 54
02      //EC_OP_AUTH_REQ
04      //tag count

c8 80          //EC_TAG_CLIENT_NAME
06             //EC_TAGTYPE_STRING
0d             //value length 13
61 6d 75 6c 65 2d 72 65 6d 6f 74 65 00 //"amule-remote\0"

c8 82          //EC_TAG_CLIENT_VERSION
06             //EC_TAGTYPE_STRING
07             //value length 7
30 78 30 30 30 31 00 // "0x0001\0"

04             //EC_TAG_PROTOCOL_VERSION
03             //EC_TAGTYPE_UINT16
02             //value length 2
02 00          //value is defined by EC_CURRENT_PROTOCOL_VERSION

02              //EC_TAG_PASSWD_HASH
09             //EC_TAGTYPE_HASH16
10             //value length 16
47 bc e5 c7 4f 58 9f 48 //md5 hashed password string
67 db d5 7e 9c a9 f8 08 //password "aaa" was used

c8 80 is in fact an utf8 encoded number. It decodes to 02 00 (or 512 in decimal).
As every tag code, it is shifted one bit to left to fit in a bit that indicates the presence of subtags.
The lowest bit of 02 00 is 0; so this tag doesn't have subtags.
When we shift the value to the right one bit (or divide by 2), we get 01 00.
That's the value that can be found in ECCodes.h.