大家都知道,昨天支付宝上线了“AR实景红包”功能。但,对不起,它被我们不小心破解了。
支付宝“AR实景红包”一不小心就激发了全民藏红包、找红包的热情,
虎嗅昨天也第一时间体验并进行了报道
。
相信已经有无数的人体验过,包括但不限于把红包藏在别人的脸上甚至某些羞羞的地方,充分开发了智力和脑洞的同时,一片欢乐祥和的气氛,大家对支付宝这次做出的努力给予了比较正面的评价。
不过……向来以脑洞大著称的虎嗅藏着一群不安分的家伙。这个周五晚上,虎嗅的一位漂亮设计师妹妹和一位英俊潇洒的工程师哥哥,用各自最擅长的方法成功发现了这个引发狂欢的AR红包的漏洞。
先来一个通俗版。我们的设计师妹妹经常把同事各种很糗的动作搞成一个gif图丢到群里,当然,还包括把我们虎嗅编外员工“小武”——一直正在发情期的猫——制作成各种微信表情,在虎嗅的江湖里流传。
做好了心理建设后,我们来看一下设计师妹妹是如何破解支付宝的“AR红包”的。通俗的描述就是:
第一步,在“找红包”里随便点开一个人的红包,按住下方的“按住看线索”按钮,跳出图片信息后截屏;
第二步,在PS里把此图复制一张,并把深灰色横条处理掉,再和原图错位拼在一起,就可以基本上还原图片了;
第三步,打开支付宝,扫描这张被还原的图片就可以抢到红包啦。
其实,这一系列操作可以生成一个“PS动作”,然后把你想抢的那个红包的图片往PS里放,用动作P图,简直秒速,简直比富士康流水线上的工人速度还快10倍。
当然,经过亲测,能够被破解的红包图片还是有一些规律可循的。比如,如果红包图片拍的是人像或者动物等,成功率几乎百分之百,主要是这个图像里的物体须是不规则的。我们测试了一张橙子的照片就没能成功,它太规则了。
我们的工程师哥哥刚才欣喜若狂地跑来跟我说:“我破解了支付宝红包,你想知道吗?”
1,用深度卷积网络CNN在ImageNet上训练一个Autoencoder,训练的模型可以用AlexNet的改装版:
a,需要一个
Tensorflow
环境或者
Caffe
环境;
b,用一个3层卷积(Conv)、3层解卷积(Deconv)的网络进行端对端训练 ,用sigmoid交叉熵作loss;
2,按上面的方法先截个图,并把横条图颜色部分都置为0,然后将此图片作为卷积网络的输入部分;
3,对卷积网络进行Forward,我们就可以拿到不带横条的原图。
2,这些高清图先变为800 * 800像素的固定大小图;
4,用256 * 256做输入,800 * 800做输出进行端对端训练(这里就是将低像素图片高清还原);
5,再重复上面第2条和第3条,得到的输出就是不带横条的高清图。
这种方法可以看做是我们的设计师妹妹用PS的方法抢红包的高配版。它的核心是,让机器经过训练后能够把被遮挡的部分还原出来,让机器拥有识图的感觉。