[Mod] anticheat [anticheat]

User avatar
rnd
Member
 
Posts: 220
Joined: Sun Dec 28, 2014 12:24
GitHub: ac-minetest
IRC: ac_minetest
In-game: rnd

Re: anticheat

by rnd » Thu Aug 24, 2017 12:06

what is dat?! WDaFk is dat?!!

https://www.youtube.com/watch?v=5NP8y63Ms4o
1EvCmxbzl5KDu6XAunE1K853Lq6VVOsT
 

User avatar
ManElevation
Member
 
Posts: 896
Joined: Tue Aug 02, 2016 22:04
Location: Madrid,Spain
GitHub: ManElevation
IRC: ManElevation
In-game: ManElevation

Re: anticheat

by ManElevation » Thu Aug 24, 2017 12:32

rnd wrote:
what is dat?! WDaFk is dat?!!

https://www.youtube.com/watch?v=5NP8y63Ms4o

.......
My Public Mods! Discord: Rottweiler Games#3368
 

User avatar
azekill_DIABLO
Member
 
Posts: 7490
Joined: Wed Oct 29, 2014 20:05
Location: OMICRON
GitHub: azekillDIABLO
In-game: azekill_DIABLO
 

Byakuren
Member
 
Posts: 816
Joined: Tue Apr 14, 2015 01:59
GitHub: raymoo
IRC: Hijiri
In-game: Raymoo + Clownpiece

Re: anticheat

by Byakuren » Sat Aug 26, 2017 06:18

Linuxdirk wrote:
Naj wrote:
azekill_DIABLO wrote:it's open source, it' under LGPL and you can find the public repo here : https://github.com/ac-minetest/anticheat/

Sources of "anticheat_routines.bin" are not distributed. It can't be called open source.

Exactly. It still violates the GPL terms.

It's been mentioned already in the thread, but it's not a GPL violation because rnd is the copyright author, he wasn't licensed the code to him under the GPL.

As for obfuscation stuff, surely most people here agree (correct me if I am wrong) that the philosophical reasons for "open-source" include encouraging the study of the code or modification of the code. Obfuscation's purpose is to make it harder to study or modify the code, so that seems pretty directly opposed. If those principles don't include study or modification, I am curious to see what those principles are that are still useful. If "open-source" really is broad enough to not include those then rms was right about the naming being a mistake.
Every time a mod API is left undocumented, a koala dies.
 

red-001
Member
 
Posts: 205
Joined: Tue Jan 26, 2016 20:15
GitHub: red-001
IRC: red-001

Re: anticheat

by red-001 » Thu Aug 31, 2017 20:10

Oh this is ridicules, I would recommend not using this mod as the author is deliberately trying to obfuscate what thier code is doing and requiring people to disable minetest security features but seriously decompiling the script and posting it here (perfectly legal according to the licensee the author chose) would be way faster and probably more productive then the discussion you are having, at least it would prove that compiling to bytecode is a poor form of obfuscation.
 

User avatar
ExeterDad
Member
 
Posts: 1717
Joined: Sun Jun 01, 2014 20:00
Location: New Hampshire U.S.A
In-game: ExeterDad

Re: anticheat

by ExeterDad » Thu Aug 31, 2017 20:33

I have no problem running his code no questions asked. He is a well known and trusted person. His name is on the line here. And his reason for hiding the "brains" of this mod is valid.
If you want to use it, use it and be happy with the free solution he has provided. If you don't want to use it, just move on and let this thread be for support rather than debate.
 

User avatar
rnd
Member
 
Posts: 220
Joined: Sun Dec 28, 2014 12:24
GitHub: ac-minetest
IRC: ac_minetest
In-game: rnd

Re: anticheat

by rnd » Fri Sep 01, 2017 10:00

Im not regretting the obfuscation - just the responses are worth all of it - educational/hilarious. Just shows most people who pretend to be "experts" are just too lazy to do the work of learning how stuff works/checking stuff and trust "authority" instead - but they have no problem playing "experts" on stuff they dont really understand.

I think i got enough "insight" from comments now and will now disclose the source for anticheat - not that it will help cheaters since checks are randomized (yup, you all got trolled for the sake of me having fun reading forum responses).

anticheat_source.lua
Code: Select all
-- DO NOT INCLUDE THIS WITH SOURCES
-- THIS will produce anticheat_routines.bin.

-- instructions:
-- 1. uncomment in init.lua around line 80:
-- dofile(minetest.get_modpath("anticheat").."/anticheat_source.lua")
-- just run server and .bin is generated. Then comment it again.

-- how to use in code(already done):
--   local anticheat_routines=loadfile(minetest.get_modpath("anticheat").."/anticheat_routines.bin")
--   check_noclip, check_fly, check_player = anticheat_routines(minetest,cheat);

local anticheat_routines = function(minetest,cheat, CHECK_AGAIN, punish_cheat)

   -- DETAILED NOCLIP CHECK
   local check_noclip = function(pos)
      local nodename = minetest.get_node(pos).name;
      local clear=true;
      if nodename ~= "air" then  -- check if forbidden material!
         clear = cheat.nodelist[nodename]; -- test clip violation
         if clear == nil then clear = true end
      end
      
      if not clear then -- more detailed check
         local anodes = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y+1, z=pos.z+1}, {"air"});
         if #anodes == 0 then return false end
         clear=true;
      end
      return clear;
   end

   -- DETAILED FLY CHECK
   local check_fly = function(pos) -- return true if player not flying
      local fly = (minetest.get_node(pos).name=="air" and minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name=="air"); -- prerequisite for flying is this to be "air", but not sufficient condition
      if not fly then return true end;
      
      local anodes = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, {"air"});
      if #anodes == 18 then -- player standing on air?
         return false
      else
         return true         
      end
   end


   local round = function (x)
      if x > 0 then
         return math.floor(x+0.5)
      else
         return -math.floor(-x+0.5)
      end
   end

   --main check routine
   local check_player = function(player)

      local name = player:get_player_name();
      local privs = minetest.get_player_privs(name).kick;if privs then return end -- dont check moderators
      if cheat.watcher[name] then return end -- skip checking watchers while they watch
      
      local pos = player:getpos(); -- feet position
      pos.x = round(pos.x*10)/10;pos.z = round(pos.z*10)/10; -- less useless clutter
      pos.y = round(pos.y*10)/10; -- minetest buggy collision - need to do this or it returns wrong materials for feet position: aka magic number 0.498?????228
      if pos.y<0 then pos.y=pos.y+1 end -- weird, without this it fails to check feet block where y<0, it checks one below feet
      
      local nodename = minetest.get_node(pos).name;
      local clear=true;
      if nodename ~= "air" then  -- check if forbidden material!
         clear = cheat.nodelist[nodename]; -- test clip violation
         if clear == nil then clear = true end
      end
      
      local fly = (nodename=="air" and minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name=="air"); -- prerequisite for flying, but not sufficient condition

      if cheat.players[name].count == 0 then -- player hasnt "cheated" yet, remember last clear position
         cheat.players[name].clearpos = cheat.players[name].lastpos
      end

      
      -- manage noclip cheats
      if not clear then -- player caught inside walls
         local moved = (cheat.players[name].lastpos.x~=pos.x) or (cheat.players[name].lastpos.y~=pos.y) or (cheat.players[name].lastpos.z~=pos.z);
         if moved then -- if player stands still whole time do nothing
            if cheat.players[name].count == 0 then cheat.players[name].cheatpos = pos end -- remember first position where player found inside wall
            
            
            if cheat.players[name].count == 0 then
               minetest.after(CHECK_AGAIN,
                  function()
                     cheat.players[name].count = 0;
                     if not check_noclip(pos) then
                        punish_cheat(name)-- we got a cheater!
                     else
                        cheat.players[name].count = 0; -- reset
                        cheat.players[name].cheattype = 0;
                     end
                  end
               )
            end
            
            if cheat.players[name].count == 0 then -- mark as suspect
               cheat.players[name].count = 1;
               cheat.players[name].cheattype = 1;
            end

         end
      end
      
      -- manage flyers
      if fly then

         local fpos;
         fly,fpos = minetest.line_of_sight(pos, {x = pos.x, y = pos.y - 4, z = pos.z}, 1); --checking node maximal jump height below feet
         
         if fly then -- so we are in air, are we flying?
            
            if player:get_player_control().sneak then -- player sneaks, maybe on border?
               --search 18 nodes to find non air
               local anodes = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y-1, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, {"air"});
               if #anodes < 18 then fly = false end
            end   -- if at this point fly = true means player is not standing on border
         
            if pos.y>=cheat.players[name].lastpos.y and fly then -- we actually didnt go down from last time and not on border

               -- was lastpos in air too?
               local lastpos  =  cheat.players[name].lastpos;
               local anodes = minetest.find_nodes_in_area({x=lastpos.x-1, y=lastpos.y-1, z=lastpos.z-1}, {x=lastpos.x+1, y=lastpos.y, z=lastpos.z+1}, {"air"});
               if #anodes == 18 then fly = true else fly = false end
               
               if fly then -- so now in air above previous position, which was in air too?
               
                  if cheat.players[name].count == 0 then cheat.players[name].cheatpos = pos end -- remember first position where player found "cheating"
                  
                  if cheat.players[name].count == 0 then
                     minetest.after(CHECK_AGAIN,
                        function()
                           cheat.players[name].count = 0;
                           if not check_fly(pos) then
                              punish_cheat(name)-- we got a cheater!
                           else
                              cheat.players[name].count = 0;
                              cheat.players[name].cheattype = 0;
                           end
                        end
                     )
                  end
            
                  if cheat.players[name].count == 0 then -- mark as suspect
                     cheat.players[name].count = 1;
                     cheat.players[name].cheattype = 2;
                  end
               end
               
            end
            
         end
      end

      cheat.players[name].lastpos = pos
   end

return check_noclip, check_fly, check_player;
   
end

-- this produces compiled version of source
local out = io.open(minetest.get_modpath("anticheat").."\\anticheat_routines.bin", "wb");
local s = string.dump(anticheat_routines);
out:write(s);
out:close()


I expect all those "experts" to be very LOUD now and keep explaining how "potentially malicious" my code is

This all explains it - this kind of ignorant, fake expert, lazy attitude = "Trump 2020!" :)
1EvCmxbzl5KDu6XAunE1K853Lq6VVOsT
 

User avatar
azekill_DIABLO
Member
 
Posts: 7490
Joined: Wed Oct 29, 2014 20:05
Location: OMICRON
GitHub: azekillDIABLO
In-game: azekill_DIABLO

Re: anticheat

by azekill_DIABLO » Fri Sep 01, 2017 13:09

There was no problem, actually. WHy no one watched the code (me inclued)?
 

sofar
Developer
 
Posts: 2086
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: anticheat

by sofar » Fri Sep 01, 2017 16:04

rnd wrote:Im not regretting the obfuscation - just the responses are worth all of it - educational/hilarious. Just shows most people who pretend to be "experts" are just too lazy to do the work of learning how stuff works/checking stuff and trust "authority" instead - but they have no problem playing "experts" on stuff they dont really understand.

I think i got enough "insight" from comments now and will now disclose the source for anticheat - not that it will help cheaters since checks are randomized (yup, you all got trolled for the sake of me having fun reading forum responses).


Just for the sake of openness, can you post the password to the encrypted zip file, so we can at least verify that the file you posted before actually contains the same source, and you haven't changed a few bits here or there?
 

Byakuren
Member
 
Posts: 816
Joined: Tue Apr 14, 2015 01:59
GitHub: raymoo
IRC: Hijiri
In-game: Raymoo + Clownpiece

Re: anticheat

by Byakuren » Sat Sep 02, 2017 03:43

Nobody was claiming that you included malicious code, only that you could have done it. Now that you've revealed the code, people can see it and verify that there isn't anything malicious. Everything is working as intended.
Every time a mod API is left undocumented, a koala dies.
 

sofar
Developer
 
Posts: 2086
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: anticheat

by sofar » Sat Sep 02, 2017 05:02

Byakuren wrote:Nobody was claiming that you included malicious code, only that you could have done it. Now that you've revealed the code, people can see it and verify that there isn't anything malicious. Everything is working as intended.


Not entirely, because he has posted several revisions of the file online and it's entirely possible that some of them contained malicious code before:

https://github.com/ac-minetest/antichea ... utines.bin

So for the sake of openness, I strongly suggest not to take rnd's word for it, and always verify yourself that you're not running untrusted code. Especially from people who give you semi- or not obfuscated binaries.
 

red-001
Member
 
Posts: 205
Joined: Tue Jan 26, 2016 20:15
GitHub: red-001
IRC: red-001

Re: anticheat

by red-001 » Sat Sep 02, 2017 14:15

could someone try and verify if the code posted is indeed the code used to compile the binary?
 

User avatar
rnd
Member
 
Posts: 220
Joined: Sun Dec 28, 2014 12:24
GitHub: ac-minetest
IRC: ac_minetest
In-game: rnd

Re: anticheat

by rnd » Fri Sep 08, 2017 08:27

UPDATE:
- first post
- improved "code readability" - aka no more binary

Byakuren: Nobody was claiming that you included malicious code, only that you could have done it. Now that you've revealed the code, people can see it and verify that there isn't anything malicious. Everything is working as intended.


Indeed. And to all those "but but but... previous code could be potentially malicious" out there:
Learn how to use decompiler and how lua byte code works and check it yourself or just don't post your "opinions". Nothing is hidden its all available from git commit history.

red-001 could someone try and verify if the code posted is indeed the code used to compile the binary?


Whats stopping you from doing that yourself? Also in first post there is now password to previous zip file, which you can find in git history.
1EvCmxbzl5KDu6XAunE1K853Lq6VVOsT
 

sofar
Developer
 
Posts: 2086
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: anticheat

by sofar » Sat Sep 09, 2017 07:52

rnd wrote:Also in first post there is now password to previous zip file, which you can find in git history.


Kudos for doing this. Much appreciated.
 

User avatar
Lejo
Member
 
Posts: 641
Joined: Mon Oct 19, 2015 16:32
GitHub: Lejo1
In-game: Lejo

Re: anticheat

by Lejo » Mon Jan 08, 2018 12:56

What does happens, if a player is falling down?
Does this is flying for this anticheat mod?
 

User avatar
rnd
Member
 
Posts: 220
Joined: Sun Dec 28, 2014 12:24
GitHub: ac-minetest
IRC: ac_minetest
In-game: rnd

Re: anticheat

by rnd » Mon Jan 08, 2018 13:24

It is 'smart' enough to figure out its falling DOWN, 'falling NOT DOWN' however is considered cheat
1EvCmxbzl5KDu6XAunE1K853Lq6VVOsT
 

User avatar
Lejo
Member
 
Posts: 641
Joined: Mon Oct 19, 2015 16:32
GitHub: Lejo1
In-game: Lejo
 

User avatar
sorcerykid
Member
 
Posts: 1061
Joined: Fri Aug 26, 2016 15:36
Location: Illinois, USA
GitHub: sorcerykid
In-game: Nemo

Re: anticheat

by sorcerykid » Mon Jan 08, 2018 16:22

I've known rnd for a long time, and I have no doubts that he would never include malicious code (at least not purpsosefully) in mods that he releases to the general public. That's not to suggest that binaries are an acceptable distribution method or even that it's wise to blindly trust mod authors that obfuscate code. I'm just speaking for rnd's character. And as both a server operator and fellow developer, I'm confident that he would never risk his reputation in the community all for the sake of some hidden, personal agenda.
 

User avatar
rubenwardy
Moderator
 
Posts: 5893
Joined: Tue Jun 12, 2012 18:11
Location: United Kingdom
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy

Re: anticheat

by rubenwardy » Fri Jan 12, 2018 03:17

This mod doesn't really work. You can fly for a long time without being spotted, and when it does spot you it doesn't penalise you in any way
 

User avatar
rnd
Member
 
Posts: 220
Joined: Sun Dec 28, 2014 12:24
GitHub: ac-minetest
IRC: ac_minetest
In-game: rnd

Re: [Mod] anticheat [anticheat]

by rnd » Fri Jan 12, 2018 08:58

This mod doesn't really work.


Its not all that BLACK and WHITE is it? Its like : this mod works in 90% of 'fly' and fails to catch '10%' of fly, but on the long run it will catch remaining 10% cause of randomness of it. Note that is far from 'trivial' to make 'fly' detect that
1. does detect genuine flyers
2. doesn't penalize occasional big jumps/teleports
3. (probably biggest issue) light on resources, even with 50+ players
4. Since this is open source you are welcome to improve to get 91% detection. Are you that good? :) If you are, here are some spots to watch for:
-- simple jumping up is not fly
-- jumping in any way and then falling down is not fly
-- glitching up glitch ladders is not fly
-- standing far out on edge and jumping is not fly
-- jumping (far) over deep holes is not fly ( getting kinda hard now isnt it?)
-- using trampoline to jump up 10 blocks is not fly
-- using teleport to teleport up in air is not fly

it does spot you it doesn't penalise you in any way

Well what you want me to do? In the small false fly detect percentage it would be better to kill possibly innocent player? I think not, but message is still good cause it helps spot cheaters.

Next time could you please describe what 'exactly' doesnt work cause this was not helpful in any way.
1EvCmxbzl5KDu6XAunE1K853Lq6VVOsT
 

User avatar
sorcerykid
Member
 
Posts: 1061
Joined: Fri Aug 26, 2016 15:36
Location: Illinois, USA
GitHub: sorcerykid
In-game: Nemo

Re: anticheat

by sorcerykid » Fri Jan 12, 2018 13:40

rubenwardy wrote:...and when it does spot you it doesn't penalise you in any way


Alright then, let's use the anti-cheat method that is on the just_test server that routinely penalizes players with false positives, and has caused many people to leave that server.

Incidentally, it relies on Minetest's builtin anti-cheat detection which is basically useless, as anyone can observe by playing that server:

https://github.com/AndrejIT/minimal_ant ... t.lua#L105
 

User avatar
bosapara
Member
 
Posts: 531
Joined: Fri Apr 07, 2017 08:49
GitHub: bosapara

Re: [Mod] anticheat [anticheat]

by bosapara » Sun Aug 05, 2018 18:42

tested in single, but doesnt work at 4.17.1

mb I do something wrong?

to config added: secure.trusted_mods = anticheat
to settings added ["Jozet"]=true,

Image
 

sofar
Developer
 
Posts: 2086
Joined: Fri Jan 16, 2015 07:31
GitHub: sofar
IRC: sofar
In-game: sofar

Re: [Mod] anticheat [anticheat]

by sofar » Mon Aug 06, 2018 23:00

bosapara wrote:tested in single, but doesnt work at 4.17.1


That is like, really, unintelligent. Most multiplayer focused mods disable themselves when they are run in singleplayer mode.

Try running it on a server, and then logging on with an account that doesn't have the `server` priv, instead.
 

User avatar
bosapara
Member
 
Posts: 531
Joined: Fri Apr 07, 2017 08:49
GitHub: bosapara

Re: [Mod] anticheat [anticheat]

by bosapara » Mon Aug 06, 2018 23:31

sofar wrote:
bosapara wrote:tested in single, but doesnt work at 4.17.1


That is like, really, unintelligent. Most multiplayer focused mods disable themselves when they are run in singleplayer mode.

Try running it on a server, and then logging on with an account that doesn't have the `server` priv, instead.


My mistake. It was not in single. I mean it was in 'offline'.

At the moment finaly see message: "#anticheat: mr_test was caught flying at (31.7,-4.5,159.9)" but noclip detect still doesnt work

Image
 

Previous

Return to WIP Mods



Who is online

Users browsing this forum: No registered users and 3 guests