Jump to content
This Topic
Supernuva

[Poker Robot] Preuve de concept et débat

Recommended Posts

Introduction

Il y a quelques années de cela, j'ai développé une preuve de concept de robotisation pour le poker. Je vais décrire ici les problématiques que j'ai rencontré, et quelles solutions j'ai mis en place pour passer outre ces difficultés. Je n'irai pas pour autant dans le détail de l'algorithme et je ne publierai pas le code source. Ce post n'a pas pour objectif d'inciter les joueurs à tricher, il n'ont besoin de personne pour prendre la décision de tricher, d'autant qu'il existe de toute façon une infinité de méthodes pour y arriver. Par contre, il profitera probablement bien plus aux "white hats" travaillant pour les poker rooms. J'aurai pu présenter ce travail dans une conférence de hacking, je le ferais peut être un jour, sait-on jamais.

 

Problème n°1 : comment voir les cartes pendant le coup ?

La première étape est bien sûr la prise d'information par le programme, inévitable pour pouvoir agir avec la connaissance du coup en cours. Ainsi, l'idée est de littéralement donner la vue au programme. Le programme doit non seulement voir les cartes, mais aussi identifier les montants des tapis, le positionnement du joueur actif dans le coup, etc.

Les logiciels d'aide à la décisions autorisés sont ceux qui récupèrent les mains après le coup joué. C'est d'ailleurs beaucoup plus simple de se baser sur l'historique des mains fourni par le logiciel de poker car dans un format facilement assimilable par un programme. Comme on dit, easy parsing baby:dance:. C'est d'ailleurs pour cette même raison qu'il faut parfois configurer l'enregistrement des mains en anglais pour que le poker tracker puissent lire correctement les mains.

 

Solution n°1 : hacker le software de la poker room

Totalement illégal, cette solution a pourtant été choisie par un certain nombre de personnes peu scrupuleuses. Pour faire cela, il existe multiples méthodes, le tout étant de ne pas se faire prendre. C'est bien sûr fortement déconseillé à moins de déjà faire partie d'une mafia, facilitant ainsi la gestion de l'argent sale par un réseau bien en place, les fausses identités, ...

 

Solution n°2 : faire du traitement d'image pendant le coup

Pour faire du traitement d'image pendant le coup, il suffit de faire des captures d'écrans très fréquemment. C'est possible dans à peu près n'importe quel langage de programmation. L'avantage certain est que cela n'affecte pas le fonctionnement du logiciel de la poker room. De plus, et c'est non négligeable, il n'y a pas besoin de rétro ingénierie. Cette solution fonctionne mais il faut prendre quelques précautions. Le traitement d'image apporte tout son lot de problèmes à résoudre, néanmoins, on est loin de la difficulté d'une reconnaissance faciale par exemple. En effet, on peut se débrouiller pour limiter les différences possibles entre les screenshots pris pour initialiser la base de données d'images de références et les screenshots pris pendant les coups que l'on souhaite analyser.  Définir une position fixe de la table peut par exemple grandement faciliter la tâche. D'autres paramètres modifiables dans le software de la poker room permettent d'aider en définissant une position préférée (fixe) du joueur sur la table.

 

Problème 2 :  Comment identifier les montants des tapis ?

Dans ma preuve de concept, je me suis focalisé sur un mode de jeu précis : NL Holdem Shorthanded. Ce qui demande déjà pas mal de boulot :>'

En effet, passer du Shorthanded au FullRing implique des changements dans le positionnement et la taille des cartes varient aussi par exemple. Sans parler du fait qu'il faille aussi implémenter un algorithme pour les montants en jetons de tournois. Ce qui est bien sûr faisable, mais cela demande du temps, beaucoup de temps.

 

Solution : traitement d'image ciblé

Tout comme pour voir les cartes, c'est faisable. Dans un premier temps, on peut faire des micro screenshots aux bons endroits pour identifier les formats des montants du tapis du joueur X. Il y a un certain nombre de configurations possibles, par exemple en NL10 :

- X€

- XX€

- X.XX€

- XX.XX€

Il faut par conséquent dans un premier temps identifier le format avant d'y appliquer un algorithme qui lui est dédié.

 

Contre-mesures envisageables

Car comme toujours dans le hacking, il y a des contre-mesures qui seront elles-mêmes contournables bien que cette escalade puisse s'arrêter dans les limites des ressources de nos machines. Car oui, heureusement pour notre vie privée, le déchiffrement peut prendre un temps considérable. En tout cas pour l'instant.

 

Solution n°1 : Ajouter de l'aléa

Comme bien souvent dans la sécurité informatique, l'ajout d'une composante aléatoire suffira à en décourager plus d'un (cf ASLR).  On pourrait par exemple imaginer faire varier des pixels, des positionnements sans altérer ce que l'utilisateur voit. Par contre, faire varier la position de la table ne changerait pas grand chose puisqu'il suffirait d'ajouter une phase de détection de l'emplacement exacte de la table.

 

Solution n°2 : Empêcher ou Détecter un software faisant des captures d'écran à répétition

Probablement difficile à mettre en place, ce serait pourtant l'une des meilleurs solutions. En effet, la méthode que j'ai présenté doit nécessairement faire un certain de nombre de capture d'écrans dans la limite de temps disponible pour jouer. Trouver un moyen d'empêcher les captures d'écrans sur le logiciel de la poker room serait relativement efficace. Okay, mais dans ce cas, si l'attaquant fait ses captures d'écran à travers un teamviewver ? Pire encore, imaginons qu'on installe une webcam en face d'un écran, comment détecter le logiciel qui n'est pas sur le même PC ? Dans ce cas précis, si c'est pour de l'aide à la décision, les deux machines n'auraient pas besoin de communiquer... Si c'est un robot c'est autre chose mais bon ça devient compliqué. Et si j'ajoute à ça la possibilité d'instrumentaliser en ligne de commandes un logiciel de capture d'écran considéré comme légitime :frantics:

 

Conclusion

A partir du moment où l'action n'est pas automatisée (caller, folder, etc), je pense qu'on ne peut pas considérer ce logiciel comme étant un robot. Le programme prends des informations, fait des calculs sur le coup en cours puis affiche les informations à l'utilisateur, l'aidant ainsi à prendre sa décision, mais ne la prends pas lui-même.  Cette nuance peut faire la différence dans un contexte légal. Il faut pas se leurrer, les poker rooms, tout comme les joueurs réguliers (humains passionnés) ont tout intérêt à éviter la robotisation du poker. Le jeu en perdrait toute sa saveur.

En effet, il suffit de faire le parallèle avec les robots dans les jeux vidéos pour s'en inquiéter. En effet, certains MMOs sont envahis par des robots facilement disponibles sur le web. Cela a pour conséquence de créer un désintérêt croissant chez certains joueurs dépassés par des intelligences artificielles difficiles à vaincre. Que reste-t-il du plaisir de jouer dans ce cas là ? De ce problème naquît une scission dans la communauté des joueurs, aboutissant à la création de clans : ceux qui s'opposent farouchement à la robotisation, et ceux qui en profitent. On a donc d'un côté ceux qui privilégient le plaisir de jouer, et de l'autre côté ceux qui privilégie le profit. Ne soyons pas pour autant aussi pessimiste, ce scénario intervient lorsque l'éditeur du logiciel ne se donne pas les moyens de contrer ces méthodes.

Dans le cas d'une apparition croissante de robots dans le poker, il y aurait probablement une volonté de la part d'une grande partie des joueurs de se tourner vers des poker rooms "éthiques". Autrement dit, il y aurait une différenciation selon les politiques des poker rooms, les permettant ainsi de coller au plus près du marché qu'elles visent. En espérant que le Poker a encore de beaux jours devant lui.

 

Robotisation, aide à la décision, pour ou contre ? Sujet à débattre ! ^_^

Edited by TounToun

Share this post


Link to post
Share on other sites

Les trackers sont déjà un avantage pour la décision et pour cerner les joueurs,

Je pense que c'est suffisant, le reste nuirai au système déjà bien fragile ;(

Share this post


Link to post
Share on other sites
Il y a 2 heures, TouristeLilloiS a écrit :

Les trackers sont déjà un avantage pour la décision et pour cerner les joueurs,

Je pense que c'est suffisant, le reste nuirai au système déjà bien fragile ;(

C'est vrai que les trackers et autres produits existants vont déjà assez loin dans l'assistance, si en plus on rajoute à cela des outils comme TableNinja, etc.

 

Proposer des équivalents open source doit logiquement permettre de rendre accessible à tous ce genre d'outils. Encore faut-il que les produits se valent et qu'il y ai une communauté suffisamment importante pour faire le boulot. Et apparemment, freepokerdb n'a pas été mis à jour depuis 2014. Je me trompe peut être mais j'ai l'impression que le marché du poker a pris un sacré coup par rapport à 5 ans plus tôt :cry:

Edited by TounToun

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

English
Retour en haut de page
×
partypoker : Summer Freerolls
partypoker : Summer Freerolls