Jump to content
This Topic

Recommended Posts

Il y a 14 heures, Baxtou a écrit :

Screenshot de ce traffic "après déchiffrement" stp (tcpdump, wireshark ou truc du genre). L'idée que tu sois capable de décrypter ces transactions me paraît hautement improbable. 

Enfin concernant les éléments de sécurité ça me paraît logique oui. Winamax serait bien bête d'expliquer en public ce qu'ils vérifient concrètement et ainsi donner à n'importe quel petit malin la recette d'un bot indétectable.

 

Pas besoin de screenshot. L'ensemble du protocole est en mode texte (lol ^_^) avec du JSON. C'est donc très simple à analyser, une fois le flux déchiffré.

Voilà un exemple, d'une petite session complète de cash game, dans le sens client -> serveur, après déchiffrement :

TIME:GET T1=0
TOKEN:VALIDATE TOKEN="1472738992:1600704523094376410969380531833598" VIP="wam.tokenmanager.wam_tkn_1"
TABLE:JOIN {"PVW":"1","PP":"1","ID":"cg.tamgr.cg_4.t61055","PO":"1"}
TABLE:LEAVE
TOKEN:GENERATE VIP="cg"
TOKEN:GENERATE VIP="cg"
TIME:GET T1=0
TOKEN:VALIDATE TOKEN="1472739009:5015831472033005252165376062031328" VIP="wam.tokenmanager.wam_tkn_1"
TIME:GET T1=0
TOKEN:VALIDATE TOKEN="1472739022:51641599833832810744526117730851779" VIP="wam.tokenmanager.wam_tkn_2"
TABLE:JOIN {"PVW":"0","PP":"1","ID":"cg.tamgr.cg_4.t60382","PO":"1"}
TABLE:SITIN {"S":"1"}
TABLE:BUYIN {"A":"2"}
TABLE:CONFIGURE {"BB_OPT":{"WAIT_BB":"0","AUTO_POST":"1"},"REBUY_OPT":{"ENABLED":"1","STACK_MIN":"2","MODE":"manual"},"TB_OPT":{"MODE":"auto"},"HH_OPT":{"HAND_GET":"manual"},"REQID":"1","RK":"cg.tamgr.cg_4.t60382","MUCK_OPT":{"UNCALLED_CARDS":"0","LOOSING_CARDS":"0"},"FOC_OPT":"1","SITOUT_OPT":{"NEXT_BB":"0","NEXT_HAND":"0"}}
TABLE:ACTION {"A":"0.04","T":"raise","ID":"1"}
TABLE:SHOWCARDS {"V":"0"}
TABLE:ACTION {"A":"0.04","T":"raise","ID":"4"}
TABLE:ACTION {"A":"0.09","T":"bet","ID":"6"}
TABLE:SHOWCARDS {"V":"0"}
TABLE:ACTION {"A":"0.04","T":"raise","ID":"8"}
TABLE:SHOWCARDS {"V":"0"}
CLIENT:PING_OK
TABLE:ACTION {"A":"0.04","T":"raise","ID":"11"}
TABLE:ACTION {"ID":"13","T":"check"}
TABLE:ACTION {"ID":"15","T":"call"}
TABLE:ACTION {"ID":"16","T":"check"}
CLIENT:PING_OK
TABLE:ACTION {"A":"0.15","T":"raise","ID":"18"}
TABLE:ACTION {"ID":"20","T":"check"}
TABLE:ACTION {"ID":"22","T":"call"}
TABLE:ACTION {"A":"0.04","T":"raise","ID":"23"}
TABLE:SHOWCARDS {"V":"0"}
TABLE:SHOWCARDS {"V":"0"}
TABLE:SITOUT
TABLE:ACTION {"ID":"26","T":"fold"}
TABLE:LEAVE

Share this post


Link to post
Share on other sites
Le 12/03/2016 à 20:20, Tostaky06 a écrit :

ça se fait facilement ça, t'as des fonctions random à l'intérieur d'un range (genre faire l'action aléatoirement entre 2 et 10 sec .

 

En fait chez les humains le temps de réaction doit etre assez dépendant de la taille du pot, du nombre de table jouées, etc ...

Un simple random serait détectable , si les gens chargés de les détecter étaient compétant

Je pense que meme le standard de déviation du temps de réponse pourrait etre analysé

Share this post


Link to post
Share on other sites
il y a une heure, Katya_18 a écrit :

En fait chez les humains le temps de réaction doit etre assez dépendant de la taille du pot, du nombre de table jouées, etc ...

Un simple random serait détectable , si les gens chargés de les détecter étaient compétant

Je pense que meme le standard de déviation du temps de réponse pourrait etre analysé

Si c'est aussi simple de lire les flux tcp, je pense que t'as le temps de le voir venir avant qu'ils trouvent ceux qui utilisent les random range pour tous les cas ... 

Share this post


Link to post
Share on other sites

Vu que ça n'a pas l'air crypté, je me demande même si en poussant le vice un peu plus loin, est ce qu'on pourrait faire fold quelqu'un d'autre volontairement en forgeant le packet.

Share this post


Link to post
Share on other sites
Il y a 11 heures, CoderMaster a écrit :

Pas besoin de screenshot. L'ensemble du protocole est en mode texte (lol ^_^) avec du JSON. C'est donc très simple à analyser, une fois le flux déchiffré.

Voilà un exemple, d'une petite session complète de cash game, dans le sens client -> serveur, après déchiffrement :

TIME:GET T1=0
TOKEN:VALIDATE TOKEN="1472738992:1600704523094376410969380531833598" VIP="wam.tokenmanager.wam_tkn_1"
TABLE:JOIN {"PVW":"1","PP":"1","ID":"cg.tamgr.cg_4.t61055","PO":"1"}
TABLE:LEAVE
TOKEN:GENERATE VIP="cg"
TOKEN:GENERATE VIP="cg"
TIME:GET T1=0
TOKEN:VALIDATE TOKEN="1472739009:5015831472033005252165376062031328" VIP="wam.tokenmanager.wam_tkn_1"
TIME:GET T1=0
TOKEN:VALIDATE TOKEN="1472739022:51641599833832810744526117730851779" VIP="wam.tokenmanager.wam_tkn_2"
TABLE:JOIN {"PVW":"0","PP":"1","ID":"cg.tamgr.cg_4.t60382","PO":"1"}
TABLE:SITIN {"S":"1"}
TABLE:BUYIN {"A":"2"}
TABLE:CONFIGURE {"BB_OPT":{"WAIT_BB":"0","AUTO_POST":"1"},"REBUY_OPT":{"ENABLED":"1","STACK_MIN":"2","MODE":"manual"},"TB_OPT":{"MODE":"auto"},"HH_OPT":{"HAND_GET":"manual"},"REQID":"1","RK":"cg.tamgr.cg_4.t60382","MUCK_OPT":{"UNCALLED_CARDS":"0","LOOSING_CARDS":"0"},"FOC_OPT":"1","SITOUT_OPT":{"NEXT_BB":"0","NEXT_HAND":"0"}}
TABLE:ACTION {"A":"0.04","T":"raise","ID":"1"}
TABLE:SHOWCARDS {"V":"0"}
TABLE:ACTION {"A":"0.04","T":"raise","ID":"4"}
TABLE:ACTION {"A":"0.09","T":"bet","ID":"6"}
TABLE:SHOWCARDS {"V":"0"}
TABLE:ACTION {"A":"0.04","T":"raise","ID":"8"}
TABLE:SHOWCARDS {"V":"0"}
CLIENT:PING_OK
TABLE:ACTION {"A":"0.04","T":"raise","ID":"11"}
TABLE:ACTION {"ID":"13","T":"check"}
TABLE:ACTION {"ID":"15","T":"call"}
TABLE:ACTION {"ID":"16","T":"check"}
CLIENT:PING_OK
TABLE:ACTION {"A":"0.15","T":"raise","ID":"18"}
TABLE:ACTION {"ID":"20","T":"check"}
TABLE:ACTION {"ID":"22","T":"call"}
TABLE:ACTION {"A":"0.04","T":"raise","ID":"23"}
TABLE:SHOWCARDS {"V":"0"}
TABLE:SHOWCARDS {"V":"0"}
TABLE:SITOUT
TABLE:ACTION {"ID":"26","T":"fold"}
TABLE:LEAVE

Du coup je ne comprends pas pourquoi tu parles de "décrypter le flux" alors qu'il est de tout évidence en clair. 

Share this post


Link to post
Share on other sites

J'ai l'impression que vous ne parlez pas de la même chose, pour toi déchiffrer c'est la conversion hexa -> texte.  Mais je pense que ça devrait être crypté, c'est pas normal que tu puisses lire ça ... 

 

Avec ça adieu les missclics et autres, le bot n'a juste qu'à envoyer ce code pour "jouer".

Edited by Tostaky06

Share this post


Link to post
Share on other sites

Non, j'utilise parfaitement les bons termes. Je suis ingénieur spécialisé dans la sécurité des systèmes d'informations. Les données sont bien chiffrées entre le client (votre logiciel de poker) et le serveur (Winamax). Sous cette couche de chiffrement, on retrouve un protocole en mode texte sérialisé en JSON dont j'ai posté ici même une partie, après déchiffrement (donc en clair).

Après vous pouvez vous demander comment on peut réussir à déchiffrer ce genre de données, mais la réponse n'a pas lieu d'être ici. C'est un forum de poker, pas un forum d'experts en informatique. :)

Edited by CoderMaster

Share this post


Link to post
Share on other sites

Ça me interrese de savoir comment tu as fait.

Ça doit être du https donc du ssl.

Si je dis pas de connexion ya d abord un chiffrement asymétrique , donc faut trouver la clé privée (dans le binaire flash ?)puis un chiffrement symetrique

Share this post


Link to post
Share on other sites

" Après avoir eu un temps d'avance sur la concurrence avec la création des Expresso, du Bingo... après avoir été l'un des premiers sites propice pour le développement de bot en tout genre... Nous allons encore plus loin dans l'innovation en donnant à n'importe quel informaticiens la possibilité de décrypter les board en avant première... "

 

" Winamax l'important c'est clairement pas les cartes... ni même ce que vous en faites..."

Share this post


Link to post
Share on other sites
Il y a 9 heures, CoderMaster a écrit :

Après vous pouvez vous demander comment on peut réussir à déchiffrer ce genre de données, mais la réponse n'a pas lieu d'être ici. C'est un forum de poker, pas un forum d'experts en informatique. :)

Maintenant que tu as montré que tu avais break le chiffrement, je pense que c'est mieux que tu indiques la faiblesse dans le soft de Wina : (a) aux joueurs (b) au support de Wina (c) à l'ARJEL. Si tu ne veux pas te mettre en avant via (b) et (c), utilise (a) et laisse tous ceux qui veulent lutter contre les bots sur Wina agir sur les points (b) et (c).

 

Share this post


Link to post
Share on other sites

J'espère qu'il y a un contrôle coté serveur de la main, autrement voici l'impact:

on est UTG et on a ;2c;3c de trèfle, on fold pas sur de gagner avec cette main à ce moment là

la main continue, on a raise, call,call

flop : ;4c;Th;5c

on a raise, call, call 

sortie du ;6c

on a allin, call et call, du coup maintenant si on connait la structure des move, on call aussi (on a fold au début) avec notre quinte flush.

river : "random"

Résultat en face, il y avait AA, KK,QQ mais nous on gagne car on a suivi finalement :yahoo:

 

Côté client l'interface graphique nous affiche plus de bouton si on a fold on ne plu call, mais si on injecte par code alors on peut call les allin.

 

En espérant un contrôle côté serveur de la main, il y aura détection d'une anomalie et l'action de notre call ne sera pas prise en compte car on a fold préflop.

 

 

Share this post


Link to post
Share on other sites

J'y comprends vraiment que dalle à ce que vous racontez, par contre je trouve surprenant qu'il n'y ait aucune réaction. Surtout de personnes ayant un minimum de connaissances sur le sujet, et pensant que vous racontez de la m**de. Non pas que cela en soit, car même en vulgarisant j'suis paumé, donc pas d'avis :D

Questions,

- quel est le truc facile que quelqu'un de malintentionné peut utiliser à son avantage?

- jusqu'où cela peut aller, en gros on peut supposer que des experts dans le domaine pourrait faire quoi avec des moyens?

Share this post


Link to post
Share on other sites
Il y a 10 heures, vin120 a écrit :

J'espère qu'il y a un contrôle coté serveur de la main, autrement voici l'impact:

(...) bla bla bla

 

nan mais chacune des test actions est envoyée au serveur, et ce qui en decoule vient du serveur. ton app sur ton pc n'est en fait qu'un "terminal" qui n'affiche que les actions du serveur.

 

ce que tu decrit la n'est pas possible

Share this post


Link to post
Share on other sites

Bon sinon plus sérieusement, c'est évident que les bots ont fait la même chose pour connaitre l'état du board en temps réel, maintenant c'est sûr vous devez changer la clé, mais en réfléchissant un peu plus s'il vous plait, rajoutez un champs dans votre JSON avec une valeur par défaut pour chaques bouton (Check, Raise, Fold) et si vous recevez par hasard des requêtes sur votre serveur sans cette valeur, c'est que le packet a été forgé par un bot qui ne clique même pas vos boutons ... et là ... vous les choppez tous d'un coup ... bref ... 

Share this post


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

 

nan mais chacune des test actions est envoyée au serveur, et ce qui en decoule vient du serveur. ton app sur ton pc n'est en fait qu'un "terminal" qui n'affiche que les actions du serveur.

 

ce que tu decrit la n'est pas possible

c'est bien le client qui envoie l'action au serveur, donc je peux envoyer un JSON d'action raise au serveur par programme sans utiliser l'interface du client winamax si le message est décrypté/crypté au bon format et envoyé vers le serveur.

heureusement qu'il y a du SSL mais vu que sur ce forum on a un message décrypté ...

Pour ta culture et sans être trop technique : http://alexandre.clain.info/pourquoi-faut-il-abandonner-json/

 

Share this post


Link to post
Share on other sites

Je pense que les bots les plus évolués utilisent l'interface utilisateur comme les humains.

L'IA tourne sur un serveur qui pilote le pc sur lequel est installé le client poker

La récupération des screenshots pour connaitre les board est faite avec un device harware

De cette manière c'est vraiment indétectable meme par PS, car aucun process ne tourne sur le PC

On pourrait meme imaginer un hud qui indiquerait les play GTO et c'est l'humain qui piloterait tout.

Bref une vrai solution serait de complexifier le jeu, en agrandissant l'arbre de jeu pour qu'ils soient intractable par une ia

Par exemple on dealerait les cartes du  flop en 3fois avec 3 betting round

Ca ferait un holdem à 6 street qu'on pourrait jouer peut etre 1000 BB deep

 

Share this post


Link to post
Share on other sites
il y a 11 minutes, Katya_18 a écrit :

On pourrait meme imaginer un hud qui indiquerait les play GTO et c'est l'humain qui piloterait tout.

Bref une vrai solution serait de complexifier le jeu, en agrandissant l'arbre de jeu pour qu'ils soient intractable par une ia

Une IA sait calculer l'équilibre d'un arbre à 10¹⁸ branches/feuilles, c'est la résolution du Texas à mises fixes (Limit). Ca prend un peu moins de 70 jours à 200 ordis pour résoudre le bouzin.

L'arbre du Texas à mises no-limit, c'est 10¹⁶⁵ branches/feuilles, donc le GTO pour tous, ce n'est pas demain la veille.

Share this post


Link to post
Share on other sites
il y a 25 minutes, Katya_18 a écrit :

La récupération des screenshots pour connaitre les board est faite avec un device harware

De cette manière c'est vraiment indétectable meme par PS, car aucun process ne tourne sur le PC

 

 

ça ne serait pas efficace du tout ...

Déjà la reconnaissance de caractère ça n'est pas instantanée, si tu externalises, ça veut dire que tu dois vérifier toutes les n secondes, donc tu perds encore du temps, + le temps de calculer la stratégie, sans compter la fiabilité de la reconnaissance des caractères ... ça serait complètement de l'amateurisme comparé à la lecture des flux tcp.

Et concernant la confidentialité , je pense qu'au pire PS et Wina peut vérifier la présence d'un process (les alertes que je reçois pour Holdem manager 1), mais bon si c'est ton programme, ça n'est pas un problème de le renommer ... et ça devient transparent pour eux, à moins qu'ils outrepassent leur droit, mais ça c'est un autre sujet ...

Share this post


Link to post
Share on other sites

Bonjour CodeMaster,

Nous considérons notre protocole de communication comme publique. Il n'existe AUCUN moyen de le rendre complètement secret puisque un des interlocuteurs, le client, est publique lui aussi. Il est possible, au mieux, de le rendre difficilement compréhensible en utilisant une communication utilisant du binaire plutôt que du JSON comme on le fait. Mais, au final, ça ne changerait rien : ça ne ferait que repousser le problème.

Etant ingénieur sécurité, tu sais très bien que si on faisait reposer notre sécurité sur le secret de notre protocole de communication, nous serions des inconscients (et nous n'aurions pas eu notre homologation auprès de l'ARJEL). Nos serveurs de jeux ne se fient JAMAIS aux clients car ils peuvent être malveillants ou tout simplement buggués. Evidemment, toutes les actions des clients sont vérifiées comme légitimes et respectant les règles du jeu avant d'être effectuées. Tu ne pourras jamais overbet en pot-limit même si tu trafiques le message du client.

Attention, tout mon parapgraphe précédent parle de notre PROTOCOLE de communication et non les communications de nos utilisateurs. Celles-ci sont protégées par du SSL/TLS en respectant les standards les plus strictes en terme de Cypher et de longueur de clé. Ces standards nous garantissent que, d'une part, personne ne pourra intercepter la communication et, d'autre part, forger un message à la place d'un autre joueur.

J'aimerais donc que tu détailles les procédés que tu as utilisé pour intercepter le protocole. Tu n'as pas déchiffré notre communication au sens crypto, tu y as simplement eu accès. Et c'est très simple : soit tu places un hook au bon endroit dans la VM Air (genre le write/read dans la socket TLS), soit tu fais un man-in-the-middle avec un proxy en prenant soin d'ajouter son certificat comme certificat légitime dans ton OS. Si tu es un ingénieur confirmé, tu as peut-être même scanné la mémoire. Dans tous les cas, tu n'as pas cassé notre chiffrement. Si tel était le cas, tu serais millionnaire et l'Internet serait mort. Tu es actuellement dans l'incapacité de lire les communications des autres joueurs même si tu interceptais leur flux TCP.

Alors non, nous ne sommes pas ici dans un forum d'informatique mais les doutes que tu laisses planer sur les moyens utilisés font imaginer n'importe quoi aux utilisateurs. Il n'y a qu'à voir les différentes réactions légitimes à ton message pour te rendre compte que tu dois apporter des précisions quant à la portée de ta "découverte".

La seule information que tu apportes est qu'un bot pourrait directement utiliser notre protocole de communication. Mais, entre nous, c'est une très mauvaise idée :P

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
×