[Home] [Downloads] [Search] [Help/forum]


Register forum user name Search FAQ

Gammon Forum

[Folder]  Entire forum
-> [Folder]  Programming
. -> [Folder]  General
. . -> [Subject]  Preventing Automated Triggers

Preventing Automated Triggers

It is now over 60 days since the last post. This thread is closed.     [Refresh] Refresh page


Pages: 1 2  

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Sun 23 May 2004 09:18 PM (UTC)
Message
Ahoy folks,

Anybody have ideas on how to prevent triggers and the like?

I think everybody knows that saying "we don't allow it" isn't enough - people will do it anyways, and it's a real bother to have to police somebody. How do you know if someone is using triggers, or legitimately always doing it themselves?

I've had a few ideas that can slow down the process of creating triggers, for instance, using the fake space character (#130 I think?) instead of the real one (#32). People will eventually figure it out, though, and then it'll just be a bother but not a real obstacle.

The idea here is to make things legitimately hard to write triggers for. I don't want to ouput goobledegook (random characters.)

There are posts on these forums from time to time about doing this in the reverse way: taking a hard-to-beat MUD ouput and writing a trigger for it. Now I'm asking to go the other way. :) How to write an even harder-to-beat MUD output.

The immediate problem at hand is a crafting system in which you get better by doing it over and over again, but we don't want players writing scripts and then going to bed or something. However I believe the problem is a general one that probably has a general solution.

One way to solve my crafting problem, for instance, would be to force the player to go buy materials. They would have to go to the store, get the materials, then go back to their forge (or whatever) and build some more. All that is possible to script. And even if the order of objects at the store changes, they could still write scripts to do it for them. Of course things would become complicated, since they would have to buy the right thing and all that, but it's still possible.

Perhaps if it's made so that only the "real master scripters" can trigger it, that would be acceptable to me. However, due to the redistributable nature of scripts... well, you get the picture.

One could also simply change the tasks required from time to time, which would require people to rewrite and redistribute the scripts, but that could be annoying for the admins and the normal players.

Perhaps this is trying too hard to prevent abuse. I'm wary, though, because there are some people on the playerbase who, given an opportunity to cheat, will cheat as much as they can and this is obviously disruptive to the whole game.

Anyways, just wondering if/how other people solve this problem. :)


- Member of the MUD Admins Forever Against Cheating group... the MAFAC. :P

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Meerclar   USA  (733 posts)  [Biography] bio
Date Reply #1 on Sun 23 May 2004 09:46 PM (UTC)
Message
Even if you somehow manage to find a method that only "master" scripters can write scripts for, whats to stop them from sharng the scripts/triggers with the less skilled players? Ultimately, the battle against botting (I hate it too and have a history of frying botters) comes down to policing your players. It has been my experience that making a few...... examples tends to discourage full botting to a large degree and limits matters to simpler trigger assisted playing. Even your idea to change the order of the materials in shops is easy to get around unless you disallow buying items by name - an inconvenient solution at best to code.

As for the players you KNOW are cheating (regardless of being able to prove it) make a few very public examples of what happens to people that simply cant or wont follow a few very simple rules.

One possible solution to your crafting problem is to have a mob randomly shut down the crafting medium for repairs after a semi-random number of crafting attempts. Granted, this is something of a headache but its still easier (and far more realistic) than attempting to design a completely unscriptable system. Another possible solution is randomly transporting the craft mediums (or suppliers) after a semi-random number of attempts.

A particularly extreme option is to only allow access to the crafting mediums/suppliers to those not using clients with scripting support, ie only raw telnet.

Meerclar - Lord of Cats
Coder, Builder, and Tormenter of Mortals
Stormbringer: Rebirth
storm-bringer.org:4500
www.storm-bringer.org
[Go to top] top

Posted by Nick Gammon   Australia  (22,975 posts)  [Biography] bio   Forum Administrator
Date Reply #2 on Sun 23 May 2004 10:49 PM (UTC)

Amended on Sun 23 May 2004 10:50 PM (UTC) by Nick Gammon

Message
One MUD that slowed me down a fair bit with trigger-writing (it might have been Aetolia) had room descriptions all jumbled together in one big paragraph, however with hard-returns at the end of each line so it was hard to make a trigger even to find the whole lot. Then in the middle would be things like this:


You are in a large cavern. Ksilyan is here with you. There is a merchant here. You notice a chest on the ground. Other people are standing around. It is getting dark. Your quest to find the Holy Grail is not yet complete. Your lamp is running low.


This technique made it hard to write triggers because, first, everything was altogether (eg. lamp running low), and the hard line-breaks made it hard to even detect that paragraph from (say) a previous line with a chat in it.

You could probably retro-fit this into an existing MUD by modifying the do_look routine to do something like this:


  • Collect all the things you want to say (eg. the room desc, who is here, mobs that are here, other things like objects), and put them into a list.

  • Randomise the order of things in the list.

  • Output the randomised list with a space between each item, putting in hard-returns when you reach column 70 (say).



Thus my earlier example might come out like this a second time around:


Your lamp is running low. It is getting dark. There is a merchant here. You are in a large cavern. Ksilyan is here with you. You notice a chest on the ground. Other people are standing around. Your quest to find the Holy Grail is not yet complete.


You have given the same information, but it would take a clever trigger-writer to take a paragraph like that, and basically do a semantic analysis of it to find the relevant parts.

Other things you could do would be to change phrases like "you notice" to "you see", "nearby is" and so on, to further make trigger-writing harder.

I suppose one approach I would take if someone did this was to reverse the process, breaking up the paragraph into sentences (ending with a period) and then consider each one separately. Maybe you could defeat that to a certain extent with "connector words" instead of periods, like "and", and "furthermore" etc.

Another possibility would be to make something that "runs out" (like mana for spells) to stop a bot doing the same thing 100 times. eg. after 3 attempts to do something you get "tired" and have to do something else.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #3 on Sun 23 May 2004 11:38 PM (UTC)
Message
Meerclar: yes, I agree with you, no matter what somebody will find a way around it and then distribute it. In fact that's why I was thinking about perhaps changing the method used from time to time, to make it tedious for the scripters.

I was hoping to find a solution that would minimize policing, because that takes up a lot of time and we don't have enough idle staffers to deal with it. It also bothers me to wipe people without hard proof, because the consequences of making a mistake would be disastrous.

I do like your moving-around system, though. It seems that it would solve the problem to a very large extent, perhaps combined with Nick's 'tired' idea. That sounds like a solution to this specific problem, but I was wondering if maybe we could all get our heads together and think up general solutions to problems like this. :)

And it seems that limiting crafting to only telnetters is a wee bit too extreme. :)


Nick: I really like your paragraph reordering idea, I think the two of us have talked about it before. That's definitely an approach I would take if I could, but the builders would have a fit. :) On my MUD we tend to have fairly long descriptions (6 lines of 72 characters, or so) in every room, so it would be hard to jumble things around like that. Perhaps a part of it could be left as is (the fixed description), but the rest could be jumbled (items, mobs, etc.) Still, it would be harder to read for normal people (the non-cheaters) and I'd rather not punish them more than I have to due to cheaters. :)

The 'tired' idea is a good one. Still, somebody could basically speedwalk from the anvil to a place with mobs, kill a few, and come back. Granted, that would probably be fairly complex to script and not really worth it. I'll look into how to get that done. Maybe just use endurance (movement) points, and you need to sleep to get them back.


Meerclar, out of curiosity, how do you determine that someone is cheating? I guess it would be pretty obvious if you sent them a tell and they didn't reply; but do you have any other methods? Typically I just snoop them when I get suspicious and see if they're talking with any of their friends, but even that isn't guaranteed to work since they just may not be feeling talkative.

Thanks for the replies to both of you, though. :)

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Nick Gammon   Australia  (22,975 posts)  [Biography] bio   Forum Administrator
Date Reply #4 on Mon 24 May 2004 01:00 AM (UTC)
Message
That is an interesting idea - seeing if they are talking.

Perhaps the MUD could fire off a question at each player every 10 or 20 minutes, one that would be hard to automate the answer to. If they don't reply you could get suspicious.

Here's an idea - you know how some servers these days try to cut out automated submissions (eg. the support page on this site, or Google submissions etc.) by asking you to identify an image, you could do something that a human could answer but a bot couldn't.

Here is one approach, since most clients don't support images. Do something like this:


To confirm you are a human player and not a bot, please enter this word:

 __    __   _______  __       __        ______   
|  |  |  | |   ____||  |     |  |      /  __  \  
|  |__|  | |  |__   |  |     |  |     |  |  |  | 
|   __   | |   __|  |  |     |  |     |  |  |  | 
|  |  |  | |  |____ |  `----.|  `----.|  `--'  | 
|__|  |__| |_______||_______||_______| \______/  
                                                 

What word was that? ...


You might only do that for players who fit a "suspicious profile", for instance ones that are not talking to other players, or are doing lots of commands in quick succession.

It might be possible to research that a bit - a bot is likely to behave differently to a human. A human would:


  1. Pause while they worked things out

  2. Pause for longer periods while they answered the phone, the call of nature, got food, etc.

  3. Type "help" or "help <command>" from time to time

  4. Make spelling mistakes (eg. narth, rather than north)

  5. Chat with other players

  6. Check their inventory at random intervals


You could probably analyse the command sequences of players vs bots and be fairly sure which was which.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Nick Gammon   Australia  (22,975 posts)  [Biography] bio   Forum Administrator
Date Reply #5 on Mon 24 May 2004 01:05 AM (UTC)
Message
The "ascii art" idea could be fairly easily implemented (the routines are public domain) and there are quite a few "fonts". Here is another example:


 _       _ _     
| |_ ___| | |___ 
|   | -_| | | . |
|_|_|___|_|_|___|
                 


Because the letters "run together" (share verticals) it would be hard to write a trigger that decodes the word, especially if you did some substitutions on it, or changed letter spacing etc.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Meerclar   USA  (733 posts)  [Biography] bio
Date Reply #6 on Mon 24 May 2004 03:48 AM (UTC)
Message
One of my favorite ways has always been to track which rooms players are in, just from sheer force of habbit from being on so many muds that disallowed bots. If you see a player in a combat area, sitting still for longer than you know they should be, it's just too tempting NOT to goto, purge the room and wait for a response from them (all the while snooping them). For your tradeskill setup, Nick's ascii art idea is pretty nice and more than difficult enough for even a master scripter to break if you give say 100 random pieces of art that can be used. Mix animals, objects and real words and you actually end up with a very near unbreakable system. Plus its so easy to scale to include more options its just silly :)

As for limiting access to clients without scripting support, EVERYONE has access to some form of raw telnet be it hyperterm or whatever. There are some "advanced" telnet clients as well that dont offer scripting but offer triggers and other useful features but finding them all is a HUGE headache and requires an extensively exhausting amount of research. I know most muds anymore negotiate for mccp, mxp and whatnot at login so it shouldnt be too horribly difficult to add a new field to the char struct to track probable script support in their clients and block access (with a message to login on telnet) to anyone likely to have script support.

Meerclar - Lord of Cats
Coder, Builder, and Tormenter of Mortals
Stormbringer: Rebirth
storm-bringer.org:4500
www.storm-bringer.org
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #7 on Mon 24 May 2004 04:22 AM (UTC)
Message
Yes, the Figlet (that's what it's called, right?) text would be an excellent solution. Given that there are 26 letters plus 10 digits, there are tons of combinations of words... if you pick 5-letter words there are 36^5 possibilities = 60,466,176. That's an awful lot of possibilities... :) And due to the multi-line nature of the letters, it'll be that much harder to recognize. An excellent solution, Nick. Now the only trouble is determining when to make such requests. :)

I'm not so fond of limiting client access simply because that would mean shutting the door to a bunch of legitimate users. I wouldn't want to shut off everybody using MUSHclient or zMUD simply because a few bozos are cheating. Also, some scripts are legitimate. I just don't want people to become master crafters (or any such thing) without deserving it.

The main problem I have with manual policing is that it just takes up lots of time. Typically I can spot multiplaying fairly easily by watching connection logs; that takes very little monitoring. Actually watching where people go and what they say, however, is a lot more time consuming and generally isn't worth it unless I already have reason to be suspicious that they're botting.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Flannel   USA  (1,230 posts)  [Biography] bio
Date Reply #8 on Mon 24 May 2004 05:48 AM (UTC)
Message
Eh, seriously though, if someone is going to go through all the trouble of scripting something that complex. Id consider the challenge of getting around figlet a lot of fun.
As for the combining of lines, that does make it a trifle harder, however if someone really wants to do it, theyll be able to.

The only way to get around a script is manual policing. Or at least, the only way to get around a well formed, semi intelligent script, is ultimately manual policing. You can use pattern watching to have the mud watch everyone, and put suspicious people on lists, but ultimately youd have to have a human snooping the suspicious people.

And, if someone is purposefully trying to be decietful, theyll be able to, in every aspect that is hard coded. Its just like the Loebner prize. You add in spelling mistakes, and typing time, and you get something which isnt detectable unless you look a layer deeper.
The one downfall you get is with player interaction. As obviously, if you did it well enough, you could win a nice sum of money from the Loebner people.

~Flannel

Messiah of Rose
Eternity's Trials.

Clones are people two.
[Go to top] top

Posted by Meerclar   USA  (733 posts)  [Biography] bio
Date Reply #9 on Mon 24 May 2004 06:08 AM (UTC)

Amended on Mon 24 May 2004 06:17 AM (UTC) by Meerclar

Message
How are you cutting them off by detecting possible script support in their clients? All you do by kicking out those connected on script enabled clients is force them to go "low tech" when they want to do crafting. Windows and Linux both have native telnet applications so its not like you've prevented anyone from using anything thats only available on a raw telnet client. As far as how often to send, allow a 10-15% chance per combine that an art piece is sent and it takes care of itself.

Meerclar - Lord of Cats
Coder, Builder, and Tormenter of Mortals
Stormbringer: Rebirth
storm-bringer.org:4500
www.storm-bringer.org
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #10 on Mon 24 May 2004 06:16 AM (UTC)
Message
Flannel: Well, yes, there is always somebody who will want to break it... my goal is to make that process as hard as possible without giving too much inconvenience to the other players. And yes, in the end, manual policing will be necessary, but again I'd like to minimize that.

Quote:
How are you cutting them off by detecting possible script support in their clients? All you do by kicking out those connected on script enabled clients is force them to go "low tech" when they want to do crafting. Windows and Linux both have native telnet applications so its not like you've prevented anyone from using anything thats only available on a raw telnet client.
Yeah, but still, it seems unfair to everybody who isn't cheating to have to go low-tech, even if it's just to craft. While crafting they may wish to occasionally do other things, like chat... or, they may wish to log their session using MUSHclient's logger or whatever.


Quote:
As a side note, your possibility count is only accurate if you never duplicate letters/numbers. The actual possible total if you duplicated is more like um......... you get the idea, its too bleedin many to do the math on in a hurry.

Actually, nope - not duplicating letters would be:
36 * 35 * 34 * 33 * 32
A two-digit combination code has 10^2 possibilities: clearly this is the case because you have 00, then 01, 02, 03, ..., 99. So you have 100 possibilities = 10^2.
If you can't repeat, then you have 10 * 9 = 90 - which makes sense because you have all 100 combinations, minus 00, 11, 22, 33, 44, 55, 66, 77, 88, 99.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Meerclar   USA  (733 posts)  [Biography] bio
Date Reply #11 on Mon 24 May 2004 06:24 AM (UTC)

Amended on Mon 24 May 2004 06:26 AM (UTC) by Meerclar

Message
Actually, I was wrong on duplicating letters/numbers and total combinations.

Running the counts thru for a combination calculation I got 376,992 possible combinations and 45,239,040 permutations at 5 characters each. Either way, its still far more possible results than you'll ever need to worry about using.

(yeah yeah, I edited out the count comment in my last post while Ksilyan was posting the one Im responding to now)

Meerclar - Lord of Cats
Coder, Builder, and Tormenter of Mortals
Stormbringer: Rebirth
storm-bringer.org:4500
www.storm-bringer.org
[Go to top] top

Posted by David Haley   USA  (3,881 posts)  [Biography] bio
Date Reply #12 on Mon 24 May 2004 06:29 AM (UTC)
Message
What formula are you using? We're not interested in combinations or permutations.

Your last figure, 45,239,040, is for not allowing duplicates. It is equal to 36*35*34*33*32. Not sure where your other one comes from (is it 36 choose 5? - can't be bothered to work it out :P), but clearly since there are more possibilities if we allow duplicates, it can't be right.

David Haley aka Ksilyan
Head Programmer,
Legends of the Darkstone

http://david.the-haleys.org
[Go to top] top

Posted by Nick Gammon   Australia  (22,975 posts)  [Biography] bio   Forum Administrator
Date Reply #13 on Mon 24 May 2004 06:36 AM (UTC)
Message
I think the number of combinations would be high enough. :)

A dictionary of a few thousand words, or even randomly-generated ones, eg.


Hello, oh player. Is the following word:

a. vExfl7HT
b. 7VPMxory
c. 8D3viP2W

       #######                      ####### #     # ####### 
#    # #       #    # ###### #      #    #  #     #    #    
#    # #        #  #  #      #          #   #     #    #    
#    # #####     ##   #####  #         #    #######    #    
#    # #         ##   #      #        #     #     #    #    
 #  #  #        #  #  #      #        #     #     #    #    
  ##   ####### #    # #      ######   #     #     #    #    
                                                            

Choose (a, b, c) ...


Then, when they have had time to make a trigger to match that, swap the characters around a bit, so it will still be readable, but the trigger probably won't work, eg.


.......$$$$$$$......................$$$$$$$.$.....$.$$$$$$$.
$....$.$.......$....$.$$$$$$.$......$....$..$.....$....$....
$....$.$........$..$..$......$..........$...$.....$....$....
$....$.$$$$$.....$$...$$$$$..$.........$....$$$$$$$....$....
$....$.$.........$$...$......$........$.....$.....$....$....
.$..$..$........$..$..$......$........$.....$.....$....$....
..$$...$$$$$$$.$....$.$......$$$$$$...$.....$.....$....$....


Then you could make one out of all "." characters, but with different colours, so a trigger matching text will simply fail. You would need to parse the colours out of the text.

- Nick Gammon

www.gammon.com.au, www.mushclient.com
[Go to top] top

Posted by Flannel   USA  (1,230 posts)  [Biography] bio
Date Reply #14 on Mon 24 May 2004 07:35 AM (UTC)
Message
Then we'll get a bunch of people in the forums asking us how to load text recognition software via COM. (load the whole thing into... oh, a php script, make a picture, send it to the text recognition software)

That'd be the day.

~Flannel

Messiah of Rose
Eternity's Trials.

Clones are people two.
[Go to top] top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


75,188 views.

This is page 1, subject is 2 pages long: 1 2  [Next page]

It is now over 60 days since the last post. This thread is closed.     [Refresh] Refresh page

Go to topic:           Search the forum


[Go to top] top

Quick links: MUSHclient. MUSHclient help. Forum shortcuts. Posting templates. Lua modules. Lua documentation.

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.

[Home]


Written by Nick Gammon - 5K   profile for Nick Gammon on Stack Exchange, a network of free, community-driven Q&A sites   Marriage equality

Comments to: Gammon Software support
[RH click to get RSS URL] Forum RSS feed ( https://gammon.com.au/rss/forum.xml )

[Best viewed with any browser - 2K]    [Hosted at HostDash]