[eMule-Web]

[eMule-Web] (http://www.emule-web.de/board/)
-   eMule MODs - Allgemein (http://www.emule-web.de/board/emule-mods-allgemein/)
-   -   "Emulate Others" Mehr Informationen? (http://www.emule-web.de/board/11550-emulate-others-mehr-informationen.html)

Spike2 23. March 2007 21:08

Zitat:

Zitat von Daisuke (Beitrag 114192)
[1] In wie weit bevorzugt Shareaza andere shareaza-clients vor eMule-clients? mir ist bewusst, dass shareaza eMule und besonders den mods in vielen dingen hinterherhinkt, doch wäre eine Bevorzugung von Shareaza-Clients absolut unbeabsichtigt.

So etwas war bei Shareaza mal angedacht (ich kann den Link gerne noch einmal heraussuchen). Außerdem war 'raza früher closed source, auch das trägt nicht unbedingt dazu bei, daß man diesem Client nun mehr Vertrauen entgegenbringt :)

Zitat:

[2] Wie genau emuliert "Emulate Others" Shareaza um die angebliche Benachteiligung auszugleichen?
Das kann ich Dir genau beantworten, weil "emulate Shareaza" größtenteils von mir stammt:
1) Shareaza sendet eine andere Edonkey-Version (0x3D, eMule sendet 0x3C). 'Raza wurde mal von den Servern gebannt aufgrund eines derben Bugs, und gefixte 'razas sollten sich dann mit dieser neuen ID ausweisen, daß sie nicht vom Server gebannt werden. Hieran identifizieren sich auch neuere Shareazas, wird also vom emulate nachgeahmt.
2)
Code:


if (thePrefs.IsEmuShareaza() && GetClientSoft() == SO_SHAREAZA)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_SHAREAZA << 24) |
(2 << 17) |
(2 << 10) |
(1 << 7) |
(0 )
);
tagMuleVersion.WriteTagToFile(data);

Die Versions-Daten, die gesendet werden, entsprechen denen von Shareaza. Ich habe in einem "Sandbox-Experiment" mit zwei Rechnern - einer mit eMule mit emulate, der andere mit 'raza - das emulate getestet - es klappt, aber nur, wenn man beides emuliert. Am Userhash wird nix geändert.

Zitat:

Zitat von Verlierer (Beitrag 114217)
Da es bei Shareaza aber keinen Uploadzwang gibt - oder zumindest gab - hab ich nix dagegen, dass dieser Client gestraft wird.

Shareaza wird durch das emulieren in keiner Art und Weise gestraft. Es entstehen dem Client keinerlei Nachteile.

Zitat:

Zitat von aalerich (Beitrag 116802)
Ehrlich gesagt würde ich denken, das wäre eher eine Frage fürs offizielle Board; ich glaube nicht, daß sich hier jemand mit dem Feature wirklich auskennt. Generell dürften sich wohl nur sehr wenige intensiver damit befaßt haben.

Hehe, doch ich *g* Von mir stammt ja "emulate Shareaza" und "emulate lphant" :)

Zitat:

Zitat von Xman (Beitrag 118609)
der ganze emulieren-Quark beruht auf den Userhash.

Das Emulieren von eDonkey/Hybrid und MLdonkey beruht (unter anderem!) auf dem Userhash. Das von 'raza und lphant nicht. Aber meine Tests haben ergeben, daß zumindest das Emulieren von eDonkey/Hybrid zu einer besseren Kommunikation zwischen beiden Clients führt - die nehmen mehr von mir, geben mir aber auch mehr. Für Interessierte hier der gesamte emulate-Code:

Code:


// [ionix] emulate other // WiZaRd: optimized!
uchar hash[16];
MEMCOPY(hash,thePrefs.GetUserHash(), 16);
if (thePrefs.IsEmuMLDonkey() && GetClientSoft() == SO_MLDONKEY)
{
if(GetHashType() == SO_OLD_MLDONKEY)
{
hash[5] = 'M'; //WiZaRd::Proper Hash Fake :P
hash[14] = 'L'; //WiZaRd::Proper Hash Fake :P
if(thePrefs.IsLogEmuEvents())
AddModLogLine(false,_T("[EMULATE] Emuliere MLDonkey's Hash für alten MLdonkey: %s"),DbgGetClientInfo());
}
//else use default hash
}
else if ((thePrefs.IsEmueDonkey() && GetClientSoft() == SO_EDONKEY)
|| (thePrefs.IsEmueDonkeyHybrid() && GetClientSoft() == SO_EDONKEYHYBRID))
{
uint8 random = (uint8)(rand()%_UI8_MAX); //Spike2, avoid C4244
hash[5] = random == 14 ? random+1 : random; //WiZaRd::Avoid eMule Hash
random = (uint8)(rand()%_UI8_MAX); //Spike2, avoid C4244
hash[14] = random == 111 ? random+1 : random; //WiZaRd::Avoid eMule Hash
if (GetClientSoft() == SO_EDONKEY && thePrefs.IsLogEmuEvents())
AddModLogLine(false,_T("[EMULATE] Emuliere eDonkey's Hash: %s"),DbgGetClientInfo());
else if (GetClientSoft() == SO_EDONKEYHYBRID && thePrefs.IsLogEmuEvents())
AddModLogLine(false,_T("[EMULATE] Emuliere eDonkeyHybrid's Hash: %s"),DbgGetClientInfo());
}
data->WriteHash16(hash);
// [ionix] emulate other

...
Code:


// eD2K Version
// Spike2 - emulate Shareaza - START
if (thePrefs.IsEmuShareaza() && GetClientSoft() == SO_SHAREAZA)
{
CTag tagVersion(CT_VERSION,SHAREAZAEMUVERSION);
tagVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents())
AddModLogLine(false,_T("[EMULATE] Emuliere Shareaza's ed2k-Protokoll: %s"),DbgGetClientInfo());
}
else
{
// Spike2 - emulate Shareaza - END
CTag tagVersion(CT_VERSION,EDONKEYVERSION);
tagVersion.WriteTagToFile(data);
}

....
Code:


// Spike2 - emulate Shareaza - START
if (thePrefs.IsEmuShareaza() && GetClientSoft() == SO_SHAREAZA)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_SHAREAZA << 24) |
(2 << 17) |
(2 << 10) |
(1 << 7) |
(0 )
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere Shareaza: %s"),DbgGetClientInfo());}
}
// Spike2 - emulate Shareaza - END
// Spike2 - emulate lPhant - START
else if (thePrefs.IsEmuLphant() && GetClientSoft() == SO_LPHANT)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_LPHANT << 24) |
(2 << 17) |
(9 << 10) |
(0 << 7)
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere lPhant: %s"),DbgGetClientInfo());}
}
// Spike2 - emulate lPhant - END
// Spike2 - enhanced emulate MLdonkey / eDonkey / eDonkeyHybrid
else if (thePrefs.IsEmuMLDonkey() && GetClientSoft() == SO_MLDONKEY)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_MLDONKEY << 24) |
(2 << 17) |
(7 << 10) |
(3 << 7)
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere MLdonkey: %s"),DbgGetClientInfo());}
}
else if (thePrefs.IsEmueDonkey() && GetClientSoft() == SO_EDONKEY)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_EDONKEY << 24) |
(10405 << 17)
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere eDonkey: %s"),DbgGetClientInfo());}
}
else if (thePrefs.IsEmueDonkeyHybrid() && GetClientSoft() == SO_EDONKEYHYBRID)
{
CTag tagMuleVersion(CT_EMULE_VERSION,
(SO_EDONKEYHYBRID << 24) |
(10405 << 17)
);
tagMuleVersion.WriteTagToFile(data);
if(thePrefs.IsLogEmuEvents()){
AddModLogLine(false,_T("[EMULATE] Emuliere eDonkeyHybrid: %s"),DbgGetClientInfo());}
}
// Spike2 - enhanced emulate MLdonkey / eDonkey / eDonkeyHybrid
else
{
// eMule Version
CTag tagMuleVersion(CT_EMULE_VERSION,
//(uCompatibleClientID << 24) |
(CemuleApp::m_nVersionMjr << 17) |
(CemuleApp::m_nVersionMin << 10) |
(CemuleApp::m_nVersionUpd << 7)
| (UINT(DBG_VERSION_BUILD)) //>>> WiZaRd::ClientAnalyzer
// (RESERVED )
);
tagMuleVersion.WriteTagToFile(data);
}

Bei weiteren Fragen zu den emulates - einfach fragen :)

aalerich 24. March 2007 00:04

Zitat:

Zitat von Spike2 (Beitrag 121777)
Hehe, doch ich *g*

Eine gute Gelegenheit für ein Willkommen. :mrgreen:

Ansonsten würde ich mich um die Hybriden nicht mehr kümmern, die waren einmal (Wowereit würde sagen "Und das ist auch gut so!")

Mit freundlichen Grüßen
aalerich

taz 26. March 2007 06:12

@Spike2 - Great to see u around, welcome onboard !

I do not read,write or speak German (I'm using Elmundo via FoxLingo on FireFox) - however I'm trying to follow discussion.
Is the code u "quoted" part of spike-2.09 or is it going to be inserted in next revision ?

Spike2 4. April 2007 18:23

Hi Taz,

it is already part of Spike2 0.9.

Greetz--

Spike2


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102