临近新年,支付宝今年又出了新花样——VR红包。

大概玩法是,用户根据红包地图指引,走到红白位置,然后根据藏红包的具体地点图片扫描该地点便可打开红包。根据这种玩法,想要获取陌生人的红包难度可想而知,并且很多发红包者定的详细地点在其家中,这种红包根本无法获取。事实是不是这样呢?下面就介绍一种方法,可以破解部分附近的红包,该方法亲测可破解至少50%的红包。

首先说下劳动成果,VR红包每日领取上限是10个,小区附近的几个红包还未领完就到上限了,大概收获了20多块。

分析

我们根据红包的打开条件可知要打开VR红包需要两个技术:定位、图像识别。

  • 定位来说,目前VR红包定位并不苛刻,是一个较大的范围,所以不用做考虑。
  • 图像识别,这是红包打开的方式,也是突破点,我们要处理的也就是这一块。

下面是一张VR红包扫描界面的截图,方框显示的是详细地点,而实际场景需与图片中的地点是同一个,红包才可打开,采用的是图像识别技术。所以我们是不是可以直接扫描该截屏中的图片呢?
No,No,No,支付宝为了避免这种状况,所以加了条纹干扰,我们要做的就是讲这种干扰降到最低,让图片可以被识别。

处理前:

处理后:

限于本人技术有限,处理得不算太好,但是也勉强可识别了,下面就给出Java版本的处理方法。

处理思路

大概思路是依次读取像素点,根据像素点的RGB值判断是否为干扰线,是干扰线则进行一些处理。

1、我们看到,详细地点图片是内嵌在整个截图中的,所以我们需要首先把图片扣取出来。用到了BufferedImage的getSubimage方法。

public BufferedImage getCutImage(int x,int y,int w,int h) {return bufImg.getSubimage(x,y,w,h);
}

2、判断黑色干扰线,判断干扰线有很多种方法,下面是大概的一种实现思路,读取到图片一行的像素点后,根据该行像素点rgb值得最大值与最小值之差判断,差值较小,则可大概判断该行在干扰线上。

public boolean isBlackLine(BufferedImage bi,int y) {int min = 1000000000;int max = -1000000000;for(int x = bi.getMinX(),width = bi.getWidth();x < width; ++x) {int pixel = bi.getRGB(x,y);if(pixel > max) {max = pixel;}if(pixel < min) {min = pixel;}}return max - min > 9000000 ? false : true;
}

3、处理,大概思路为找到干扰线后,获取到干扰线上方和下放非干扰线的首行像素点的rgb值,干扰线中的rgb值用干扰线上方值渐进到下方值代替,便可大概起到去除干扰线的效果。

下面贴出整个程序完整代码:

package test;import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;public class PacketImage {private BufferedImage bufImg;public PacketImage(String path) {try {bufImg = ImageIO.read(new File(path));} catch (IOException e) {e.printStackTrace();}}public void setImage(String path) {try {bufImg = ImageIO.read(new File(path));} catch (IOException e) {e.printStackTrace();}}public BufferedImage getCutImage(int x,int y,int w,int h) {return bufImg.getSubimage(x,y,w,h);}public BufferedImage getResult(int xx,int yy,int width,int height) {BufferedImage cutImg = getCutImage(xx, yy, width, height);int creY = 0;boolean havaBlackLine = false;for (int y = 0; y < height; y++) {if(y < height - 1 && !isBlackLine(cutImg,y) && isBlackLine(cutImg,y + 1)) {havaBlackLine = true;continue;}if(havaBlackLine) {creY++;}if(y == height - 1) {break;}if(isBlackLine(cutImg,y) && !isBlackLine(cutImg,y + 1)) {if(creY == 0) {continue;}int startY = y - creY;int endY = y + 2;for(int x = 0;x < width;x++) {int startRGB = cutImg.getRGB(x,startY);int endRGB = cutImg.getRGB(x,endY);int creR = (getR(endRGB) - getR(startRGB)) / creY;int creG = (getG(endRGB) - getG(startRGB)) / creY;int creB = (getB(endRGB) - getB(startRGB)) / creY;for(int i = startY + 1,cr = 0;i < endY;i++,cr++) {int subRGB = new Color(getR(startRGB) + cr * creR,getG(startRGB) + cr * creG,getB(startRGB) + cr * creB).getRGB();cutImg.setRGB(x,i,subRGB);}}havaBlackLine = false;creY = 0;}}return cutImg;}public boolean isBlackLine(BufferedImage bi,int y) {int min = 1000000000;int max = -1000000000;for(int x = bi.getMinX(),width = bi.getWidth();x < width; ++x) {int pixel = bi.getRGB(x,y);if(pixel > max) {max = pixel;}if(pixel < min) {min = pixel;}}return max - min > 9000000 ? false : true;}private int getR(int rgb) {return (rgb & 0xff0000) >> 16;}private int getG(int rgb) {return (rgb & 0xff00) >> 8;}private int getB(int rgb) {return rgb & 0xff;}public static void main(String[] args) {try {ImageIO.write(new PacketImage("C:\\222.PNG").getResult(220,715, 280, 280), "png", new File("C:\\111.png"));} catch (IOException e) {e.printStackTrace();}}
}

好了,处理后的图片获取到了,用手机扫一扫领红包吧。

不可能只领住所附近的红包吧,所以想领别的地方的红包怎么办呢?
背着电脑去,太麻烦。下篇将会在此方法的基础上开发Android版本处理,就可以带着初级出去寻宝啦。

支付宝VR红包简陋破解方法。(红包图片处理)相关推荐

  1. 安卓口令红包漏洞破解方法“如何抢到非苹果用户不能抢到的红包”

    最近在各大媒体网站如微信朋友圈,QQ空间以及一些各种联盟上都出现了一条"非苹果用户不能抢的口令红包".该红包通过利用安卓手机的漏洞实现,而对于苹果机则不影响. 红包发生方法如下: ...

  2. 紧跟QQ 为什么支付宝不避嫌也推AR红包?

    如果要细数今年AR(增强现实技术)领域新突破的话,Pokémon Go火爆全球算是一例.在美国市场,Pokémon Go上线仅5小时就登上了手机游戏排行榜首,一周之后日均活跃用户就超过了Twitter ...

  3. Android破解——支付宝内购破解方法总结

    支付宝破解三种方式: 想学一下支付宝内购的相关知识,但是搜索了论坛,发现但是没有相关的帖子,于是便是打算自己来写一篇总结 一.9000的十六进制代码修改 搜索9000的十六进制,也就是搜索0x2328 ...

  4. 支付宝牵头,近30亿红包等你领,攻略全在这里了!

    支付宝牵头,近30亿红包等你领,攻略全在这里了! 过了腊八就是年!抢红包也就成了很多小伙伴过年的必备仪式!细数今年的红包战场可为是热闹异常,不仅多了几员实力大将,就连金额也让人瞠目. 支付宝坚持老路子 ...

  5. 使用PHP破解防盗链图片的一个简单方法

    这篇文章主要介绍了使用 有自己的主机一般都会设计"防盗链", 其实包括图片防盗链,和下载防盗链等,如: 1.使用.htaccess设置防盗链 RewriteEngine on Re ...

  6. python使用第三方支付宝SDK实现小程序发红包、用户支付等功能

    python使用第三方支付宝SDK实现小程序发红包.用户支付等功能 实现小程序发红包,创建支付订单.登录验证等 继承DCAlipay添加几个我们需要的功能 初始化DCAlipay对象并使用 回调not ...

  7. 微信小程序红包开发思路 微信红包小程序开发思路讲解

    之前公司开发小程序红包,将自己在开发的过程中遇到的一些坑分享到了博客里.不少人看了以后,还是不明白怎么开发.也加了我微信咨询.所以今天,我就特意再写一篇文章,这次就不谈我开发中遇到的坑了.就主要给大家 ...

  8. 私人订制版微信红包封面(赠送红包封面)

    硕果累累:摄于广州天河花市 又到一年春来时,朋友们都进入休假模式了,或亲人团圆,或朋友聚会,或游山玩水,不亦乐乎.宅在家中的朋友也能找点乐子,除了看看片子,打打电游,还能玩玩微信的红包封面. 微信是第 ...

  9. Myeclipse 2015 stable 2.0 完美破解方法

    以前写了一篇<Myeclipse 2015 stable 1.0 完美破解方法>,现在跟新一下Myeclipse 2015 stable 2.0 破解方法,此方法来源于贴吧的一篇文章:ht ...

最新文章

  1. 如何初始化一个定长ListT
  2. Android跳转intent简单教程
  3. 云炬Android开发笔记 17商品详情功能开发
  4. Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化
  5. android一体机-迅为10.1寸用于售货机、人机界面、自动终端、触摸控制
  6. JS的基本语法知识概括(ECMA、DOM、BOM)
  7. Welcome-to-Swift-05控制流(Control Flow )
  8. WinSock学习笔记(二)
  9. C++实现获取汉字拼音首字母
  10. BAT中for循环处理某目录下的文件
  11. Linux Mint 安装网易云音乐
  12. MATLAB常见语法错误
  13. 几种统计图表的作用和区别
  14. 【报告分享】2021母婴行业白皮书-巨量引擎(附下载)
  15. 读书有益——》民间治咳偏方
  16. IP/tzgm.php,龙之异界手游私服双端APP+本地更新+Gm授权+附视频教程
  17. ts重点学习136-声明合并
  18. Python数学问题22:爱因斯坦的数学题
  19. 【色彩管理】色彩管理之线性化
  20. springboot项目图片转换成pdf

热门文章

  1. edger多组差异性分析_R语言利用edgeR package进行基因差异表达分析 举例
  2. 微信小程序使用echarts不跟随页面滚动的问题
  3. 地理位置服务——百度地图API
  4. 二叉树的最近公共祖先
  5. python测试驱动开发_Python测试驱动开发:使用Django、Selenium和JavaScript进行Web编程(第2版)...
  6. 分布式系统治理-边车模式 sidecar
  7. 用html5做一个介绍自己家乡的页面_【基础教程全】Html5视频教程
  8. ps4刷linux,PS4刷新GPU固件有惊喜 可运行Vulkan与Linux
  9. Netty基础,Netty实现群聊系统
  10. 高级搜索技巧:site,link,inurl,allinurl,intitle,allintitle, allinanchor, allintext and other Google Keywords