检测在线扑克作弊者

27
最近在一个大型扑克网站上出现了一些玩家可能通过利用发现的安全漏洞能够在游戏过程中看到所有对手的牌
一个天真的骗子会以惊人的速度获胜,这些作弊通常很快被发现,如果没有被快速发现,他们可以通过快速浏览手牌历史记录来轻松检测到。
更难的问题出现在骗子表现出智慧的时候,在他们必然会被叫牌的地方虚张声势,在河流注码时打最差的手牌,基本前提是他们故意输掉一些底池,以掩盖他们看到其他玩家牌的能力,并以相当真实的速度获胜。
假设有:
  • 数百万条经过验证和完整信息的手牌历史数据集
  • 理论上无限的计算机算力
  • 假设游戏为无限制Hold'em,尽管奥马哈或限制扑克的建议可能有益
我们如何合理准确地分类这些骗子?原始的2+2线程呼吁提出想法,我认为SO社区可能有一些有用的建议。
这也是一个有趣的问题,因为它是当前的,并且如果有人找到创造性的解决方案,它在改善世界方面具有实际应用,因为当发现作弊者时,有很大的机会将资金退还给真正的玩家。

3
+1,非常有趣。我甚至不知道如何开始解决这个问题,但我坐在椅子边缘等待看看其他人可能会想些什么 :) (翻译:非常有趣,我不知道该如何开始解决这个问题,但我坐在椅子边缘迫不及待地等待看看其他人的想法 :)) - wasatz
我认为这是一个非常好的问题,希望有人能提供一个好的答案,因为我对如何解决这样的问题非常感兴趣。 - Younes
2
这个问题是否应该在http://stats.stackexchange.com上更好? - Vicky
这是一个有趣的问题,因为它是当前存在的,并且如果有人找到创造性的解决方案,它在改善世界方面具有真正的应用价值。当被发现作弊者时,有很大的机会让真正的玩家获得退款。 - Tom Gullen
1
作弊者面临的问题类似于破解代码和情报机构面临的问题:总是根据情报行事会暴露他们的底牌。这表明应该将问题更普遍地描述,包括人类心理学方面的内容。 - TechNeilogy
11个回答

7

将所有玩家的V $PIP与胜率进行统计显着性处理,以便能够用肉眼识别出异常值。我认为这是首先要做的基本事情。

然后您可以绘制WTSD与胜率、有摊牌赢率与无摊牌赢率、%在摊牌时获胜与VPIP之间的关系图。

您选择的统计数据必须具有显着性。如果您了解扑克牌,则上述选择是有意义的。

这不是机器的工作,异常值需要通过肉眼检测。

编辑:由于变异性很大,奥马哈更加困难。有些弱玩家会取得难以置信的连胜纪录,而又没有作弊。


实际上,我认为你可以通过这种方式检测出大多数作弊行为。 - Alexandre C.
您绝对可以绘制其他统计数据,河流攻击因子需要很多手才能收敛。但任何作弊者都倾向于玩更多的手牌。即使是额外2/3% 的VPIP值也值得考虑;如果您实际查看VPIP与胜率之间的图表,则会有一个平滑的密度云,您的作弊者将难以适应其中。 - Alexandre C.
您可以将寻找平衡策略的技术应用于寻找作弊策略(让他们知道其他玩家的手牌),然后如果不是直接使其无价值,那么识别作弊者的这种方法就会远远没有那么有用。 - Nick Larsen
@NickLarsen:这样一个天才的作弊者,回答中提到的可信统计数据,应该能够获得有利可图的扑克牌局。通常来说,作弊者都是比较差劲的扑克玩家。 - Alexandre C.
没错,但是重要的是要找出所有作弊者,而不仅仅是最明显的那些,并且以确定性的方式找到他们。 - Nick Larsen
显示剩余5条评论

6

我很抱歉这么直言不讳,但是除了@Erwin Smout之外,本页上的所有答案都是无用的。

统计分析对于识别扑克作弊者来说毫无用处
我知道问题允许系统有数百万手历史记录可用。我敢肯定有玩家拥有如此多的手牌历史记录,让人难以置信。但我已经在线玩了十多年了,这并不是一小段时间。据我所知,当涉及到识别在线扑克作弊者时,有两件相互冲突的事情是真实存在的:它需要在短时间内完成,而像任何一个好的小偷一样,网络扑克作弊者在行完之后就会立刻逃离。

这篇论文中,有一个很好的关于扑克变量的例子,该变量是通过将总是加注的玩家与总是跟注的玩家匹配(PDF的第13页)。 在100,000手牌的过程中,远超过大多数人愿意与能看到他们手牌的人玩的次数,总是跟注的玩家赢得了平均0.026个小盲注。我知道这听起来不像什么,但假设赌注为$5-10,那就是$6,500。也许有人能帮我找到链接,但是专业获胜率的测量值并不比这大多少。 请注意,这两个玩家都没有作弊,而在这样数量的手牌中,统计上预期的差异要小于实际发生的差异。

在线扑克玩家需要理解的事情
扑克是一种赌博游戏。它是一种技巧游戏,因为某些玩家能够从其对手那里收集到比对手更多的信息,而那些额外的信息通常与看别人的牌一样有用。即使是比他们典型对手更好的玩家,最终也会成为输家。如果您不理解这一点,那么您只是在任意少量的手中通过统计数据寻找巫婆来击败您的任何对手。

可以采取哪些措施?
请记住,问题陈述了作弊者可以看到其他玩家的牌,您不需要进行统计分析来识别他们。这只有三种可能的方式。

首先,服务器故意向客户端发送信息是明显的安全问题,不应该实施(我认为即使对于管理员也是如此)。如果发现某个网站允许这种情况发生,那么这需要玩家自己负责将他们的资金转移到其他地方,或者拒绝在该网站上玩游戏,直到糟糕的设计决策得到纠正。网站还应该告知玩家对站点上进行的每一手牌都经历了哪些步骤,以便他们在首次选择网站时可以进行决策。通过模糊化来保护安全是不允许的。至于捕捉窃贼,这些信息应该保存在服务器的日志文件中,并且应该定期审计以查找此类行为。
其次,用户已经黑进扑克服务器,他们会很快知道这件事,否则一旦被曝光,再次确定玩哪里就是玩家的责任。在这种情况下,作弊者可能会在大多数国家受到起诉。
最后,发牌算法可能已经被破解。这在过去曾是一大问题,因为一些公司使用一些幼稚的方法来发牌,但大部分主要的公司已通过从登录到系统的玩家处获取随机输入以及使用生成熵的硬件来为其随机数生成器提供种子来解决了这个问题。但这并不是说它无法被破解。如果是这种情况,唯一的选择就是公司重新设计一个随机数生成器。

此外,将资金重新分配给输给作弊者的玩家是一个可怕的想法,因为往往无法准确确定每个玩家被盗的价值。已经有一些著名的在线扑克作弊者被抓到,向他们的对手提供资金的方法往往对那些避开他们(尤其是在锦标赛中)的玩家更有利,而不是实际损失价值的玩家。 - Nick Larsen
很好的回复。你似乎比我更了解这个话题。感谢您的帖子。虽然我从未理解过在在线扑克中作弊的欲望。我玩很多在线扑克是因为我喜欢这个游戏,但如果有人在我坐的桌子上真的作弊,我甚至不会在意。我玩的所有在线扑克都是免费的,所以筹码毫无意义。我还觉得很多人比平时更加激进,只是因为糟糕的表现风险比现实生活中低得多。似乎不值得担心。你怎么想? - Eric Ryan Harrison
在桌子上的赌注定义了游戏,比发牌规则更重要。在在线扑克免费赌资中,你的筹码实际上是无限的,尽管他们可能只给你一小笔钱开始。当人们有更多的钱时自然会自由地(没有双关语)玩更高的赌注。尽管自由赌资和真钱扑克中你所做的决定不同,但游戏是相同的,计算是完全相同的。而且,虽然你在自由赌资中的决策不同于真钱扑克中的决策,但它们应该仍基于相同的原则。 - Nick Larsen
如果你想将作弊者定义为串通一气的玩家,而不是能够看到其他玩家的牌,那么有很多技术可以用来识别他们。大多数网站已经开始实施最明显的防御措施了。 - Nick Larsen
2
很好的回答,但也许有点偏离重点了?我们并不关心抓住勾结者。发现了一个安全问题,理论上给黑客查看对手牌的能力,扑克网站想确定是否有人利用了这个漏洞。就是这样。 - Tom Gullen

5

好的。IT人对各种错误的问题都感到着迷。

一个更好的问题是“作弊怎么可能?”。根本没有必要在摊牌之前将对手的手发送到网络上。如果这些数据没有发送到客户端,那么他们怎么能作弊呢?

他们需要侵入服务器。不要告诉我这是不可预防的。


3
这并不排除勾结的可能性,而勾结是被禁止的。 - Alexandre C.
1
另一个可能性是随机化/洗牌系统根本不是随机的,用户已经发现了这个系统,并使用它来“知道”哪些卡牌已经被发放...但无论如何,修复实现将是最高优先级。在大量历史游戏结果数据集中找出它们的方法似乎归结为一个非常有趣的学术问题。 - Eric Ryan Harrison
1
@Eric:一个编写正确的扑克服务器,可以让数百个用户同时玩耍,因为单个伪随机数生成器会在随机时间间隔内被多个桌子同时使用,所以它几乎是一个真正的随机数生成器。通过记录单个桌子的随机数据来预测下一个数字将是不可能的。另一方面,如果每个桌子上都有一个机器人记录所有内容,那么可能会有问题,但这需要假设您具有零延迟或服务器不会怀疑来自单个区域的多个连接。 - Lie Ryan
1
@Eric:唯一剩下的解释是服务器在所有人为计分打开卡牌之前就发送了卡牌数据。游戏似乎试图加密这些卡牌数据,而有人找到了破解加密的方法。这本来就是完全错误的。客户端应该只接收关于自己的卡牌信息,并且只在实际发牌时接收其他卡牌数据。这样,窥视他人的卡牌或未发牌的卡牌的唯一方法是黑客攻击服务器,这应该引起警惕。 - Lie Ryan

2
我认为如果他们聪明地作弊,所以赢得不太多的回合,那么这种作弊是无法被检测到的。我不相信你能看出运气和作弊之间的区别。
但我想知道哪个在线扑克提供商存在作弊问题。因为如果扑克软件编码正确,我就无法想象如何进行作弊。如果让我编写在线扑克软件,用户将无法看到对手的牌,因为他无法获得此信息。这就是我会这样做的方式。
1. 用户和服务器之间的所有连接都是加密的。 2. 用户之间没有通信,用户只能与服务器交流。 3. 服务器只向每个用户展示该用户应该看到的牌,而不会展示其他牌,除非回合结束并且用户打开自己的牌。
在这里,用户唯一能作弊的方法是与其他玩家联合或冒充多个具有不同帐户和访问IP的玩家,并打开另一个通道来进行玩家之间的交流。这样,该组的优势更大,因为他们知道的不仅仅是自己的牌,但仍然无法看到其他牌。因为现在是一群人在作弊,所以更难检测到,因为他们可以与多个玩家分享收益,而且这个组甚至可能有一个输得比赢得多的玩家但仍然总体上获胜。

1
你会惊讶于一些扑克网站的无能。最近,发现UltimateBet在传输用户的登录详细信息时没有进行加密处理。这种情况已经持续了很长时间。 - Tom Gullen
哇.. 令我惊讶的是有人会这样做。 - Charles
同一网站还标记了某些用户(员工)可以查看对手的牌,他们共同窃取了数百万、可能是数千万其他玩家的资金。 - Tom Gullen

1

我怀疑你无法确定某人是在作弊还是只是擅长扑克牌,超过一定程度后。

然而,你可以通过查看在你的时间段内受益最多的用户来缩小可能作弊的候选人范围。这将排除绝大多数用户,使你能够更好地集中资源。(当然,这将包括擅长扑克牌的用户。)

完成这些步骤后,你可以比较作弊可能发生时和之后或之前的游戏历史记录,看看用户的成功率是否降低或提高。这应该会给你一个需要更仔细调查的用户列表,可能需要分析特定的游戏。

享受吧,这是一个不错的问题。


1
对于所有怀疑这是可能的人:在OP中链接的扑克论坛社区中,人们也同样感到震惊,但相关网站已经确认存在这样的安全漏洞。简单来说,该网站使用非常基本和不安全的加密方式向其玩家传输手牌数据。从理论上讲,任何知道此事的人都可以拦截来自该网站发送给特定受害者(例如通过物理附近拦截无线数据)的传输,并利用被拦截的知识欺骗该玩家。
问题是如何检测是否实际上利用了此漏洞(在修复之前),如果是,则由谁利用,考虑到所列资源。
还有一些人似乎认为我们在谈论一个假设性的情景和/或虚拟货币扑克;我们不是。该网站是真实的,漏洞是真实的,调查正在进行中(请参见OP中的链接),而正在调查的游戏是正常买入为200美元及以上的真钱游戏。

谢谢你比我解释得更好 :) - Tom Gullen

0

在尝试做任何太复杂的事情之前,你能否先寻找简单的指标?

例如:翻牌前:一个玩家在他之前没有加注的情况下放弃了口袋国王,而其他人有口袋王牌。

这可能表明该玩家知道他的起手牌KINGS(相当不错)不如别人的口袋ACES.. 但这是假设他在翻牌前做出决定而不是在翻牌后.. 真的取决于情况..

忽略这个,只是随便想想..


0

我绝不是数据挖掘专家,对于大数据集的统计分析也不是很擅长(虽然我很喜欢打扑克,但我并不是一个很好的扑克玩家),所以请抱着怀疑的态度看待我在这里说的一切。

  1. 筛选垃圾数据。你只需要关心两类玩家:(1)赢得比输的多的玩家,(2)赚的钱比输的多的玩家。谁会关心一个输得很多的骗子呢?

  2. 有了这个缩小范围的玩家列表后,我会看一下他们的打法风格。假设你有很多历史数据,我会建立一个玩家技能档案,并尝试规范化他们的下注策略。作为一个菜鸟扑克玩家,我通常会支持那些没有好牌的玩家,因为它们感觉不错。例如,每当我拿到一张面值牌和另一张低牌(2、3、4、5),如果它们是同花色的,我通常会在转牌前跟注其他玩家的任何下注,即使这种策略并不成功。转牌前的加注往往意味着玩家有一对口袋牌,但是我的爱好让我无法在翻牌前放弃同花手牌。

对于我来说,你对我的玩法的分析会认为,当我手上有任何同花牌时匹配激进的前翻注码是正常的。但是一个只偶尔跟注大额前翻注码的不同玩家可能表明有些问题。

我不知道您需要构建什么样的系统来制作不同用户玩法风格的个人资料,但我想您可以使用一些计算机学习算法以相当准确的方式“学习”一个人的玩法风格。

  • 你提到一个聪明的用户会采取措施来减少他作为作弊者的出现。我认为这是更多分析的绝佳机会。一个经验丰富、胜利的玩家会打烂牌吗?可能不会,永远不会。如果我被发了4S、7H,并看到翻牌是9D、JC、AH,我就知道我赢的机会非常小。这也告诉我们,翻牌时发的牌对任何人来说都不是很强,所以在桌子上下注的人可能有一对J或A,两对,或三条。既然你知道你的4S、7H毫无价值,你要么大力下注虚张声势,要么直接放弃。像那样的手牌,很少有好的玩家(在你的获胜玩家缩短的列表中)会坚持下去。
  • 总之,这些是我想到的事情。现在实际实施它们,我甚至不知道从哪里开始,所以恐怕我不能提供太多帮助。不过,这是一个非常有趣的学术问题,所以请你帮个忙,让我们知道你最终选择了什么。如果你想将这个对话离线进行,请随时给我发送电子邮件至stackoverflow@ericharrison.info。


    1
    你只关心那些“赢得比输的多”的玩家,其他判断都不必要,因为一个输的骗子并没有从他的对手那里获得价值。 - Nick Larsen
    @NickLarsen 的观点很有道理。我仍然认为,至少要意识到赢得比输掉更多手牌的玩家可能很重要,原因是可能会捕捉到(目前)具有糟糕投注算法的好机器人。但你说得对,金钱方面肯定是最重要考虑的事情。 - Eric Ryan Harrison

    -1

    回答你的问题很简单。仅凭手牌历史记录是无法检测出那种类型的作弊者的。你需要非公开信息来将多个特征相关联,以找到疑似的作弊者。

    哦,对了,显然提供这些游戏的公司会尽一切可能在低税收、未受监管的国家设立业务。除非它们受到监管并执行严格的代码合规性和测试,否则这种情况将继续发生。


    -1
    说实话,我非常怀疑能够看到对手手牌的玩家是随机的。在生成卡牌视图的代码中,肯定存在某种交叉现象,选定了一些用户而不是其他用户。我建议对此代码进行测试,并尝试找到“观察者”和“非观察者”之间的趋势。如果找到强烈的趋势,那么这个趋势也可以应用于实际数据集,以查看哪些用户、哪些手牌或哪些其他因素会导致代码故障。

    针对这个问题,我们应该假设这不是故意编写的代码错误,虽然这也是一种可能性。我们假设存在安全漏洞,使得黑客能够在未被站点操作者察觉情况下进入并利用系统。 - Tom Gullen
    在UB丑闻中,这是一种系统范围的密码,为拥有该密码的用户提供超级用户访问权限。真遗憾… - Alexandre C.

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接