B站login-极验逆向
声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
目标网站
https://www.bilibili.com/ 登录分析
分析过程
极验分析
直接查看login的极验的调用的js,点击去看看发现俩个文件全部混淆了
我解开看看,肯定有好东西呢!
先分析click文件


某些字符串是转义序列,此时我们需要转换。
tips:当这些 Unicode 编码以 "\uXXXX" 的形式出现时(其中 XXXX 是 4 位十六进制数),它们通常被用作字符串中的转义序列,表示一个特定的 Unicode 字符。
还发现了调用了个解密函数,输入对应的number即可输出解密的字符串

还发现了for-switch结构中用死数组的来判断执行的每个case。被吓到了。
解密效果如下

发现w参数在哪里了!

继续分析

分析o参数的来源
通过设置原型代理去hook找到set-key,即可找到整个对象设置的过程


继续溯源

发现原来是请求响应体拿到很傻哈哈,很低效率,不过细节全收入囊中,值得的


点击坐标this.$_BIFO.$_BHDz




这里的t是判断点击在哪里(按钮为3,其他为1),dt是当前时间-初始化时间


属性来源

取domracet的右减去左


基本上o对象的所以属性都解析的差不多了,剩下的都是就是组成业务逻辑了!
还原后的click.js已放到星球,以方便各位相关调试,寻找算法、检测点学习
b站login-password分析
往上追溯是个异步,从控制流找到个异步,单步追踪


拿请求的hash和pubkey(RSA加密(猜测))


不过这里有个坑,即使固定了随机数,难以与本地做出验证,Rsa加密还是每次都随机
后面问了零点大佬,指出变化点(万分感谢大佬的帮助)
雀氏RSA的机制每次都会把这个this做出一定的改变来影响整个整体随机,于是我直接找了个Rsa的开源项目,照猫画虎的源码的this每次进行初始化,通过对比每次结果,后面大致看了看基本是些常规操作随机、位运算,猜测这个RSA是没有魔改的,Nice,后面通过原生加密也可以被私钥进行解密,算是过关了,虽然省不了多长扣代码的时间,但是总有收获所在!
后续得去了解rsa底层加密步骤才能好好玩耍。



//极验
var u = n.$_CAAz();
var h = X.encrypt(ae.stringify(o), n.$_CABL());
var p = w.$_EFO(h);
var d = {
"gt": r.gt,
"challenge": r.challenge,
"lang": o.lang,
"pt": n.$_BGJB,
"client_type": n.$_BHAv,
"w": p + u
}
// b站
r(s.encrypt(o.data.hash + t)))
解决方案
思路:
通过上述逻辑,分析接口流程
hash,public_key=token, challenge, gt = passport-login/captcha 携带上gt请求gettype.php 携带上gt、challenge请求ajax.php 图片data =携带上gt、challenge请求get.php data["pic"],c = data["c"],s = data["s"]执行点选请求url = ’https://static.geetest.com+["pic"]’ validate, token, challenge=生成w、携带上gt、challenge请求ajax.php 携带上述hash、public_key生成password参数请求b站web/login的link
直接放出最后login成功图!(后续实现个花光所有硬币的计划)


番外预告某音ab
思路是对每个vmp的循环插桩,即可判断是哪个vmp最终生成目标算法,避免日志过大,在位置9进行断住ab,分析位运算符日志(纯算不多讲,PS:我基本全参考了星云牛马这位博主的插桩log点)

成功图

预告:全参补环境检测图


参考链接:
[1] 某音ab纯算参考。
[2] 极验3文字点选参考。
[3] b站login极验用于魔改优化风控。
Next-Target
后期思路是讲补环境去通杀某音ab,xb,xhs全参等等,尽量避免用插桩分析还原算法去对抗jsvmp脏活。 阿里140 瑞数456vmp 主动调用Android-Wechat文本信息
最近想法
我开了个知识星球,把本期的成品已放到了里面,有需要的小伙伴可以自行去取,jd的参数,阿里bxet纯算、快手滑块,Pdd—Anti,ikuai,b站login之-极验3文字,某音ab等等,主要是某些大佬加我问成品,很多人都打着白嫖的手段去加我好友为目的,问完基本就以后没有任何的交集,这样的交好友雀氏没有任何意义。不如我直接开个星球,里面直接放我逆向的成品以及逆向的思路,这样大家各取所需,我也有点收益,意义更明确点,免得浪费大家的时间。星球如果你们遇到了什么问题的话,也可以直接提出来,我肯定以我最大的能力去回答,后续的话,随着知识星球的作品越来越多,涨价是必然的。至于一些没有特殊难点的站或app,我会直接把思路以及成品到星球里面,同时也欢迎各位大佬的技术合作,有技术,有想法的一起交流成长。



B站login-极验逆向的更多相关文章
- 破解b站极验验证码
这就是极验验证码,通过拖动滑块移动拼图来验证.我们观察到点击滑块时拼图才会出现,所以我们可以在点击滑块之前截取图像,点击滑块再截取一次图像,将前后两次图像做比较就可以找到图片改动的位置.获得位置后,我 ...
- selenium处理极验滑动验证码
要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题https://www.zhihu.com/question/28833985,我按照这思路去大概实现了 ...
- thinkphp整合系列之极验滑动验证码
对于建站的筒子们来说:垃圾广告真是让人深恶痛绝:为了清净:搞个难以识别的验证码吧:又被用户各种吐槽:直到后来出现了极验这个滑动的验证码:这真是一个体验好安全高的方案:官网:http://www.gee ...
- GEETEST极验召集互联网大佬齐聚光谷,共同探讨交互安全问题
全球互联网技术在飞速发展的同时,网络安全事件也随之频发.除了直接带来经济损失的网络恶意攻击之外,企业在多个方面也遭受着不同程度的网络恶意攻击,包括品牌形象.管理时间.企业竞争力.客户成交量.用户行为等 ...
- Django中使用极验Geetest滑动验证码
一,环境部署 1.创建一个django测试项目 此处省略... 二,文档部署 1.下载安装python对应的SDK 使用命令从Github导入完整项目:git clone https://github ...
- vue_drf之实现极验滑动验证码
一.需求 1,场景 我们在很多登录和注册场景里,为了避免某些恶意攻击程序,我们会添加一些验证码,也就是行为验证,让我们相信现在是一个人在交互,而不是一段爬虫程序.现在市面上用的比较多的,比较流行的是极 ...
- 极验3.0滑动拼图验证的使用--java
[ 前言: 在登录其他网站的时候,看到有个滑动拼图的验证觉得挺好玩的,以前做一个图片验证的小demo,现在发现很多网站都开始流行滑动拼图的验证了,今天也想自己动手来弄一个. 废话不多说,开始撸起来! ...
- 极验验证使用-滑动&选字验证码
准备 SDK下载 首先在极验官网下载好SDK,附上官网链接,点此可直接下载python版zip包. 模块安装 使用该SDK时发现它依赖两个模块,分别是geetest和requests. pip ins ...
- luffy之多条件登录与极验滑动验证码
多条件登录 JWT扩展的登录视图,在收到用户名与密码时,也是调用Django的认证系统中提供的authenticate()来检查用户名与密码是否正确. 我们可以通过修改Django认证系统的认证后端( ...
- GeeTest 极验验证
前台Html页面 <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> ...
随机推荐
- 关于伺服刹车/急停/前后设备信号对接/PLC输入输出模块的公共端介绍
一.伺服刹车 关键词:急停,急停中间继电器.刹车中间继电器,刹车使能 正文: 通常情况不用硬件为主导而用程序来主导控制,多场景应用方便修改且安全可靠. 伺服刹车硬件,一般是24v电源给进去,就会释放刹 ...
- 【深度学习】基于 Alluxio 数据缓存的性能优化
作者 | 车漾(阿里云高级技术专家).顾荣(南京大学 副研究员) 导读:Alluxio 项目诞生于 UC Berkeley AMP 实验室,自开源以来经过 7 年的不断开发迭代,支撑大数据处理场景的数 ...
- 基于 Mesh 的统一路由在海外业务的实践
简介:本文主要介绍我们最近在利用 Service Mesh 架构解决海外业务问题中一些实践和价值探索.我们在海外业务引入 Mesh 架构过程中,充分利用 Istio 的基于 yaml 来描述和定义路 ...
- 基于 Observable 构建前端防腐策略
简介:To B 业务的生命周期与迭代通常会持续多年,随着产品的迭代与演进,以接口调用为核心的前后端关系会变得非常复杂.在多年迭代后,接口的任何一处修改都可能给产品带来难以预计的问题.在这种情况下,构 ...
- [FE] JS 判断当前是否在微信浏览器中的最新代码
注意以下使用了 const 定义未改变的变量,没有使用 var. function isWeChatBrowser () { const ua = window.navigator.userAgent ...
- 扎克伯格说,Llama3-8B还是太大了,量化、剪枝、蒸馏准备上!
扎克伯格说,Llama3-8B还是太大了,不适合放到手机中,有什么办法? 量化.剪枝.蒸馏,如果你经常关注大语言模型,一定会看到这几个词,单看这几个字,我们很难理解它们都干了些什么,但是这几个词对于现 ...
- dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放
我在不自量力做一个数组池,就是为了减少使用 System.Buffers.dll 程序集,然而在数组池里面,所用的 ThreadLocal 类型,在我对象析构函数进行归还数组时,抛出了无法访问已释放对 ...
- HAL库移植RT-Thread Nano
一.移植RT-Thread Nano准备 keil软件 CubeMx软件 STM32 CubeMx使用教程:https://www.cnblogs.com/jzcn/p/16313803.html S ...
- Linux中文件的隐藏属性
在Linux系统中,可以使用chattr与lsattr来操作文件的隐藏属性.
- 对于Docker和Podman的一点使用经验
前言:本文会以多个实际的线上例子,分享自己对于Docker和Podman的一点使用经验及踩过的坑,希望对读者有一点帮助. 本文bash脚本初步加工后可直接使用(兼容mac和linux系统),对于关键点 ...