[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)

Daisuke 1. November 2006 19:07

"Emulate Others" Mehr Informationen?
 
Hi, mir ist aufgefallen, dass einige mods das emulate others -feature implementiert haben..allerdings sind die informationen, die ich bis jetzt zum feature gefunden habe, recht spärlich. Mich interessiert im Fall Shareaza folgendes:
[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.
[2] Wie genau emuliert "Emulate Others" Shareaza um die angebliche Benachteiligung auszugleichen?

Verlierer 2. November 2006 00:38

1. Das Shareaza seines gleichen Bevorzugt habe ich auch das erste Mal durch dieses Feature erfahren, vielleicht ist es auch nur ein Verdacht (oder war ein Verdacht da das Prog ja zwischenzeitlich Open Source wurde). Da es bei Shareaza aber keinen Uploadzwang gibt - oder zumindest gab - hab ich nix dagegen, dass dieser Client gestraft wird.

2. Die Informationen die zwischen deinem Client und einem Shareaza-Client ausgetauscht werden sind der Standard von Shareaza und nicht der von eMule. Somit denkt der Shareaza-Client, du wärest auch einer und bevorzugt dich (wenn es denn so ist).

Daisuke 25. December 2006 21:46

ich dachte jetzt mehr so an detaillierte informationen

aalerich 25. December 2006 22:45

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.

Mit freundlichen Grüßen
aalerich

mav744 25. December 2006 22:53

Stulle bestimmt, der hat es eingebaut, aber der ist leider im urlaub und ich kann nicht helfen.

Mit freundlichen Grüssen
mav744

Verlierer 26. December 2006 00:01

@ Daisuke:

*lol* du lässt dir aber eeeeetwas Zeit mit deinen Antworten :mrgreen:

fafner 31. January 2007 16:33

Mal 'ne andere Frage:

Wenn der gegenüber sich zuerst bei uns meldet, bekommen wir ein Hello und wissen bereits, um was für einen Kameraden es sich da handelt.

Was aber umgekehrt, wenn wir von uns zu dem connecten? Senden nicht wir da zuerst das Hello und wissen von dem andern nix außer der IP Adresse? Wie sollen wir da was emulieren?

Verlierer 31. January 2007 16:40

Hmmm... vermutlich kann die verwendete Software schon irgendwie vorher festgestellt werden. Vielleicht kann aber auch beim ersten Mal ein eMule Hello gesendet und erst danach betrogen werden. Könnte ja sein, dass die Clients sich noch im Nachhinein verarschen lassen oder so.

Tom-XT 31. January 2007 18:57

Zitat:

original von Fafner
Was aber umgekehrt, wenn wir von uns zu dem connecten? Senden nicht wir da zuerst das Hello und wissen von dem andern nix außer der IP Adresse? Wie sollen wir da was emulieren?
Ist es nicht so, dass vom Server bereits mit der IP auch die Software des Clients, also was/wer anfragen will, mitgeteilt wird? Wenn ja, dann weiss der eigene Client ja bereits vor der direkten Anfrage schon mit was/wem er es zu tuen hat und kann direkt als "emulierter Client" antworten. Oder teilt der Server nur eine IP mit und ich liege da falsch?

Shareaza Clients können doch nur über Server mit dem eD2K Netz komunizieren und nicht über KAD.

Xman 31. January 2007 19:05

Zitat:

Hmmm... vermutlich kann die verwendete Software schon irgendwie vorher festgestellt werden. Vielleicht kann aber auch beim ersten Mal ein eMule Hello gesendet und erst danach betrogen werden. Könnte ja sein, dass die Clients sich noch im Nachhinein verarschen lassen oder so.
der ganze emulieren-Quark beruht auf den Userhash. emules benutzen z.b. einen anderen Hash als MLDonkeys. (ein bestimmter Wert an einer bestimmten Stelle). Weiß ich den Userhash schon vorher, so weiß ich auch den Clienttyp. Der Userhash wird allerdings erst neuerdings übermittelt da er für Obfuscation gebraucht wird.
Später kann ich auch den Userhash nicht mehr wechseln (zu einem MLDonkey z.b.) da wrde ich ja wegen Hashwechsel gebannt.

Also mit anderen Worten: das ganze Feature ist Nonsence! Bringt nix, höchstens Probleme.

Tom-XT 31. January 2007 19:23

Wenn ich Dich jetzt richtig verstanden habe, heisst das, einmal zum z.B. MLDonkey "verkleidet" erscheine ich für alle anderen Clients als eben dieser. Deaktiviere ich dann wärend der Session die Emulation ändere ich damit meinen Userhash und bin sozusagen raus aus dem Netz, werde von nahezu alle anderen Clients gebannt.

Anders ausgedrückt ich kann die Emulation wenn dann nur immer sessionbezugen nutzen.
Da sich ja dabei der Userhash ändert verliere ich zudem auchnoch jedesmal alle Credits.

Hmm, dann ist's eine nicht gerade brauchbare Option.

Xman 31. January 2007 22:21

Zitat:

Wenn ich Dich jetzt richtig verstanden habe, heisst das, einmal zum z.B. MLDonkey "verkleidet" erscheine ich für alle anderen Clients als eben dieser.
nee, das sagte ich nicht. Was ich zum Ausdruck bringen wollte: wenn Du Dich gegenüber einem bestimmten Client als bestimmter client ausgegeben hast, dann kannst Du danach nicht mehr wechseln, da Du sonst ja nicht nur Deine Credits verlieren würdest sondern evtl. auch noch nen Bann kasieren.

Tom-XT 31. January 2007 22:55

Naja, wenn ich mich z.B. als MLDonkey ausgebe, damit meinen Userhash modifiziert habe, dann doch gegenüber allen Clients, oder nicht? Oder generiert der Mod mehrere Hashes und übermittelt den anderen Clients den jeweils zu ihnen passenden Userhash?

Folglich, wenn ich jetzt wärend einer Session meine Scheinidentität auflöse (meinen Userhash wieder ändere) dann doch auch wiederum gegenüber allen Clients.

Damit wäre das was ich geschrieben habe doch nur die logische Folge aus deinen Ausführungen. :wink:
Oder stehe ich jetzt irgendwo auf dem Schlauch.

Xman 31. January 2007 22:58

es werden je nach Clienttyp ja nur 1 bis 2 Stellen im Userhash geändert. Und wenn er eben einem MLDonky gegenübersteht ändert er diese Stellen auf MLDonkey. Und da kommen wir zurück zum Ausgangsproblem: was wenn wir den Userhash (und damti clienttyp) des anderen noch gar nicht kennen ? Dann funktioniert eben dieses Emulieren nicht mehr.

Tom-XT 31. January 2007 23:06

Dann liegt da der Knackpunkt, er modifiziert also erst dann wenn er die Komunikation mit dem Gegenüber beginnt. Das kann ja dann nur im Chaos enden.

Ich hatte es so verstanden, dass der Client bereits beim aktivieren des Emulationsmodus seinen Hash ändert.

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 17:11 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