整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

AI术士炼肛记:程序员开源「肛珠作弊」代码,在线寻找

AI术士炼肛记:程序员开源「肛珠作弊」代码,在线寻找天选之子

磊 发自 凹非寺

量子位 | 公众号 QbitAI

程序员要“肛”起来,真是没谁了。

事情还得从前几天国际象棋界曝出的惊天丑闻说起。

当时,世界冠军Magnus Carlsen(老卡哥)直播对战19岁新秀Hans Niemann(小汉斯),结果败了。

随后老卡哥选择退出比赛,并发推文暗指小汉斯在比赛过程中作弊。

而小汉斯在此之前确实有过线上比赛的作弊史,于是网络上“靠肛珠作弊”的声音甚嚣尘上。

就连马斯克也一度参与到讨论中,暗有所指地来了句“it’s in ur butt”。

然后这件事引发了一位荷兰程序员Ron Sijm(西姆哥)极大的兴趣:“这丑闻,我一直在follow”。

于是在周末闲暇之余,西姆哥就研究起了“肛珠作弊”,竟然还把代码给开源了!

项目名曰“ButtFish”:

把国际象棋走法的摩斯密码,轻松送进你的屁股里。

这可真是硬核“炼肛”的节奏啊……

AI术士炼肛记

西姆哥炼肛,第一步做的就是在GitHub上搜寻是否有可以借鉴的项目。

不幸的是,他并没有找到可以直接拿来可以用的,倒是有个较为接近项目,叫SockFish

这个项目我们之前有聊到过,大致就是用树莓派连上鞋垫做成一个作弊器:

输入要靠鞋里安装的压力传感器,输出则靠振动马达,沟通靠的就是摩斯密码。

虽然原理上有点那味儿了,但西姆哥认为这东西想塞进屁屁里是不太现实的。

于是乎,他又搜寻了一圈,发现有个叫Buttplug.io的开源项目,同样也可以通过震动来产生摩斯密码。

至于震动的“介质”是个啥,咱们就不深聊了,大家可以自行脑补(好羞好羞)……

在做好调研工作之后,西姆哥还深入思考了一个问题——谁会去搞这么个“智能肛珠”。

在他看来,研究“智能肛珠”的人需得满足下面这三个条件:

你得对屁屁相关的东西感兴趣吧,得会下国际象棋吧,最关键的你还得会编程,是吧?

西姆哥觉得能满足这三个条件的人微乎其微,所以他一咬牙、一跺脚:

这个“天选之子”,放着我来!

简单来说,西姆哥的方法主要分为三个步骤。

首先,通过读取棋盘FEN字符串,来确定下一步棋的最佳走法。

其次,把最佳走法编码成摩斯密码。

最后,摩斯密码发送到连接的设备。

由于西姆哥没有找到非常合适的肛珠,所以他在演示的过程中,用自家的球形大灯来代替——灯泡闪烁一次相当于肛珠震一次。

(也是相当有那个味道了)

至于智能肛珠产生的震动,如何联动使用者作弊,接下来我们浅谈一下。

国际象棋8x8的格子一般横向编为小写的a-h、纵向编为1-8,棋子则根据英文单词首字母命名,如后(Queen)就是大写Q,象(Bishop)就是大写B,另外小写x代表吃子。

这样一来,每一步棋都可以写成类似“Bxg2”(把象移动到g2格子并吃子)的简短编码形式,这也是一种通用的国际象棋记谱方法。

……

不过有一说一,西姆哥也表态说,目前还没有确凿的证据表明小汉斯是通过智能肛珠来作弊,所以这个项目也只是他兴趣使然。

肛珠作弊风波后续

关于这场智能肛珠作弊的风波,老卡哥在这两天发表了一项最新声明。

在这份声明中,老卡哥直言道:

小汉斯(Hans Niemann)作弊的次数比他公开承认的次数还要多。

如果没有小汉斯的明确允许,我能公开发言的内容是有限的。我只能通过我的行动来表明,我不愿意和他下棋。

不管这件事的结果是什么,我都希望真相可以公之于众。

这份声明之下,网友们的评论也是观点不一。

有人认为老卡的做法是在毁了一个19岁少年的大好前程:

如果你有证据证明这孩子作弊了,那就把证据亮出来。

也有网友认为,官方需要在比赛之前,对选手做一个TSA身体扫描,检查一下是否有智能肛珠这样的作弊设备:

总之,国际象棋界的这场智能肛珠作弊风波目前尚未有明确的结果,事件还需静候进一步的发展。

关于这位炼肛大师

这位炼肛大师名叫Ron Sijm,是一位来自荷兰的程序员。

据个人主页信息显示,他通常在一家IT解决方案公司DotNet工作,不过目前Appical公司担任程序开发人员。

One More Thing

还记得刚才咱们提到的那个妙不可言的网站吧?

西姆哥现在一直在和上面的用户积极交流,希望能够找到拥有设备,还想尝试一下他软件的那位“天选之子”。

Emmmm……有点意思。

参考链接:

[1]https://github.com/RonSijm/ButtFish
[2]https://incoherency.co.uk/blog/stories/sockfish.html
[3]https://buttplug.io/
[4]https://www.vice.com/en/article/5d3w9z/did-hans-neimann-cheat-at-chess-with-a-sex-toy-this-coder-is-attempting-to-find-out
[5]https://gizmodo.com/chess-cheating-magnus-carlsen-hans-niemann-chess24-1849585332

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态

了软硬件和网络通讯协议上的漏洞,近年来我们还见到了各种稀奇古怪的 PC 数据窃取方案,比如通过芯片工作时的电磁波、或人耳难以察觉的扬声器 / 麦克风方案来泄露数据。近日,以色列本·古里安大学的研究人员更是突发奇想,演示了如何通过风扇振动和智能手机,成功地从 PC 上窃取数据。


即便是物理上相互隔离、且没有接入到互联网,这套被称作 AiR-ViBeR 的方案,还是能够以人们难以察觉的方式来泄露数据。

理论上,我们可以将 CPU、GPU、机箱风扇等机电组件的振动模式与特殊的恶意软件结合使用,以直接操控风扇的转速。

AiR ViBeR Exfiltrating Data from Air-Gapped Computers(via)

概念验证期间,研究人员使用了一部和计算机放在同一张桌面上的智能机。尽管两者之间没有物理和常见的无线连接,但手机仍可通过加速度计来记录振动的变化。

三星 Galaxy S10 等高端设备,其内置的传感器已拥有足够的精确度,分辨率达到了 0.0023956299 m / s2 。


这种方式的另一个优点,就是攻击者无需破解任何移动设备 —— 无需在 Android / iOS 设备上启用特殊的权限,即可在后台神不知鬼不觉地读取加速度计的数据。

相关代码甚至可以借助 Web 浏览器的 JavaScript 脚本来实现,不过目前这项研究的最远传输距离也只有 1.5 米、且速度相当缓慢,因此大家没必要太过担心。

迎来到我的CSS3专题系列文章,更多精彩内容持续更新中,欢迎关注 :)

CSS3 3D在大多的项目中应用还是挺广泛的,今天我将继续为大家分享一个新的3D交互效果。

本章目标

  1. css3 3D实战
  2. css3倒影
  3. css3 关键帧动画

先来看我们今天要实现的效果吧!看似好复杂,1招教你搞定它,没错,就是通过关键帧动画来搞,我们一步步的来分析看

一个3D翻转的图集

css3 3D实战

老规矩,先布局,这个就比较简单了。一个容器里面放N个div,依次绝对定位,使其所有的图片叠在一起!

然后让它们的父级设置为3D空间,并设置景深。

值得注意的是,不要忘了设置旋转基点为底部。

绝对定位后,我们还要设置每一张图片的层级,倒序

css3倒影

从gif图中可以看出来。每张图片都会有一个倒影的效果。在CSS3中我们是采用的box-reflect来实现倒影效果

box-reflect:none | <direction> <offset>? <mask-box-image>

第一个参数为:我们要设置的倒影的方向,它的取值有:

  • above:表示生成的倒影在对象(原图)的上方;
  • below:表示生成的倒影在对象(原图)的下方;
  • left:表示生成的倒影在对象(原图)的左侧;
  • right:表示生成的倒影在对象(原图)的右侧;

第二个参数offset是用来设置生成倒影与对象(原图)之间的间距,其取值可以是固定的像素值,也可以是百分比值

第三个参数是用来设置倒影的遮罩效果,可以是背景图片,也可以是渐变生成的背景图像

来看一个示例:

demo中设置是的10px ,gif图中是0

注意:box-reflect属性并不是一个标准的css3属性,所以我们需要加上webkit内核前缀。不加的话,效果出不来。

css3 关键帧动画

图中的动画效果我是采用的CSS3的帧动画来完成的,我们先来看看帧动画的语法。

要想使用帧动画,首先我们得先定义一个动画帧,我们通过@keyframes关键字来定义它

语法:

@kyeframes 动画名称{
 0%{
 ...
 }
 10%{
 }
 100%{
 //..
 }
}

我们在动画帧函数里面可以精准的定义动画的每一帧的变化情况。我们可以使用百分比的形式,也可以使用关键字,from to

定义完成后,我们可以在元素身上设置动画相关的属性

animation:动画名称 动画时间 延迟时间 动画运动形式 ...

我们先来实现一个简单的demo看看

运动一次,运动完成后,又回到了第一帧,一般来说,我们希望它停留在动画的最后一帧。我们一般在animation上再加一个forwards即可。

终极效果分析

当我们点击下一张的时候,当前的图片向前翻转消失,下一张出现,所以我们需要定义两个帧动画效果。

当下一张图片出现后,图片本身一个轻微的振动效果,这里我们也是通过多定义几个动画帧来实现的具体的代码如下:

最后我们来实现点击的逻辑。当我们点击下一张的时候,我们需要将当前的一张的动画设置成hide,下一张图片设置成show

这里我使用的是iNow变量来表示当前是第几张图片。

源码请私信我

效果完成。

总结:

  1. css3的可以实现倒影的效果,但是记得要加上-webkit-前缀
  2. 帧动画的基础语法。
  3. css3帧动画可以实现比transition更为复杂的动画效果,如此这个示例拿transition来做,可能就比较麻烦了。

这里是【畅哥聊技术】CSS3专题的系列文章,更多精彩内容持续更新中……

未完待续。。。