[Release] Login any account / out player fix

10/05/2017 00:25 Pumaaa#1
Send PACKETTYPE_JOIN with idPlayer of target.

-> player outed.

I do apologize for not having tested the stuff I described here.
10/05/2017 01:25 pbben15#2
sorry if this is kinda OT
but do you have an idea what is the fix for this?

Quote:
Originally Posted by pbben15 View Post
DatabaseServer.exe auto crash every like 1-2 hours but before only occurs only once a day. please help :(

btw I'm using Illumine Source.
[Only registered and activated users can see links. Click Here To Register...]
10/05/2017 02:46 Pumaaa#3
Quote:
Originally Posted by pbben15 View Post
sorry if this is kinda OT
but do you have an idea what is the fix for this?



btw I'm using Illumine Source.
[Only registered and activated users can see links. Click Here To Register...]
Assuming the "memory used" stuff is bytes (3610558464)
You're very close to the 3.7gb limit even with compiling [Only registered and activated users can see links. Click Here To Register...].

I assume there's a memory leak in your databaseserver.

A very common mistake is that LPDB_OVERLAPPED_PLUS lpDBOP is not freed using FreeRequest( lpDBOP );

ALL control paths( even on error ) should do this before returning.

If you have new code that does database actions, you should check them.

That these frequent memory logs even exist show evidence that the former creator of the source also had problems of this kind.
10/07/2017 10:24 Wanetrain#4
Endlich! Es kommt mal einer da drauf. :)

Ich habe solange gewartet bis es mal einer entdeckt, ja deine Hypothese ist richtig, man kann ohne den richtigen Account jeden X beliebigen Spieler spielen, braucht hierzu nicht mal zwingend die DPID, des weiteren kann man auch jeden Spieler Kicken ohne Probleme.

Dies habe ich damals im Zuge des "Fukk'iT" Hacks was ich mit Clemi entwickelt habe vor paar Jahren herausgefunden und erfolgreich getestet. Man braucht im großen und ganzen nur das Know How wie man an die Spieler ID's kommt und das ist nicht all zu schwer.

Btw du kannst auch bei jedem Spieler eine Message Aufploppen lassen über das "Blocked" System also wo du Chat Nachrichten ausmachst und co, das nervt dann ziemlich. :D

Mfg
10/12/2017 11:10 FlyffServices#5
Hallo,

leider klappt dieser Hack so wie geschildert nicht.
Du müsstest die dwAuthKey variable Bruteforcen/zurückrechnen (was nicht geht). Dies geht aber auch nur bei Accounts die bereits eingeloggt sind. Der Account wird als pre-login markiert beim normalen login (wo auch das passwort verifiziert wird) und ist dann erst zum Login in den WorldServer freigeschalten.

Ansonsten könntest du dich einfach vom CacheServer an in deinen Account einloggen und somit einen Ban bypassen.
10/13/2017 23:24 Pumaaa#6
Du brauchst den authkey nicht um das Packet zu faken.

Wenn du den accountname weißt kannst du loginauthority von einem anderen account übertragen.

Wenn du accountname + playerid eines chars weißt kannst du einen Login faken.
10/14/2017 16:02 Pumaaa#7
Quote:
Originally Posted by FlyffServices View Post
Hallo,

bist du dir sicher? Ich hab diese Methode schon vor Jahren rauf und runter getestet und dort war nie etwas möglich.

Wenn man wie du sagst PACKETTYPE_JOIN an den CacheServer sendet greift die Funktion
CDPCacheSrvr::OnAddConnection
in der Datei
CacheServer/DPCacheSrvr.cpp

So wie du es schilderst "man sendet einfach das Join Packet an den Cacheserver der es an den Worldserver weiterleitet und der arme ahnungslose weis nicht wie im geschieht" das passiert sowieso. Der Client sendet IMMER das Join packet an den CacheServer.


Hast du das überhaupt mal getestet? Also nicht mit deinen verbuggten Imaginarum files sondern mit einer bugfreieren cleanen Source.



Ok das erklärst du mir mal wie das erfolgreich getestet wurde. Danke werde dann einen Besen fressen.
Den Besen musst du wohl fressen.

Aber was du gesagt hast ist teilweise richtig. Mir ist ein Fehler unterlaufen, der oben genannte Fix sorgt nur dafür dass man Player nicht mehr outen kann.


Wie oben angemerkt, habe ich es eben nicht getestet.
Daher, 1. post edited.
10/14/2017 17:49 Blouflash#8
Quote:
Originally Posted by Pumaaa View Post
Den Besen musst du wohl fressen.

Aber was du gesagt hast ist teilweise richtig. Mir ist ein Fehler unterlaufen, der oben genannte Fix sorgt nur dafür dass man Player nicht mehr outen kann.


Wie oben angemerkt, habe ich es eben nicht getestet.
Daher, 1. post edited.
Ich weiß ja nicht was bei dir in der Source abgeht aber dein out fix bringt absolut nichts.

1. Wird das PACKETTYPE_LEAVE nur intern geschickt.
[Only registered and activated users can see links. Click Here To Register...]
2. Wird man anhand von der dpid gekickt und nicht anhand der playerID
Code:
void CDPCoreClient::OnLeave( CAr & ar, DPID dpid )
{
	CMclAutoLock	Lock( CPlayerMng::Instance()->m_AddRemoveLock );

	DWORD dwSerial;
	ar >> dwSerial;
	CPlayer* pPlayer = CPlayerMng::Instance()->GetPlayerBySerial( dwSerial );  // dpid°¡ serial¹øÈ£ÀÌ´Ù.
	if( pPlayer )
		g_DPCacheSrvr.DestroyPlayer( dpid );
}
3. Wenn der Client das PACKETTYPE_LEAVE an den Cacheserver schickt wird
Code:
g_DPClientArray.SendToServer( idFrom, lpMsg, dwMsgSize );
getriggert und dadurch kommste hier raus:
Code:
void CDPSrvr::OnRemoveUser( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long )
{
	g_UserMng.RemoveUser( (DWORD)dpidUser ); 
}
11/04/2017 20:14 KOPP92i#9
Quote:
Originally Posted by Pumaaa View Post

Wenn du accountname + playerid eines chars weißt kannst du einen Login faken.
Yeah and without any problem if admin doesn't fix it.
-login from any account
-before char select change the string of your acc to another acc you want to out.
-go to char selection --> player out..

the fix isn't hard at all , if someone need it pm me i'll give it for free
11/06/2017 10:23 elitemember21#10
Quote:
Originally Posted by KOPP92i View Post
Yeah and without any problem if admin doesn't fix it.
-login from any account
-before char select change the string of your acc to another acc you want to out.
-go to char selection --> player out..

the fix isn't hard at all , if someone need it pm me i'll give it for free
Can you share it?