volkv

Autoban plugin for screenshots disconnects

Recommended Posts

Hey guys! How do you think is it possible to make a plugin which will ban hackers who disconnects right after screenshot request? I mean technically?

Share this post


Link to post
Share on other sites
1 hour ago, volkv said:

Hey guys! How do you think is it possible to make a plugin which will ban hackers who disconnects right after screenshot request? I mean technically?

Didnt somebody post a GSC implementation of this somewhere on this forum?
 

Share this post


Link to post
Share on other sites
3 minutes ago, Koaja said:

Didnt somebody post a GSC implementation of this somewhere on this forum?

Yes, it was me. But it doesn't work perfectly (one of the reasons is players entity doesn't instantly became undefined after disconnect, also there is a chance of false detection). So I had several unban requests and had to unban them cuz its far not 100%.

Or ofc better ask devs to give us us some good news about new client version with this stuff fixed :)

Share this post


Link to post
Share on other sites
Just now, volkv said:

Yes, it was me. But it doesn't work perfectly (one of the reasons is players entity doesn't instantly became undefined after disconnect, also there is a chance of false detection). So I had several unban requests and had to unban them cuz its far not 100%.

Or ofc better ask devs to give us us some good news about new client version with this stuff fixed :)

Okay fair enough :P Wasnt sure who posted it!

Share this post


Link to post
Share on other sites

+1 Would love to see a plugin made if possible.
I have seen an increase of players on our servers doing that. 

Share this post


Link to post
Share on other sites

The problem as volkv stated is that without further client-side modifications, we cannot know whether it was the player who disconnected or a program.
So i would call this not possible until client gets modded.

Share this post


Link to post
Share on other sites

I automated taking of screen shots of everyone every 15 minutes through a gsx script.

I do have a question about screenshots.

When I use $getss whoever  or all it shows on the bottom left waiting for a move to take screenshot from whoever or lists everyone in the server.

I am not sure is that is just a private message to me or the whole server sees it (I assume its just me)

when the automatic screenshot script I made takes a screen shot which it does every 15 minutes

there is no saying shown on the bottom left that its waiting to take the ss

I wonder if the cheat your talking about picks up that message and causes the disconnect.

Just a thought.

 

 

 

 

Share this post


Link to post
Share on other sites
1 hour ago, wkuzma said:

I do have a question about screenshots.

When I use $getss whoever  or all it shows on the bottom left waiting for a move to take screenshot from whoever or lists everyone in the server.

I am not sure is that is just a private message to me or the whole server sees it (I assume its just me)

It is just you.

The cheat intercept the command queue on the client. Since we did not update CoD4X for ages it is still working.

Share this post


Link to post
Share on other sites
2 hours ago, Kingwolf said:

So i would call this not possible until client gets modded.

Actually I got my detection scripts reworked and now it acts very well. What Ive got is:

  • exec getss right after damage_inflict event that always ensures fast (0.5 to 2 sec) screencapture call
  • logging first drop time and if its repeated within a week - exec permban (if we ban after first disconnect it has small chance (0.1%) of false detection, 2nd time is like 100%) (also not many people quit game while shooting enemy)
  • lifehack: if you exec permban within 1 second after client disconnects it will work ;)

Share this post


Link to post
Share on other sites

@volkv Thats very neat. My previous reply was not as well thought out.  A client update is due though to remove these pesky cheats like fraggy said.

Share this post


Link to post
Share on other sites
16 hours ago, Fraggy said:

Since we did not update CoD4X for ages ...

Bcuz you playing too much CS:GO :P:P:P:P:P:P

  • Haha 1

Share this post


Link to post
Share on other sites
On 3/6/2018 at 3:53 AM, volkv said:

Actually I got my detection scripts reworked and now it acts very well. What Ive got is:

  • exec getss right after damage_inflict event that always ensures fast (0.5 to 2 sec) screencapture call
  • logging first drop time and if its repeated within a week - exec permban (if we ban after first disconnect it has small chance (0.1%) of false detection, 2nd time is like 100%) (also not many people quit game while shooting enemy)
  • lifehack: if you exec permban within 1 second after client disconnects it will work ;)

I got my first taste of someone disconnect when ss was requested  he rejoined over and over and disconnected as each time I requested a ss of him (was testing to see if he disconnected after each ss and he did)

Volkv would you care to share your script?

Edited by wkuzma

Share this post


Link to post
Share on other sites

This is my fast and lazy implementation if anyone finds it useful

Pastebin link ( code box won't work wtf? )

You call secureScreen() once you request a screenshot from a player - example:

result = execex( "getss " + self getEntityNumber() );
	
if( !isSubStr( result, "Still" ) && !isSubStr( result, "Already" ) && !isSubStr( result, "Error" ) )
{
	self thread secureScreen( self getGuid() );
}

 

Personally I request a screenshot 5-10 seconds after first spawn, it drops the cheaters before they can even cheat and flagging them at the same time.

Edited by leiizko
  • Like 1

Share this post


Link to post
Share on other sites

Here's mine implementation.

in globallogic after if ( isAlive( attacker ) ) put

attacker notify("killedPlayer");

thread getSS() in the end of globallogic's spawnPlayer()

if (!isDefined(self.gotSS)) {
self thread volkv\ss::getSS();
}

volkv\ss.gsx :

getSS() {
	level endon ( "game_ended" );

	self endon("death");
	self endon("disconnect");

	self notify("getss");
	self endon("getss");

	self waittill("killedPlayer");

	exec("getss " + self getGuid());
	self thread checkforquit(self getGuid(), self.name, self GetEntityNumber());
	self.gotSS = true;
}

checkforquit(guid,name,entnumber) {
	self thread stopwait();
	
	self notify("stopwait");
	self endon("stopwait");
	
	self waittill ( "disconnect" );
	exec("permban " + guid + " chams");
}

stopwait() {
	self endon("disconnect");
	wait 1.5;
	self notify("stopwait");
}

 

Share this post


Link to post
Share on other sites

Thank you for posting the script

looking at this part is somewhat confusing to me thread getSS() in the end of globallogic's spawnPlayer()

can you post a few lines before the end globallogic's spawnPlayer() so I know exactly where to put the thread?

I found the spawnplayer() part but am having trouble finding the end of it

Edited by wkuzma

Share this post


Link to post
Share on other sites
3 hours ago, wkuzma said:

I found the spawnplayer() part but am having trouble finding the end of it

there are opening brace { and closing one } indicating the end of spawnplayer() function

put a code just before a closing one

upd: between these braces - https://github.com/volkv/CoD4-Default-GSC-Scripts/blob/master/maps/mp/gametypes/_globallogic.gsc#L737-L738

Edited by volkv

Share this post


Link to post
Share on other sites
On 5/3/2018 at 4:18 PM, volkv said:

Here's mine implementation.

in globallogic after if ( isAlive( attacker ) ) put


attacker notify("killedPlayer");

thread getSS() in the end of globallogic's spawnPlayer()


if (!isDefined(self.gotSS)) {
self thread volkv\ss::getSS();
}

volkv\ss.gsx :


getSS() {
	level endon ( "game_ended" );

	self endon("death");
	self endon("disconnect");

	self notify("getss");
	self endon("getss");

	self waittill("killedPlayer");

	exec("getss " + self getGuid());
	self thread checkforquit(self getGuid(), self.name, self GetEntityNumber());
	self.gotSS = true;
}

checkforquit(guid,name,entnumber) {
	self thread stopwait();
	
	self notify("stopwait");
	self endon("stopwait");
	
	self waittill ( "disconnect" );
	exec("permban " + guid + " chams");
}

stopwait() {
	self endon("disconnect");
	wait 1.5;
	self notify("stopwait");
}

 

in NE icnt find thread getSS() in the end of globallogic's spawnPlayer()  thile line can you help me?

Share this post


Link to post
Share on other sites

@volkv im using your auto ss scripts also so i rename this a s ass and save its now my questions is 

when its get ss (your auto ss) its work for this scripts?

Share this post


Link to post
Share on other sites
On 5/2/2018 at 1:03 AM, leiizko said:

This is my fast and lazy implementation if anyone finds it useful

Pastebin link ( code box won't work wtf? )

You call secureScreen() once you request a screenshot from a player - example:


result = execex( "getss " + self getEntityNumber() );
	
if( !isSubStr( result, "Still" ) && !isSubStr( result, "Already" ) && !isSubStr( result, "Error" ) )
{
	self thread secureScreen( self getGuid() );
}

 

Personally I request a screenshot 5-10 seconds after first spawn, it drops the cheaters before they can even cheat and flagging them at the same time.

how to use this ?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.