Note: This forum is merely an archive. It is no longer possible to register or post. - StackOverflow
New Ace of Spades Forums: http://buildandshoot.com/

Protocol change for antihack purposes

Got a great new idea for the game?

Protocol change for antihack purposes

Postby GreaseMonkey » Fri Dec 30, 2011 2:21 am

Let's take a look at a few things.

The "on shot" packet has the following information:
- Player ID
- Body part hit

Which means we can't work out where the shot is from, and thus we simply cannot detect nospread / norecoil hacks.
On top of that, rapidfire detection is less effective than it could be, as we only get this notification when someone actually gets hit. Finally, without a vis check, OPK (One Position Killing) is more lethal than an aimbot.

I propose that a "pallets fired" message could be used instead with the information here:
- Player position vector
- Old player orientation vector (pre-recoil)
- New player orientation vector (post-recoil)
- Spread/recoil seed
- Pallet count

Admittedly, this would require a bit more bandwidth use, but should only be necessary on the client -> server side. Then a "player shot another player" message could be broadcast to everyone (including the original player).

With this, however, the server is now ultimately responsible for hit detection. I view this as a good thing, as it completely eliminates OPK (but not aimbots). Lag compensation would be required, though (logging the last 3 seconds of each player should do the trick).

So what's this "seed" thing? It's basically a pseudorandom number to be used for spread/recoil calculation. Ultimately, it should just use that number to the power of let's say 5 as a seed for a linear congruential generator (like rand() except you define it yourself instead of relying on the libc). Then the seed is responsible for hit detection.

The server can force the player to use a seed by using a "set spread/recoil seed" packet, just in case there's a desync somewhere.
There's a couple of things to note...
- If the same seed is repeated over and over again, it's probably a crap attempt at an antispread.
- If the calculated pallet vectors appear to jerk much less than the player orientation, it's probably a good attempt at an antispread.

On top of that, the seed should be useful in the "detect if someone's doing an antirecoil" department. It won't be fully detectable with this (it could always be spoofed and reset) but if someone's orientation is barely jerking at all between each shot then it's quite likely there's no recoil.

Also, if shots are freakishy accurate (player- or pallet-orientationwise), then there's a fair chance that there's an aimbot there.

Finally, infinite ammo and rapid fire can be more easily and accurately detected, and your health / body is more likely to drop as soon as (if not before) you get hit.

Does this sound good?
GreaseMonkey
Bastion Member
 
Posts: 84
Joined: Tue Dec 13, 2011 10:14 pm
Location: ←        

Re: Protocol change for antihack purposes

Postby TheGeekZeke101 » Fri Dec 30, 2011 2:23 am

You lost me at "Lets take a look at a few things:".....
Image

Retired Member Missing In Action As Of 7/26/12
User avatar
TheGeekZeke101
Member
 
Posts: 1105
Joined: Mon Dec 12, 2011 1:34 am
Location: Daniella's Basement

Re: Protocol change for antihack purposes

Postby tunaspirit » Fri Dec 30, 2011 10:11 am

I don`t really understand this entirely, but enough to think that Ben would, also

tunaspirit wrote:+1
I approve.
[18:33] <+boolface> hey guys imma releqase 0.76 now
[18:34] <+Ethoslab> TheGrandmaster hey do you have any idea when updates gona come
[18:34] <+gen_applejack> now
[18:34] <+gen_applejack> as boolface told us
User avatar
tunaspirit
Member
 
Posts: 594
Joined: Wed Dec 28, 2011 10:17 am
Location: The Matrix

Re: Protocol change for antihack purposes

Postby Gorman » Fri Dec 30, 2011 1:47 pm

mat^2 said he is working on hit verification for ranged weapons, so let's have a look what he has done first. Vanilla has ranged hit verification already.

This code *could* eliminate OPK but only in its current form. Be aware that it would be trivial to fake the orientation vector, since we already have the calculations done in the aimbot so it's nothing new.

In order to beat this system you would have to calculate a valid shooting position then send the shot. However, at the moment rubber banding is just that, rubber banding. So if we can shoot from anywhere it is fairly trivial. On the other hand if we decide to be undetectable in terms of teleporting, it is only marginally less trivial to check for valid shooting positions within a 3 block radius. Plus then we have to consider how tolerant the hit validation is to lag etc (however if we are sending position then we only have to care about the target's position (perhaps you should consider adding the target's position vector to the packet).

Pallet count shouldn't be necessary since each bullet is separate right? We can just detect when multiple bullets are fired simultaneously.
Image
User avatar
Gorman
[LDR] Member
 
Posts: 1170
Joined: Sat Dec 10, 2011 9:10 pm

Re: Protocol change for antihack purposes

Postby GreaseMonkey » Fri Dec 30, 2011 8:32 pm

It could be good having pallet count in there as sucker bait: if someone decides to change the pallet count, not only will it not actually do anything, but also the server could kick them anyway.

Nevertheless, it's a bit redundant, as both the client and the server have the weapon struct, and at the end of the day, the server makes the rules. But each pallet should not have individual shot messages - that way we can save bandwidth.

If one attempts to use ARB to fire a shot, the shot position could be rubberbanded itself, and also trigger an automated kick if necessary.

EDIT: Just had an excellent idea. Maybe the antihack shouldn't be implemented immediately. That way, if someone update's Hooch's aimbot, we can implement something to cheap-kick it off the server.
GreaseMonkey
Bastion Member
 
Posts: 84
Joined: Tue Dec 13, 2011 10:14 pm
Location: ←        

Re: Protocol change for antihack purposes

Postby PXYC » Sat Dec 31, 2011 12:17 am

That's a really good idea, and I think that it would allow for much better anti-hack programs to be made. +1
Image

<+laserlamp> lil b is my fav
User avatar
PXYC
Local Mod
 
Posts: 1068
Joined: Wed Dec 14, 2011 2:52 am
Location: Near Philadelphia, PA

Re: Protocol change for antihack purposes

Postby Stiivais » Sun Jan 01, 2012 2:17 pm

GreaseMonkey wrote:Admittedly, this would require a bit more bandwidth use, but should only be necessary on the client -> server side. Then a "player shot another player" message could be broadcast to everyone (including the original player).
Does this sound good?


Can we please not do this?
Really? (<i have a modem, limited bandwidth)

Can't we fix the votekick system instead?
The system which i suggest would be like this – anyone can “suggest” to kick someone (e.g. by typing /kick “Playername”), and once about 60% of players on one side have voted, the guy gets booted. Votes should have expire timer of about 4-10 minutes.

The one-side thing is to prevent teams of hackers, because, obviously, people on one team would get p*ssed off because of hackers on the other.
Also, if there would be griefers, which randomly kick other players, then THEY wouldnt have anyone to play against.

What's your opinion? In my head it seemed to work...
Image
Also: shutting up because i have caused some annoyances lately.
User avatar
Stiivais
Member
 
Posts: 428
Joined: Tue Dec 27, 2011 12:15 pm

Re: Protocol change for antihack purposes

Postby Gorman » Sun Jan 01, 2012 4:34 pm

Stiivais wrote:
GreaseMonkey wrote:Admittedly, this would require a bit more bandwidth use, but should only be necessary on the client -> server side. Then a "player shot another player" message could be broadcast to everyone (including the original player).
Does this sound good?


Can we please not do this?
Really? (<i have a modem, limited bandwidth)

Can't we fix the votekick system instead?
The system which i suggest would be like this – anyone can “suggest” to kick someone (e.g. by typing /kick “Playername”), and once about 60% of players on one side have voted, the guy gets booted. Votes should have expire timer of about 4-10 minutes.

The one-side thing is to prevent teams of hackers, because, obviously, people on one team would get p*ssed off because of hackers on the other.
Also, if there would be griefers, which randomly kick other players, then THEY wouldnt have anyone to play against.

What's your opinion? In my head it seemed to work...

My opinion is that you should post your own thread for your unrelated topic.
Image
User avatar
Gorman
[LDR] Member
 
Posts: 1170
Joined: Sat Dec 10, 2011 9:10 pm

Re: Protocol change for antihack purposes

Postby Stiivais » Sun Jan 01, 2012 7:11 pm

Gorman wrote:
Stiivais wrote:
GreaseMonkey wrote:Admittedly, this would require a bit more bandwidth use, but should only be necessary on the client -> server side. Then a "player shot another player" message could be broadcast to everyone (including the original player).
Does this sound good?


Can we please not do this?
Really? (<i have a modem, limited bandwidth)

Can't we fix the votekick system instead?
The system which i suggest would be like this – anyone can “suggest” to kick someone (e.g. by typing /kick “Playername”), and once about 60% of players on one side have voted, the guy gets booted. Votes should have expire timer of about 4-10 minutes.

The one-side thing is to prevent teams of hackers, because, obviously, people on one team would get p*ssed off because of hackers on the other.
Also, if there would be griefers, which randomly kick other players, then THEY wouldnt have anyone to play against.

What's your opinion? In my head it seemed to work...

My opinion is that you should post your own thread for your unrelated topic.


In my opinion, your opinion is completely unrelated to my "unrelated" topic, because i suggested something else INSTEAD, therefore my reply is related to the topic afterall...
Also, i DID make a separate topic xD

^this is how to handle angry people
Image
Also: shutting up because i have caused some annoyances lately.
User avatar
Stiivais
Member
 
Posts: 428
Joined: Tue Dec 27, 2011 12:15 pm

Re: Protocol change for antihack purposes

Postby USABxBOOYO » Mon Jan 02, 2012 5:34 pm

No, your post was off-topic and now you've derailed the thread. Congratulations.
User avatar
USABxBOOYO
Global Moderator
 
Posts: 2197
Joined: Sat Dec 10, 2011 12:38 pm


Return to Game



Who is online

Users browsing this forum: No registered users and 8 guests

cron