AliPay RedEnvelope Hacker

最近支付宝继续其逆天改命的追赶超越微信的社交梦之路,上线了狂拽酷炫吊炸天的AR红包玩法,顿时刷爆了一波朋友圈,但是这热闹后面也隐藏着一些问题甚至是致命Bug或者危机。

AR红包一上线,毁誉参半,有媒体人产品方面人士表示“这是支付宝在对抗微信的战场上,难得的漂亮反击”,但是。。。同时很快有天才找到了作弊的方法,所谓实现了“早上试了一下,现在已经实现在家收红包的局面了”,方法其实类似我之后提到的,只是他用的是PS。。。方法是:

  • 截图放到ps里,建立和黑色条纹等宽的长条若干;
  • 黑色条纹然后往上移动一点,覆盖住显示图片的区域,再复制一张截图置于顶层建立剪贴蒙板,把位置错来来看;
  • 扫一下就可以领取红包了

以上来自知乎用户@Chain

很快我又找到了代码版本,是用php实现的,数行代码即可搞定(为了跑成功花了半小时学习如何安装并跑出php的Hello World,囧~):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
function imagecropper($source_path)
{
$source_info = getimagesize($source_path);
$source_width = $source_info[0];
$source_height = $source_info[1];
$source_mime = $source_info['mime'];



$oldimg = imagecreatefrompng($source_path);

$base_width=340;

$base_height=6;
$baseimage = imagecreatetruecolor($base_width, $base_width);// 苹果图啊

$beginx = 150;
$beginy = 444;

$thisimage = imagecreatetruecolor($base_width, $base_height);
imagecopy($baseimage, $oldimg, 0, 0, $beginx, $beginy, $base_width, $base_height);

for ($i=0;$i<30;$i++){
imagecopy($baseimage, $oldimg, 0, $i*($base_height*2)-$base_height, $beginx, ($beginy+($i*($base_height*2))), $base_width, $base_height);
imagecopy($baseimage, $oldimg, 0, $i*($base_height*2), $beginx, ($beginy+($i*($base_height*2))), $base_width, $base_height);
}



header('Content-Type: image/png');
imagepng($baseimage);

}
imagecropper("http://127.0.0.1/frank/img/IMG_0734.png")
?>

效果如下图:

算法的原理是:使用imagecreatetruecolor创建的新图像,利用imagecopy将指定坐标(截图中的线索图片的方框的左上角)开始的横条部分逐步依次由上到下复制到新图像上,以此达到用黑色条纹上下方的相似图像遮盖条纹的目的。当然原作者的iPhone肯定不是我这个型号,所以很显然这个开始复制的点需要测量手机截图的实际像素距离才可以确定(又花了半个小时测量我手机的截图的线索图片方框左上角的坐标,囧~)。

从这个实验的过程我也看到php作为与浏览器息息相关的语言的优势,上面的程序是每次运行都把新图片显示在浏览器里面,所以每次收到新截图都可以只需刷新一下浏览器就可以在屏幕上显示出处理后的图片了。

运行此php脚本的方法是将其放在xampp的htdocs目录下,开启Apache服务,再在浏览器中访问127.0.0.1/index.php 即可(index.php即脚本名)。

其实从AR红包上线以来就有许多问题,譬如

  • 如果线索图片是工卡、校园卡或者桌椅、纸巾等附近的人也可以拍到类似的物品或者含有类似logo物品的图片也是可以领取的,这就涉及到定位精准度等问题,不过我认为这也是玩法的乐趣所在,让人民群众喜闻乐见的作弊也是买点之一

  • 而像上面提到的直接处理图片就可以作弊肯定就是大问题了,这说明阿里哦不,是蚂蚁金服对于图片的处理的算法急需改进,肯定不可能是这种错位一下图片就可以作弊的程度,这里我有个想法是加入类似于人脸识别里的判断是真人还是相片的模块,通过这个排除不是真实物品的利用屏幕上的图片来作弊的行为。

好了,暂时先写这么多,祝圣诞快乐!

参考资料

  1. 支付宝红包破解算法