Editing Protocol obfuscation
From EMule Wiki
Warning: The database has been locked for maintenance, so you will not be able to save your edits right now. You may wish to cut-n-paste the text into a text file and save it for later.
The administrator who locked it offered this explanation: site maintenance
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
+ | ---- | ||
+ | <div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;"> | ||
+ | ---- | ||
+ | =[http://itygeligub.co.cc This Page Is Currently Under Construction And Will Be Available Shortly, Please Visit Reserve Copy Page]= | ||
+ | ---- | ||
+ | =[http://itygeligub.co.cc CLICK HERE]= | ||
+ | ---- | ||
+ | </div> | ||
Some providers are throttling eMule traffic (decreasing the allowed bandwidth). They do this by detecting the eMule protocol and allowing a very limited amount of the total bandwidth to be used by eMule. Obfuscation makes it harder to identify the eMule protocol. | Some providers are throttling eMule traffic (decreasing the allowed bandwidth). They do this by detecting the eMule protocol and allowing a very limited amount of the total bandwidth to be used by eMule. Obfuscation makes it harder to identify the eMule protocol. | ||
Line 11: | Line 19: | ||
== Limitations == | == Limitations == | ||
− | * Obfuscation only works if both sides of the transfer support it. If one side doesn't support it, the communication is done the | + | * Obfuscation only works if both sides of the transfer support it. If one side doesn't support it, the communication is done the "old" way, unless this is disabled (see ''Settings'' section). |
* Obfuscation is not perfect, it is still possible to detect the eMule protocol. | * Obfuscation is not perfect, it is still possible to detect the eMule protocol. | ||
* Obfuscation does not increase anonymity or hide which files are shared. | * Obfuscation does not increase anonymity or hide which files are shared. | ||
Line 27: | Line 35: | ||
see EncryptedStreamSocket.h | see EncryptedStreamSocket.h | ||
: | : | ||
− | -Keycreation Client | + | -Keycreation Client <-> Client: |
- Client A (Outgoing connection): | - Client A (Outgoing connection): | ||
− | Sendkey: Md5( | + | Sendkey: Md5(<UserHashClientB 16><IPClientA 4><MagicValue91 1><RandomKeyPartClientA 2>) 23 |
- Client B (Incoming connection): | - Client B (Incoming connection): | ||
− | Receivekey: Md5( | + | Receivekey: Md5(<UserHashClientB 16><IPClientA 4><MagicValue91 1><RandomKeyPartClientA 2>) 23 |
- Note: The first 1024 Bytes will be _NOT_ discarded for UDP keys to save CPU time | - Note: The first 1024 Bytes will be _NOT_ discarded for UDP keys to save CPU time | ||
: | : | ||
− | -Keycreation Client | + | -Keycreation Client <-> Server: |
− | - Client A (Outgoing connection client - | + | - Client A (Outgoing connection client -> server): |
− | Sendkey: Md5( | + | Sendkey: Md5(<BaseKey 4><MagicValueClientServer 1><RandomKeyPartClientA 2>) 7 |
- Client B (Incoming connection): | - Client B (Incoming connection): | ||
− | Receivekey: Md5( | + | Receivekey: Md5(<BaseKey 4><MagicValueServerClient 1><RandomKeyPartClientA 2>) 7 |
- Note: The first 1024 Bytes will be _NOT_ discarded for UDP keys to save CPU time | - Note: The first 1024 Bytes will be _NOT_ discarded for UDP keys to save CPU time | ||
: | : | ||
- Handshake | - Handshake | ||
− | - | + | -> The handshake is encrypted - except otherwise noted - by the Keys created above |
− | - | + | -> Padding is cucrently not used for UDP meaning that PaddingLen will be 0, using PaddingLens up to 16 Bytes is acceptable however |
− | Client A: | + | Client A: <SemiRandomNotProtocolMarker 1[Unencrypted]><RandomKeyPart 2[Unencrypted]><MagicValue 4><PaddingLen 1><RandomBytes PaddingLen%16> |
: | : | ||
- Overhead: 8 Bytes per UDP Packet | - Overhead: 8 Bytes per UDP Packet | ||
Line 58: | Line 66: | ||
=== Encrypted TCP === | === Encrypted TCP === | ||
− | Basic Obfuscated Handshake Protocol Client | + | Basic Obfuscated Handshake Protocol Client <-> Client: |
-Keycreation: | -Keycreation: | ||
- Client A (Outgoing connection): | - Client A (Outgoing connection): | ||
− | Sendkey: Md5( | + | Sendkey: Md5(<UserHashClientB 16><MagicValue34 1><RandomKeyPartClientA 4>) 21 |
− | Receivekey: Md5( | + | Receivekey: Md5(<UserHashClientB 16><MagicValue203 1><RandomKeyPartClientA 4>) 21 |
- Client B (Incomming connection): | - Client B (Incomming connection): | ||
− | Sendkey: Md5( | + | Sendkey: Md5(<UserHashClientB 16><MagicValue203 1><RandomKeyPartClientA 4>) 21 |
− | Receivekey: Md5( | + | Receivekey: Md5(<UserHashClientB 16><MagicValue34 1><RandomKeyPartClientA 4>) 21 |
NOTE: First 1024 Bytes are discarded | NOTE: First 1024 Bytes are discarded | ||
: | : | ||
- Handshake | - Handshake | ||
− | - | + | -> The handshake is encrypted - except otherwise noted - by the Keys created above |
− | - | + | -> Handshake is blocking - do not start sending an answer before the request is completly received (this includes the random bytes) |
− | - | + | -> EncryptionMethod = 0 is Obfusication and the only supported right now |
− | Client A: | + | Client A: <SemiRandomNotProtocolMarker 1[Unencrypted]><RandomKeyPart 4[Unencrypted]><MagicValue 4><EncryptionMethodsSupported 1><EncryptionMethodPreferred 1><PaddingLen 1><RandomBytes PaddingLen%16> |
− | Client B: | + | Client B: <MagicValue 4><EncryptionMethodsSelected 1><PaddingLen 1><RandomBytes PaddingLen%16> |
− | - | + | -> The basic handshake is finished here, if an additional/different EncryptionMethod was selected it may continue negotiating details for this one |
- Overhead: 18-48 (~33) Bytes + 2 * IP/TCP Headers per Connection | - Overhead: 18-48 (~33) Bytes + 2 * IP/TCP Headers per Connection | ||
- Security for Basic Obfusication: | - Security for Basic Obfusication: | ||
Line 86: | Line 94: | ||
it doesn't offers substantial protection against eavesdropping without added authentification | it doesn't offers substantial protection against eavesdropping without added authentification | ||
− | Basic Obfuscated Handshake Protocol Client | + | Basic Obfuscated Handshake Protocol Client <-> Server: |
- RC4 Keycreation: | - RC4 Keycreation: | ||
- Client (Outgoing connection): | - Client (Outgoing connection): | ||
− | + | <nowiki>Sendkey: Md5(<S 96><MagicValue34 1>) 97</nowiki> | |
− | + | <nowiki>Receivekey: Md5(<S 96><MagicValue203 1>) 97</nowiki> | |
- Server (Incomming connection): | - Server (Incomming connection): | ||
− | + | <nowiki>Sendkey: Md5(<S 96><MagicValue203 1>) 97</nowiki> | |
− | + | <nowiki>Receivekey: Md5(<S 96><MagicValue34 1>) 97</nowiki> | |
: | : | ||
NOTE: First 1024 Bytes are discarded | NOTE: First 1024 Bytes are discarded | ||
: | : | ||
- Handshake | - Handshake | ||
− | - | + | -> The handshake is encrypted - except otherwise noted - by the Keys created above |
− | - | + | -> Handshake is blocking - do not start sending an answer before the request is completly received (this includes the random bytes) |
− | - | + | -> EncryptionMethod = 0 is Obfusication and the only supported right now |
: | : | ||
− | Client: | + | Client: <SemiRandomNotProtocolMarker 1[Unencrypted]><G^A 96 [Unencrypted]><RandomBytes 0-15 [Unencrypted]> |
− | Server: \ | + | Server: \<G^B 96 [Unencrypted]><MagicValue 4><EncryptionMethodsSupported 1><EncryptionMethodPreferred 1><PaddingLen 1><RandomBytes PaddingLen> |
− | Client: | + | Client: <MagicValue 4><EncryptionMethodsSelected 1><PaddingLen 1><RandomBytes PaddingLen> (Answer delayed till first payload to save a frame) |
: | : | ||
− | - | + | -> The basic handshake is finished here, if an additional/different EncryptionMethod was selected it may continue negotiating details for this one |
: | : | ||
- Overhead: 206-251 (~229) Bytes + 2 * IP/TCP Headers Headers per Connectionon | - Overhead: 206-251 (~229) Bytes + 2 * IP/TCP Headers Headers per Connectionon | ||
Line 114: | Line 122: | ||
== See also == | == See also == | ||
*[http://www.azureuswiki.com/index.php/Bad_ISPs List of providers which are throttling '''Bittorrent'''] | *[http://www.azureuswiki.com/index.php/Bad_ISPs List of providers which are throttling '''Bittorrent'''] | ||
− | *[http://www.emule-project.net/home/perl/help.cgi?l=1&rm=show_topic&topic_id=848 Obfuscation at the eMule docs] | + | *[http://www.emule-project.net/home/perl/help.cgi?l=1&rm=show_topic&topic_id=848 Obfuscation at the eMule docs] |
[[category:features]] | [[category:features]] |