支付宝VR红包简陋破解方法。(红包图片处理)
临近新年,支付宝今年又出了新花样——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红包简陋破解方法。(红包图片处理)相关推荐
- 安卓口令红包漏洞破解方法“如何抢到非苹果用户不能抢到的红包”
最近在各大媒体网站如微信朋友圈,QQ空间以及一些各种联盟上都出现了一条"非苹果用户不能抢的口令红包".该红包通过利用安卓手机的漏洞实现,而对于苹果机则不影响. 红包发生方法如下: ...
- 紧跟QQ 为什么支付宝不避嫌也推AR红包?
如果要细数今年AR(增强现实技术)领域新突破的话,Pokémon Go火爆全球算是一例.在美国市场,Pokémon Go上线仅5小时就登上了手机游戏排行榜首,一周之后日均活跃用户就超过了Twitter ...
- Android破解——支付宝内购破解方法总结
支付宝破解三种方式: 想学一下支付宝内购的相关知识,但是搜索了论坛,发现但是没有相关的帖子,于是便是打算自己来写一篇总结 一.9000的十六进制代码修改 搜索9000的十六进制,也就是搜索0x2328 ...
- 支付宝牵头,近30亿红包等你领,攻略全在这里了!
支付宝牵头,近30亿红包等你领,攻略全在这里了! 过了腊八就是年!抢红包也就成了很多小伙伴过年的必备仪式!细数今年的红包战场可为是热闹异常,不仅多了几员实力大将,就连金额也让人瞠目. 支付宝坚持老路子 ...
- 使用PHP破解防盗链图片的一个简单方法
这篇文章主要介绍了使用 有自己的主机一般都会设计"防盗链", 其实包括图片防盗链,和下载防盗链等,如: 1.使用.htaccess设置防盗链 RewriteEngine on Re ...
- python使用第三方支付宝SDK实现小程序发红包、用户支付等功能
python使用第三方支付宝SDK实现小程序发红包.用户支付等功能 实现小程序发红包,创建支付订单.登录验证等 继承DCAlipay添加几个我们需要的功能 初始化DCAlipay对象并使用 回调not ...
- 微信小程序红包开发思路 微信红包小程序开发思路讲解
之前公司开发小程序红包,将自己在开发的过程中遇到的一些坑分享到了博客里.不少人看了以后,还是不明白怎么开发.也加了我微信咨询.所以今天,我就特意再写一篇文章,这次就不谈我开发中遇到的坑了.就主要给大家 ...
- 私人订制版微信红包封面(赠送红包封面)
硕果累累:摄于广州天河花市 又到一年春来时,朋友们都进入休假模式了,或亲人团圆,或朋友聚会,或游山玩水,不亦乐乎.宅在家中的朋友也能找点乐子,除了看看片子,打打电游,还能玩玩微信的红包封面. 微信是第 ...
- Myeclipse 2015 stable 2.0 完美破解方法
以前写了一篇<Myeclipse 2015 stable 1.0 完美破解方法>,现在跟新一下Myeclipse 2015 stable 2.0 破解方法,此方法来源于贴吧的一篇文章:ht ...
最新文章
- 如何初始化一个定长ListT
- Android跳转intent简单教程
- 云炬Android开发笔记 17商品详情功能开发
- Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化
- android一体机-迅为10.1寸用于售货机、人机界面、自动终端、触摸控制
- JS的基本语法知识概括(ECMA、DOM、BOM)
- Welcome-to-Swift-05控制流(Control Flow )
- WinSock学习笔记(二)
- C++实现获取汉字拼音首字母
- BAT中for循环处理某目录下的文件
- Linux Mint 安装网易云音乐
- MATLAB常见语法错误
- 几种统计图表的作用和区别
- 【报告分享】2021母婴行业白皮书-巨量引擎(附下载)
- 读书有益——》民间治咳偏方
- IP/tzgm.php,龙之异界手游私服双端APP+本地更新+Gm授权+附视频教程
- ts重点学习136-声明合并
- Python数学问题22:爱因斯坦的数学题
- 【色彩管理】色彩管理之线性化
- springboot项目图片转换成pdf
热门文章
- edger多组差异性分析_R语言利用edgeR package进行基因差异表达分析 举例
- 微信小程序使用echarts不跟随页面滚动的问题
- 地理位置服务——百度地图API
- 二叉树的最近公共祖先
- python测试驱动开发_Python测试驱动开发:使用Django、Selenium和JavaScript进行Web编程(第2版)...
- 分布式系统治理-边车模式 sidecar
- 用html5做一个介绍自己家乡的页面_【基础教程全】Html5视频教程
- ps4刷linux,PS4刷新GPU固件有惊喜 可运行Vulkan与Linux
- Netty基础,Netty实现群聊系统
- 高级搜索技巧:site,link,inurl,allinurl,intitle,allintitle, allinanchor, allintext and other Google Keywords