Programing

포커 봇 물리 치기

crosscheck 2020. 8. 7. 07:59
반응형

포커 봇 물리 치기


PokerPirate 라는 새로운 오픈 소스 포커 봇이 있습니다 . 웹 애플리케이션이 포커 봇을 감지 / 차단 / 패배시킬 수있는 창의적인 방법에 관심이 있습니다. (이것은 PokerPirate가 작성된 것과 같은 정신으로 순수한 학문적 토론입니다.)


서버 측 관점에서 봇 물리 치기

  1. 많은 온라인 포커 사이트 는 의심스러운 활동으로 인해 발생 하는 팝업 보안 문자 입력을 사용 합니다.

  2. 일부 포커 사이트는 플레이 시간과 패턴을 모니터링합니다 (즉, 최악의 시나리오는 24x7 및 16 테이블을 연속으로 플레이하는 플레이어입니다. 실제 인간 일 가능성은 아주 적습니다. 그러나 일부 플레이어 는 매우 큰 핸드를 플레이 할 수 있습니다. 경험이없는 눈에는 봇처럼 보이는 볼륨 )

  3. 결함을 던져라. 플레이어가 봇이라고 의심되는 경우 화면의 몇 픽셀에서 모든 카드 위치를 변경하고 1/100 핸드에 대해 다른 색상 / 디자인 / 패턴을 만들고 던지는 지 확인합니다. 화면을 잡을 수 없으면 모든 결정에서 시간 초과가 발생하며 이는 매우 결정적인 봇 증거입니다.

  4. 타이밍은 컴퓨터 플레이어가 큰 결정에 대한 생각을 멈추지 않고 한 번에 밀리 초 단위로 옵션에 응답하면 의심 스러울 수 있음을 알려줍니다.

  5. 자가 모니터링. 포커 웹 사이트 pokertableratings.com 데이터는 많은 대규모 사이트를 채굴합니다. 그것은 혼합 된 리셉션으로 만났고, 어떤 사람들 은 투명성을 좋아하고, 다른 사람들은 그것을 싫어합니다 . 그러나 이점은 의심스러운 플레이어 통계 (VPIP 비율, PFR 비율은 기록 될 수있는 많은 수량화 가능한 통계 중 일부)가 부정 행위의 결론으로 ​​이어지는 경우가 있다는 것입니다.

  6. 인공적으로 지능적인 분류 네트워크 는 정량화 가능한 통계를 모니터링하여 부정 행위 또는 로봇 플레이어를 분류 할 수 있습니다.

  7. 온라인 포커가 상당히 새로운 실체 였을 때, 의심스러운 플레이어 데스크탑의 일부 포커 클라이언트 소프트웨어 스크린 샷이 그들을 지원하는 프로그램을 실행하고 있는지 확인하기위한 제한된 증거와 함께 소문 과 이야기 가있었습니다. 그러나 (이것이 사실이더라도) 두 대의 컴퓨터를 실행하여 두 작업을 독립적으로 수행하면이 문제를 해결할 수 있습니다.

  8. 여러 사이트간에 반복되는 범죄자간에 정보를 공유 하는 것은 유능한 책임있는 사람들 이 명예 롭고 운영 한다면 업계에 도움이 될 것입니다.

  9. 일부 봇은 설계 상 매우 단순 할 것입니다. 자신의 플레이 스타일을 발견하고 동일한 상황에서 어떻게 작동하는지 볼 수 있다면 (이것은 매우 기본적인 전략을 수행하는 정교하지 않은 봇에서만 가능합니다) 합리적으로 빠르게 발견 할 수 있습니다.

  10. 프로그램 기능을 일관되지 않게 사용하면 플레이어가 정품임을 알 수 있습니다. 예를 들어 게임의 많은 포커 사이트에는 '내 차례가되면 접기'버튼이 있습니다. 나쁜 패를 받고 다른 플레이어가 무엇을할지 결정하기를 기다리고 있다면 많은 플레이어가이 버튼을 확인합니다. 봇은 이러한 버튼을 사용할 수 있습니다. 차이점은 봇은 사용 빈도의 극한에 있고, 아마 항상 사용하거나 전혀 사용하지 않을 것이라는 점입니다. 플레이어는 일반적으로 '자동 접기'를 누르지 만 때로는 가장 유리한 조건에서도 어쨌든 접기를 클릭합니다. 예를 들어, 진짜 플레이어는 보통 자동 접기를 누르지 만 이번에는 그렇지 않습니다. 다른 플레이어가 연기하지 않고 그들에게 둥글게 접혔습니다. 이제 그들은 가능한 가장 유리한 상태로 제시되었습니다. 이제 폴드를 누르면 처음부터 자동 접기를 누르는 경향이 컸을 것입니다. 이것은 일관되지 않거나 최적화되지 않은 / 무작위적인 행동이며 인간이되는 것과 일치합니다. 타이밍은 이러한 기능이 클릭되는시기를 다른 지표로 알려줍니다. 이것들은 모두 지표이며 결정적인 증거가 아님을 인식하는 것이 중요합니다. 이러한 행동 지표는 모두 쉽게 시뮬레이션 할 수 있습니다.

플레이어 관점에서 봇 물리 치기

  1. PokerTracker 와 같은 소프트웨어를 사용하여 가능한 한 많은 데이터를 기록하고 수집하십시오.

  2. 연주 스타일에서 패턴 식별 시도

  3. 팟 / 플레이어 수와 핸드 강도에 비례하는 베팅 크기 사이의 관계를 찾으려고합니다.

  4. 손의 범위 를 계산해보십시오 . 낮은 지분 봇은 아마도 중요한 전략적 문제가 될만큼 빈번하게 허세를 부리지는 않을 것이므로 매우 정확한 핸드 범위를 구성하는 것이 너무 까다로워서는 안됩니다.

  5. 데이터 분석 및 시행 착오를 통해 게임에서 누출 을 찾으려고 시도 누출 / 패턴이 발견되면 반복적으로 악용하고 다른 상황을 피하십시오.

인간이 적응할 수있는 경우 봇은 그다지 적지 않을 것이며 인간이 기울임 의 사슬 , 결과 지향적 사고좌절감에 의해 가중치를받는 경우 봇은 그렇지 않습니다. 이것을 유리하게 사용할 수 있습니다.

따라서 본질적으로 로봇이 결정하는 동안 실제 타이밍 지연을 시뮬레이션하고 합리적이고 현실적인 플레이 패턴을 생성 할 수있을만큼 영리하다면이를 멈출 수있는 방법이 없습니다. 임의의 조건과 간단한 백 채팅 (포커 플레이어 어휘는 일반적으로 상당히 제한적 임)을 던지면 감지하기 매우 어려운 AI 플레이어가 있습니다.

탐지를 피하기 위해 봇이 수행 할 수있는 작업

탐지를 피하는 열쇠는 가능한 한 많은 각도에서 문제에 대해 생각하는 것입니다. 당신은 매우 작고 제한적인 세계에서 지능적인 인간 행동을 시뮬레이션하려고합니다. 실행할 수있는 대부분의 행동 시뮬레이션은 상당히 분명하지만 일관성이없고 예측할 수없는 봇 일수록 발견 될 가능성이 낮아집니다.

  1. 사실적인 경기 일정을 만드십시오 (예 : 일주일에 3-5 회, 세션 당 4 시간, 1 년 동안 여기 저기없는 홀수 주).

  2. 프로그램을 실행하여 별도의 컴퓨터에서 결정을 내리고 사이트 화면이 캡처되는 경우 좀비 컴퓨터를 제어합니다.

  3. 행동 타이밍 무작위 화 (즉시 행동하지 말고 행동당 0.5 ~ 2 초 기다림)

  4. 중요한 결정을 내리는 시간. 결정이 경계선이라면 결정을 계산하고 생각을 시뮬레이션하기 위해 잠시 기다리십시오.

  5. 클라이언트 소프트웨어 기능의 무작위 사용. 모든 테이블에서 "나를 찾아 줘"버튼을 클릭하여 화장실 휴식 시간을 시뮬레이션하고 가끔 5 분 휴식을 취하십시오.

  6. 시뮬레이션 된 채팅, 포커 채팅은 종종 매우 간단한 한 줄로 이루어지며 일반적으로 토론이나 토론이 아닙니다. 감지 가능한 적절한 순간에 "불운하다"또는 "stfu"와 같은 말을합니다. 또는 코더가 자신의 봇을 모니터링하고 실행 중에 채팅에 참여하도록 할 수도 있습니다.

  7. 마우스 움직임이 사실적인지 확인합니다. 테이블이 바둑판 식으로 배열 된 경우 왼쪽 상단 테이블에서 결정을 내리지 말고 즉시 오른쪽 하단 테이블에서 결정하십시오. 대부분의 사이트 소프트웨어는 이제 키보드 단축키를 제공하며, 마우스 이동으로 사용하는 것이 더 나을 수 있습니다.

  8. 아주 간단하게 AI 분류자가 기대하지 않는 일을하십시오. 예를 들어, 1 년에 한 번 간단하고 복잡하지 않은 질문으로 전화를 겁니다 ( "오늘 로그인 할 수 없습니다!"또는 "인터넷이 다운되었습니다!"). 큰 차이는 없을 것 같지만 포커 회사는 그들이 그것을 실현 가능한 지표로 인식했을 정도로 똑똑합니다.

  9. 산발적 인 손실 세션. 기울기를 시뮬레이션 할 수 있으며 봇은 플레이가 나쁘고 때때로 돈을 잃을 수 있습니다. 모두 가 어느 시점에서 기울어집니다.

문제는 또한 포커 웹 사이트가 봇이 네트워크에서 실행되고 있는지 여부를 특별히 신경 쓰지 않는다는 것입니다. 각 플레이어는 상당한 가치가 있으며 이론적으로 순전히 냉소적 인 비즈니스 관점에서 볼 때 유일한 단점은 발견되면 나쁜 언론이 될 것입니다 .

Even when blatant exploits have been discovered, (search on google for Cereus network scandals or Absolute Poker Scandal, it's quite shocking) the business appears to survive and remain healthy, only losing well educated and winning players (of which there are not many). This increases the proportion of less skilled players to the network, which in turn attracts the good players back. It's a good ol' fashioned catch 22. An excellent argument for proper market regulation.

It is important to note, that for every game a nash equilibrium exists. Online poker has a timeline to it the way it runs now, it's going to have to move into something more social (webcam/voip) for anyone to trust it in the future (if people trust it) as bots will take over eventually as mathematically superior, and psychologically immune. The poker AI community is very active, fuelled by academia and/or capital benefit.

Simpler versions of poker such as limit poker have been very nearly solved in small search spaces. It's only a matter of time before more complex versions of the game (No Limit variations/Pot Limit Omaha etc) become beatable for artificial players.

Conclusion

Sophisticated bots just can't be detected until the industry shifts to a more social online gaming setting. This won't solve the problem, but will certainly make it harder for bots to win at the lower levels. We've already seen a slight shift with the release of PKR, 3D and a more interactive, less hands per hour version of the other sites where multitabling is quite tricky to accomplish for a player.

The problem also suffers from the nature of the industry, yet another reason to stick to the larger more reputable websites where reputation has become more and more integrated into their business model. Lack of transparency and feigned transarancy don't help the cause.

The real challenge currently for bot developers is to write a winning algorithm, this is not as trivial as it seems. Everyone who plays poker considers themselves good, winning or a break even player, which is simply not true. That is why people continue to play, even when they lose money as they are under the illusion they are simply unlucky, or their style of play is misunderstood. This arrogance and weakness in human psychology has cost losing players a lot of money and is the fundamental reason that poker can still be profitable.

Poker is a vastly complicated game that takes years to get good at (The old adage remains true, "Ten minutes to learn, a lifetime to master"). The luck element is extremely limited in the long term.

Like any other profession, to get good, you need to study for hundreds upon hundreds of hours, and play for many thousands. You will understand things that less experienced players wont understand, spot things the less experienced wont spot. The learning goes on for a very very long time, perhaps longer than we can ever live. It's a complicated game.

How often have you seen a high stakes cash game on the television and heard someone shout at it "That's an easy call!" thus prooving that amateurs really don't understand or recognise sophistication in play, and truly beleive the game at that level is still ultimately simple. It isn't. Those high stakes players (a lot of the time) are there on the television because they are really really really good. There is also probably a complicated meta game being played as well, which our amauer can't recognise the existance of. The amatuer wouldn't stand over a chess master and shout at them to move their knight, yet because of the dynamic of poker being imperfect information their psychology makes them truly beleive what they are saying. Like in chess, decisions can be intricate, sensitive and extremely important to the overall game. As the game increases in complexity, trivial decisions are not so trivial anymore, because your opponent expects them.

Once you move your bot or your game up the levels, you inevitably will come across a larger populous of more skilled players. Then, the complexity of your strategy is going to have to go up to the next level, taking into account table images, range balancing, sophisticated and intelligent bluffing (IE not just bluffing at weakness, bluffing at ranges and bluffing on image etc), with more detailed hand range analysis. It really is a different game as you move up.

Once a winning bot has been written, without doubt the coder will have enough skill, knowledge and common sense to apply the bot in an undetectable fashion. This is trivial for them.

So there really is nothing you can do. If you want to play online, understand the risks. Never risk more money than you can afford, and attempt to keep accurate records of spending so you don't have a misguided, unrealistic and ultimately damaging over estimation of your own ability. Have stop losses, and leave the table if you don't have an edge, or if you are unsure if you have an edge! Of course, if everyone did that no one would win, that's the predatory and exploitative nature of the game, that's where the competition comes from and that's what makes it fun.


There are three separate areas to consider. The bot has to figure out the state of the table, make a decision, and send the decision back to the host.

Figuring out the state of the table is much easier if it is sent across the wire in some recognizable form or displayed to the user as standard text. First, make image recognition the only option, then make it as hard as possible. Display the cards in 3D and slowly change the orientation and position of the cards. Animate little flickers or fireworks in front of the cards so any given screen shot may be illegible but it takes a while even to determine that.

There is nothing to be done with making the decision. Trying to decide if a decision was made by a human or not is like a turing test with almost no information.

Sending the decision back can be made difficult by using 3D again. Make it hard to send packets directly or otherwise submit a decision by any means other than clicking a button with the mouse. Move the buttons slightly with every action or have them float slowly around the play area while awaiting a decision. Disable any accessibility type features that allow buttons to be found or manipulated.


PokerPirate, like nearly every poker bot ever written, works by screen scraping and simulating mouse clicks in a Windows poker application. Therefore, the lynch-pin to the system is its ability recognize objects in the game and make actions in the window. As smart as it may be at poker, it likely still has trouble with these basic operations.

Therefore, Obvious ways to thwart this bot would include:

  1. Implement a CAPTCHA, either before the game, or when other factors suggest a player may be a bot.
  2. Make the table graphics more complicated, or change theme throughout the game.
  3. Detect unusually fast and/or robotic mouse movements and clicks (a human will never move a mouse in a mathematically perfect line).

Ideally the only valid solution is to create a honeypot logic that lures an engaged bot by providing the temptation of a more favorable logic condition that favors the bot's most ideal behavioral responses. Once the bot is engaged in the honeypot you must continually feed the bot conditions that it prefers presuming the bot does not have a set timeout. Then the bot can be measured, logged, and studied. In addition to the bot you would also have the network and session data isolated for study provided the bot is not connecting via TOR.

In this situation deterministic considerations suited to differentiating a bot from a human are less severe, however, deterministic consideration upon identification of the bot's behavior become more severe. Unfortunately, the bot's owner can make changes to the bot to prevent such identification if that owner is aware of the honeypot condition, or the logical consideration thereof.


Defeating poker bots can take two forms: you can try and identify them and ban them from the system, or you can just beat them at poker. Beating them at poker is the more interesting academic question. :-)

See here for some papers about beating poker bots: http://www.cs.cmu.edu/~sganzfri/


Look at this post

This post also has some good tips on how to thwart them.


Another thought on messing with the screen to make it hard to scan:

Make the card out of a whole slew of different colors--close in human eye terms but not the same. This would make it harder to pick out the stuff to read. On the flip side, put fake writing on the card in colors that the human eye won't separate from the background.


Is the problem with bots the fact that they play better than decent human players, or that they can wait around 24/7 for bad players to appear and then try to milk them?

Also, would it be "legitimate" or "cheating" for someone to have a computer sitting next to him while he played poker, consulting that other computer for advice?

I'm not sure how one can claim the solution space for limit poker is "solved" when the optimal strategy for a player will be influenced by what is known about the opponents. How can any attempt at analyzing players claim to be so perfect that it could not be improved?


If you have access to a lot of matches, you can take a data mining approach. The playing strength of an AI should be pretty consistent, while there are probably simple patterns for humans - weaker in the first few warm-up rounds, and strength deteriorates after playing for a long time. Also, human decision times probably go up when there is more money at stake.

If you have access to mouse moves (or at least click locations which is true even for web apps), it should be fairly simple to recognize bots, except for the most sophisticated ones. Humans don't move the mouse in an exact straight line, they have speedup and slowdown periods, statistically describable click location distributions, etc.


Have a look at Ajax Control Toolkit NoBot:

NoBot employs a few different anti-bot techniques:

* Forcing the client's browser to perform a configurable JavaScript calculation and verifying the result as part of the postback. (Ex: the calculation may be a simple numeric one, or may also involve the DOM for added assurance that a browser is involved)

* Enforcing a configurable delay between when a form is requested and when it can be posted back. (Ex: a human is unlikely to complete a form in less than two seconds)

* Enforcing a configurable limit to the number of acceptable requests per IP address per unit of time. (Ex: a human is unlikely to submit the same form more than five times in one minute)

A 100% solution is impossible, what I am purposing is a solution that will save money by using the AI against its self. Have an instance of PokerPirate's AI running on the server side and playing as an invisible player in every game. If any player performs too many identical actions then they are probably running an instance of PokerPirate. This is a kind of Honeypot or trap that the attacker can fall into. The attacker can defend against this honeypot by making their bot less successful. Thus this is creating a came of "Cat and Mouse" in which the attacker can always steal some money and the defender can always save some money.


There are much easier ways. yes. a lot of the suggestions are right, and needed. but about 90% of the frauds are detected in too simple manner.

if someone let a bot work for him, he will, after some time, want that a second bot is working for him. (another machine or whatsoever) but: he will use the same password, as it is hard to remember 2 (<--- sarcastic)

whats left: check the accounts with same game behavior and same password hash.

참고URL : https://stackoverflow.com/questions/2717599/defeating-a-poker-bot

반응형