磊 发自 凹非寺
量子位 | 公众号 QbitAI
程序员要“肛”起来,真是没谁了。
事情还得从前几天国际象棋界曝出的惊天丑闻说起。
当时,世界冠军Magnus Carlsen(老卡哥)直播对战19岁新秀Hans Niemann(小汉斯),结果败了。
随后老卡哥选择退出比赛,并发推文暗指小汉斯在比赛过程中作弊。
而小汉斯在此之前确实有过线上比赛的作弊史,于是网络上“靠肛珠作弊”的声音甚嚣尘上。
就连马斯克也一度参与到讨论中,暗有所指地来了句“it’s in ur butt”。
然后这件事引发了一位荷兰程序员Ron Sijm(西姆哥)极大的兴趣:“这丑闻,我一直在follow”。
于是在周末闲暇之余,西姆哥就研究起了“肛珠作弊”,竟然还把代码给开源了!
项目名曰“ButtFish”:
把国际象棋走法的摩斯密码,轻松送进你的屁股里。
这可真是硬核“炼肛”的节奏啊……
西姆哥炼肛,第一步做的就是在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公司担任程序开发人员。
还记得刚才咱们提到的那个妙不可言的网站吧?
西姆哥现在一直在和上面的用户积极交流,希望能够找到拥有设备,还想尝试一下他软件的那位“天选之子”。
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招教你搞定它,没错,就是通过关键帧动画来搞,我们一步步的来分析看
一个3D翻转的图集
老规矩,先布局,这个就比较简单了。一个容器里面放N个div,依次绝对定位,使其所有的图片叠在一起!
然后让它们的父级设置为3D空间,并设置景深。
值得注意的是,不要忘了设置旋转基点为底部。
绝对定位后,我们还要设置每一张图片的层级,倒序
从gif图中可以看出来。每张图片都会有一个倒影的效果。在CSS3中我们是采用的box-reflect来实现倒影效果
box-reflect:none | <direction> <offset>? <mask-box-image>
第一个参数为:我们要设置的倒影的方向,它的取值有:
第二个参数offset是用来设置生成倒影与对象(原图)之间的间距,其取值可以是固定的像素值,也可以是百分比值
第三个参数是用来设置倒影的遮罩效果,可以是背景图片,也可以是渐变生成的背景图像
来看一个示例:
demo中设置是的10px ,gif图中是0
注意:box-reflect属性并不是一个标准的css3属性,所以我们需要加上webkit内核前缀。不加的话,效果出不来。
图中的动画效果我是采用的CSS3的帧动画来完成的,我们先来看看帧动画的语法。
要想使用帧动画,首先我们得先定义一个动画帧,我们通过@keyframes关键字来定义它
语法:
@kyeframes 动画名称{ 0%{ ... } 10%{ } 100%{ //.. } }
我们在动画帧函数里面可以精准的定义动画的每一帧的变化情况。我们可以使用百分比的形式,也可以使用关键字,from to
定义完成后,我们可以在元素身上设置动画相关的属性
animation:动画名称 动画时间 延迟时间 动画运动形式 ...
我们先来实现一个简单的demo看看
运动一次,运动完成后,又回到了第一帧,一般来说,我们希望它停留在动画的最后一帧。我们一般在animation上再加一个forwards即可。
当我们点击下一张的时候,当前的图片向前翻转消失,下一张出现,所以我们需要定义两个帧动画效果。
当下一张图片出现后,图片本身一个轻微的振动效果,这里我们也是通过多定义几个动画帧来实现的具体的代码如下:
最后我们来实现点击的逻辑。当我们点击下一张的时候,我们需要将当前的一张的动画设置成hide,下一张图片设置成show
这里我使用的是iNow变量来表示当前是第几张图片。
源码请私信我
效果完成。
这里是【畅哥聊技术】CSS3专题的系列文章,更多精彩内容持续更新中……
未完待续。。。
*请认真填写需求信息,我们会在24小时内与您取得联系。