Latest Posts

Topic: I've discovered a cheater

einstein13
Avatar
Joined: 2013-07-29, 00:01
Posts: 1116
Ranking
One Elder of Players
Location: Poland
Posted at: 2020-09-28, 16:11

niektory wrote:

such file check would be fairly easy to fool if one wanted to bypass it.

Yes and no. It mostly depends how it would be done.

If you load all LUA files into RAM, then calculate hash(es), and then - if needed - use the scripts in the game, then it is not very easy to bypass. You have to modify RAM to change the game. But to be honest, it would be easier just to full the game itself if you know how to modify RAM. face-smile.png
Unfortunately this solution is RAM-expensive and I am not sure if it is the best idea with our state of the game. Plus I don't know how the game is using LUA files right now.

If you don't load LUA files, only when needed - then it is quite easy to fool the game. You just have a program that will switch necessary LUA files on your side after connecting to the metaserver lobby (after calculating hash(es)).


einstein13
calculations & maps packages: http://wuatek.no-ip.org/~rak/widelands/
backup website files: http://kartezjusz.ddns.net/upload/widelands/

Top Quote
Nordfriese
Avatar
Joined: 2017-01-17, 18:07
Posts: 2057
OS: Debian Testing
Version: Latest master
Ranking
One Elder of Players
Location: 0x55555d3a34c0
Posted at: 2020-09-28, 17:42

Since lua files can include other lua files from almost anywhere we'd probably need to calculate hashes for all *.lua files in the entire datadir, including all the init.luas and register.luas, which is extremely memory- and performance-hungry. But even if we do that, a possible cheater could still use the debug console, or just hardcode some change in C++ and fake the version number. If we want to make Widelands cheating-proof it will just end up as a cat-and-mouse game we cannot win, which is definitely not what we want.

Some simple and efficient checks to guard against some common issues like simple file modifications (whether accidental or on purpose) could be nice to have, but we will never make cheating impossible and should not spend much effort on this. Indeed, I believe that if we claim to implement a great anti-cheating system it might just make people think, What, you think cheating is impossible now, I'll soon prove you wrong. Also, let's not forget that accusations of cheating are (thankfully!) very rare around here so it's not super-important.

On the whole, I think that discussing one (!) incident of supposed cheating at large just makes the topic seem more important, and the community less trustworthy, than it really is.


Top Quote
WorldSavior
Avatar
Topic Opener
Joined: 2016-10-15, 04:10
Posts: 2128
OS: Linux
Version: Recent tournament version
Ranking
One Elder of Players
Location: Germany
Posted at: 2020-10-02, 18:10

Nordfriese wrote:

Since lua files can include other lua files from almost anywhere we'd probably need to calculate hashes for all *.lua files in the entire datadir, including all the init.luas and register.luas, which is extremely memory- and performance-hungry. But even if we do that, a possible cheater could still use the debug console, or just hardcode some change in C++ and fake the version number. If we want to make Widelands cheating-proof it will just end up as a cat-and-mouse game we cannot win, which is definitely not what we want.

I mostly agree. At the other hand, additional barriers which make cheating harder could make sense. When they consume too much resources they are probably not worth the effort, though.

kaputtnik wrote:

Thanks einstein13 for your words!

I think this discussion leads to nothing, because no one can prove both assertions:

  1. the-x said he told to WorldSavior that he wants to test new starting conditions (probably by modifying some files)
  2. WorldSavior said he didn't know that the-x wants to test new starting conditions

At the other hand: I've already posted a lot of indications. (for example here: https://www.widelands.org/forum/post/34718/ )

If things can be juristically proven, then this issue might be proven as well.

No one in this forum can prove those assertions. So this is a dead thread.

I don't think so

I can even show additional prove:

  • in the game of the attachement you can see that the-x tried to cheat, but it didn't work because I hosted that one. If we were testing his own starting conditions, why didn't he say something like: "stop, it didn't work" ? or before: "I have to host"? You can see that it's certainly not a regular desync, because it happened exactly when the iron dropped to zero, just like in the other matches.

  • the starting conditions of the-x contain additional soldiers for barbarians, but that was not the case in the match (regular 45 soldiers have been in theere, not more). In the match was also no additional beer or bread for frisians:

}, soldiers = { [{0,0,0,0}] = 58, }

beer = 16,

bread_frisians = 28,

  • why would i even accuse my buddy the-x falsely as cheater? Would he want to play again with me then?

  • He arguments that I cannot stand losses and am lying because of that, but I've won the three matches and he seems to be unable to prove that there was a loss.

  • Some may have noticed it: Elefantenrennen accused the-x also as cheater (very similar story), but then the post has been removed again. Can the admins still see this post somewhere? (League Thread). Elefantenrennen informed me also about this via PM. Why should accuse Elefantenrennen his buddy and teammate falsely as cheater?

einstein13 wrote:

WorldSavior wrote:

I didn't insult you, I just told some facts.

Not exactly, WorldSavior. Telling that somebody is a cheater in some cultures is very insulting. In your position, better is to ask "Is it a cheating?" instead of "I've discovered a cheater".

I don't see why I should ask when I'm sure.

Is it a good idea to do so? I thought that better approach is to ask The-X to explain what that was.

I asked him directly and he confirmed that it was cheating.

And not to judge directly in the first sentence. And instead of ping-pong of different accusations from both of you, say "sorry" for misunderstanding situation, forgive and go with peace?

We'll see, but I'm not the one who should apologize first.

Maybe one of you misunderstood the second one and that is why this situation happened? (just my speculations here)

As I said: No.

And the last thing: if you don't like the way the one is playing, why are you playing with him/her anyway?

I didn't know that he cheats before I discovered it.


Attachment:
TriedToCheatButFailed.zip (407.2 KB)

Wanted to save the world, then I got widetracked

Top Quote
kaputtnik
Avatar
Joined: 2013-02-18, 20:48
Posts: 2552
OS: Archlinux
Version: current master
Ranking
One Elder of Players
Location: Germany
Posted at: 2020-10-02, 21:22

As i mentioned here the week is over and this topic is closed now.


Top Quote