Mag ik een bot voor een online spel maken?

botcraft-wow-spel-online-mmo.jpgEen lezer vroeg me:

Voor een massive multiplayer online strategy game heb ik een nieuwe userinterface ontwikkeld die inlogt (met je normale naam en wachtwoord) op de officiele servers en bepaalde taken in het spel automatiseert. Ik heb deze gemaakt door het netwerkverkeer te observeren, en heb geen code uit de officiële client gebruikt. Nu zie ik dat in de EULA van deze game staat dat je geen bots mag gebruiken, maar is het ook verboden voor mij om bots te verspreiden?

Ik denk niet dat het strafbaar is in de zin dat de politie je arresteert en je de cel in gaat. Wel zou het kunnen zijn dat de dienstaanbieder zegt dat je hen schade berokkent en dat jij die moet vergoeden.

Op zich is het niet verboden software te maken die samenwerkt met andermans software, zolang je geen code overneemt (copypaste of door reverse engineering). Je mag een protocol reverse engineeren en daar dan je eigen client of server voor schrijven, maar niet de client reverse engineeren en klonen. (In de Amerikaanse Glider-zaak ging het erom dat de bot de clientsoftware aanpaste als die in RAM geladen was. Ik vind dat hoogst dubieus als juridisch argument, maar goed dat geldt voor wel meer Amerikaanse zaken.)

Als je software beveiligingsmaatregelen omzeilt, met name als mensen gratis iets kunnen doen dat normaal geld kost, dan ben je mogelijk wel strafbaar. Er zijn regels in de Auteurswet over het omzeilen van kopieerbeveiligingen en ook strafwetten over het omzeilen van een beveiliging voor een betaaldienst.

De aanbieder zou kunnen zeggen dat jouw UI in feite een bot is waarmee mensen valsspelen. Dan kunnen ze je bot bannen. Als dat moeilijk blijkt (omdat jij cloakingtechnieken gaat inbouwen) dan zouden ze kunnen zeggen dat ze nu op kosten gejaagd worden om jouw bot te blokkeren en dat ze die op jou verhalen. Dat kan onrechtmatig zijn immers.

In de praktijk denk ik dat het in Nederland wel meevalt; men blokkeert de bot en gaat over tot de orde van de dag.

Arnoud

13 reacties

  1. Het bannen van een bot kan ook al behoorlijk lastig zijn als er geen speciale cloaking-technieken gebruikt worden. Hoe kan een game server zien of bepaalde internet-pakketten afkomstig zijn van de offici?le client of van een bot? Als ze precies het zelfde protocol gebruiken, zullen de pakketten er exact het zelfde uit zien.

    Ik kan me ook voorstellen dat als de bot-maker slechts een deel van het protocol ontcijferd heeft, hij/zij een bot maakt die de offici?le client het gros van de communicatie laat verzorgen, en slechts af en toe de inhoud van een pakketje wijzigt. Ik heb bijv. gehoord van een bot die op deze manier voor een FPS-game slecht gerichte schiet-commando’s vervangt door goed gerichte. Hierdoor hoefde de gebruiker van de bot zijn wapen slechts ongeveer in de richting van een tegenstander te richten om een raak schot te maken.

    Om zo’n bot-gebruiker te onderscheiden van een eerlijke speler heb je volgens mij een soort Turing-test nodig, die computers onderscheidt van mensen. In sommige gevallen kan dat lastig zijn, of blijft het resultaat een beetje vaag. Bijv., in het geval van die FPS-bot: als iemand altijd raak schiet, is dat dan het gevolg van een bot, of is de speler gewoon erg goed?

  2. In de praktijk maakt dat voor dei FPS niet zo heel veel ui5t. Dit soort zaken spreekt zich snel rond op de fora en die speler krijgt het moeilijk om nog interessante tegenspelers te vinden. Bannen gaat dus eigenlijk spontaan en informeel.

    Maar bij de bot die hier besproeken wordt is het een ander verhaal. Een van de vervelende eigenschappen van MMOSG is dat je eigenlijk eindeloos ingelogd moet zijn om je met hele saaie zaken bezig te houden. Als je nu een stukje software dat in jouw plaats laat doen dan krijg je ineens een onevenredig groot voordeeol op mensen die wel een leven naast de online games hebben. En dat is niet echt eerlijk.

    Aan de andere kant zou een dergelijke bot met het spel mee aangeboden moeten worden om domme taken van de speler over te nemen. Dat zou zulke spellen een stuk lolliger maken.

    Dus het mag niet maar zou niet nodig moeten zijn.

  3. Hoe kan een game server zien of bepaalde internet-pakketten afkomstig zijn van de offici?le client of van een bot?

    Gedrags analyse. Bots zonder cloaking hebben extreme snelle reacties en vertonen enorme gelijkmatigheid van handelen.

    Een user die 100 keer achter elkaar tussen xx:30.00 en xx:30.05 een handeling uitvoert is typisch een bot. Ook bots die 24×7 elke minuut of elke paar minuten een pagina opvraagt is waarschijnlijk een bot.

  4. Een user die 100 keer achter elkaar tussen xx:30.00 en xx:30.05 een handeling uitvoert is typisch een bot. Ook bots die 24??7 elke minuut of elke paar minuten een pagina opvraagt is waarschijnlijk een bot.

    Ja, zulke regelmaat kan wel een sterke aanwijzing zijn. Niet echt hard bewijsmateriaal, maar misschien wel genoeg om uit het spel gegooid te worden. En Arnoud heeft dan weer gelijk dat je dat kunt omzeilen door er een rand() aan toe te voegen. Maar dan ben je als bot-maker eigenlijk al begonnen aan een wapenwedloop, die, zoals hij argumenteert, de spel-aanbieder op kosten zou kunnen jagen.

    Aan de andere kant: als ik een spel-aanbieder was, dan zou ik het leuk vinden om mensen vrij te laten in het gebruik van bots. Het programmeren / kopi?ren van goede bots wordt dan gewoon deel van het spel. Als het spel zo in elkaar zit dat menselijke creativiteit nodig blijft om succes te hebben, dan blijft het leuk voor de spelers.

    Als de spel-aanbieder er voor kiest om kostbare technische maatregelen te nemen om bots te detecteren, dan is dat hun eigen keuze. Ik zou het vreemd vinden als de maker/gebruiker van een bot die kosten moet vergoeden, tenzij dit expliciet vermeld is in de voorwaarden van de spel-aanbieder.

  5. over de gedrags analyse, een simpele random interval gaat niet werken. Of in ieder geval, hoogst waarschijnlijk niet werken.

    Met een bayes classificatie algoritme zou je de acties van spelers kunnen vergelijken met de acties van andere spelers, rekening houdende met meerdere factoren. Klik ritme, speel duratie, loop gedrag, etc..

    Zelfs wanneer je een “bot” zou maken die in feite de acties van de speler zelf opneemt en terug afspeelt wat in eerste instantie dus 100% menselijk gedrag zou vertonen zou op den duur geclassificeerd kunnen worden als bot door een bayes filter doordat het vertoonde gedrag op den duur zichzelf zou herhalen.

    Verder zal de verspreiding van zo’n bot of welke bot dan ook automatisch zorgen dat er een groepering wordt gecre?erd van gedragingen die makkelijk te classificeren zijn als bot.

    Of ze dit ook doen is twee, maar ik zou zeggen dat de makers van dit soort spellen een enorm voordeel hebben en als ze er tijd en moeite in investeren altijd zullen “winnen”.

    Over het gebruik van zulk soort applicaties. Tsja, ik heb zulk soort bots ook wel gebruikt toen ik diablo2 speelde op een thuis server (dus niet op battle.net). Het is een paar dagen grappig om naar te kijken, de computer die honderden keren hetzelfde eindbaasje verslaat om betere items te vinden. Maar daarna, wanneer je al die goede items hebt, is ook het spel niet meer leuk. Geen doel meer. Je hebt het beste wapen al, geen nut om zelf nog te spelen.

    Het lijkt me wel interessant om een keer een bot zelf te schrijven, maar gebruiken zie ik het nut niet meer van in.

    Over de legaliteit ervan, Arnoud geeft aan dat je niet applicaties mag reverse engineeren maar wel protocollen. Gezien mmorpgs altijd spreken over een “client” die connect met een “server”. Is het dan niet zo dat het onder nederlands recht toegestaan is om je eigen client te maken voor deze “server”?

  6. Ja, je mag je eigen client maken die met een server connect, mits: 1) je de layout niet afkijkt van de originele (althans de creatieve aspecten daarvan) 2) je geen graphics of teksten overneemt 3) je alleen het netwerkverkeer snift om het protocol te achterhalen 4) je geen sleutels of wachtwoorden of authenticatie-items uit de client haalt en in jouw client stopt

    Zodra je dingen afkijkt of overneemt uit de originele client, begint er een claim te groeien over auteursrechteninbreuk. Of omzeilen van beveiligingen, als je die sleutels of authenticatie-items overneemt.

  7. 4) je geen sleutels of wachtwoorden of authenticatie-items uit de client haalt en in jouw client stopt

    Maar als je ze uit het netwerkverkeer vist i.p.v. uit de executable, dan mag het wel? Zo niet, hoe weet je dan of het om authenticatie-items gaat?

    Stel, ik neem het netwerkverkeer op van de volgende sessie: * start de client op * loop naar voren * loop naar rechts * loop naar voren * sluit de client af

    De client blijkt de volgende berichten te versturen: A,B,C,B,D, waarbij elke letter voor een bepaalde lange byte-sequence staat.

    Volgende stap: ik maak een bot die het volgende verstuurt: A,B,C,C,B,D. Ik kijk via een tweede sessie wat er gebeurt, en het blijkt te werken: de bot loopt naar voren, 2x naar rechts en weer naar voren.

    Ik heb nu het protocol gedeeltelijk gereverse-engineered, maar ik weet nog steeds niet wat de exacte betekenis is van de inhoud van byte-sequence A. Misschien is een deel ervan, zonder dat ik het weet, bedoeld als authenticatie-sequence. Toegegeven: als de hierboven beschreven reverse engineering werkt dan is het een waardeloze authenticatie, maar het kan toch de bedoeling van de (onkundige) maker zijn geweest om een authenticatie-mechanisme te maken.

    Als je na gedeeltelijke reverse-engineering byte sequences over houdt waarvan je de betekenis niet kent, maar waarvan experimenteel duidelijk is dat ze nodig zijn voor inter-operabiliteit, is het dan toegestaan om deze byte-sequences op te nemen in je eigen software, of worden zulke sequences beschermd door het auteursrecht? Maakt het citaatrecht nog iets uit? Ik denk dat het lastig te zeggen is bij zulke sequences bij welke lengte citeren wel/niet onredelijk is.

  8. Als maker van de besproken bot wil ik graag het volgende toevoegen. De reden dat ik deze bot schreef was in eerste instantie pure hobby, een leuke puzzel om te kijken of ik in staat was het protocol te implementeren. Dit is bijzonder goed gelukt. Niet alle maar wel veel commando’s zijn geimplementeerd en deze subset is voldoende om kennelijk niet gebanned te worden. Veel spelers zullen dagelijks de commando’s die niet zijn geimplementeerd ook niet sturen. Overigens maak ik GEEN gebruik van de bestaande client, het is een maagdelijke implementatie. De makers van het spel proberen bots te bannen, dit is in het begin een keer gebeurd (omdat ik te snel teveel commando’s stuurde), maar de meest recente versie draait inmiddels al een paar maanden. De bot doet eigenlijk niets dat een (erg intensieve) speler niet zou kunnen. De commando stream is gelijk aan die van een gebruiker, inderdaad maak ik gebruik van random timings en random volgordes, welke eigenlijk van nature al random zijn doordat er verschillende threads draaien die concurreren om een actie te versturen. Ik kan me voorstellen dat machine learning technieken zouden kunnen werken om de bot te herkennen, maar het zal zeer moeilijk zijn.

    De bot neemt een aantal zaken van de gebruiker over die inderdaad langdradig zijn in het spel en waar je je zeker niet 24 uur per dag mee bezig wil houden. Ik iig niet, vandaar ook de bot. Het spel zelf is overigens gratis, alleen om ‘snel’ beter te worden kun je bepaalde items kopen, wat de spelmakers stimuleren door een aantal improvements zeer lastig te maken. Beetje misleidend naar mijn idee, hier biedt de bot uitkomst.

    Ik ben mij ervan bewust dat het een kat-en-muis spel zou worden indien ik de bot ga verkopen. Ongeacht of de kat mij vangt of niet (even aangenomen dat ik de muis ben), verkoop is interessant omdat er genoeg spelers zijn die hier ongetwijfeld een tientje (of meer) voor over hebben, en zo’n bedrag kan snel oplopen daar het spel miljoenen gebruikers heeft. Indien de spelmaker de bot uiteindelijk kan herkennen dan is dat het risico van de gebruiker van de bot lijkt me. De reden dat ik bovenstaande vraag stelde is dat ik benieuwd ben naar de eventuele risico’s die een dergelijke verkoop met zich mee brengt, en of het uberhaupt illegaal zou zijn oid.

    Dat laatste is dus niet het geval, maar ik zou dus wel eventueel een claim kunnen krijgen omdat ik ze op kosten jaag. Blijft het een lastige beslissing, doen of niet doen?

  9. Stealthtechnieken zijn trucs om jezelf als bot onherkenbaar te maken of detectie te bemoeilijken. Trucs als willekeurige vertragingen inbouwen, of de naam van het proces “explorer.exe” of “scvhost.exe” noemen in plaats van “wowbot.exe” zijn voorbeelden.

  10. Een ander aspect om in de gaten te houden, is dat deze discussie ging over de juridische status van die bot in Nederland. Een Amerikaans bedrijf bijv. zou wel eens in de VS de juridische stappen kunnen ondernemen. Vervelend, want dan moet je in een vreemd land onder (nog) vreemdere juridische regels met een vreemde advocaat je verdedigen (of niet en dan wil je niet meer in de US invloedssfeer komen). Dus waar veel van de discussie ging over of je zo’n rechtszaak in Nederland kunt winnen, zou ik zeker ook kijken of ze hem gaan aanspannen buiten Nederland.

    Aangezien de bot het businessmodel van die spelaanbieder ondermijnt (de spelers hoeven immers niet meer gear te kopen), kan ik me voorstellen dat dat bedrijf zich daar wat agressiever in gaat gedragen (verdedigen in hun ogen). Al was het maar om anderen ook af te schrikken. Als je het niet al gedaan hebt, zou ik eens zoeken of dat bedrijf dat soort juridische acties al gedaan heeft (en zo ja, waar). Dat geeft je een indruk van hun agressiviteit hierin.

    BTW wel cool werk om een bot te maken 😉

Geef een reactie

Handige HTML: <a href=""> voor hyperlinks, <blockquote> om te citeren, <UL>/<OL> voor lijsten, en <em> en <strong> voor italics en vet.