[JS逆向案例]安居客滑块分析
目录
文章目录
- 目录
- 前言
- 目标网站
- 请求流程
- 请求分析
- getInfoTp 接口
- getInfoTp 接口
- 最终结果
前言
本文只是简单地分析了安居客滑块验证码,没有涉及爬虫部分哦。
目标网站
完整 URL:
aHR0cHM6Ly93d3cuYW5qdWtlLmNvbS9jYXB0Y2hhLXZlcmlmeS8/aGlzdG9yeT1hSFIwY0hNNkx5OXphR0Z1WjJoaGFTNWhibXAxYTJVdVkyOXRMMk52YlcxMWJtbDBlUzkyYVdWM0x6RXlOekV6TWc9PSZuYW1lc3BhY2U9YW5qdWtlX3hpYW9xdV9wYyZzZXJpYWxJRD0yZDZjYTQ3YTE3ODhkMjdjNTcwMmM4YTQzMTczNjYyNl8wZjk4ZGM1YmI4NTA0YWIwODlhYmNlZjlmYTBlNzI5YiZjYWxsYmFjaz1zaGllbGQmZnJvbT1hbnRpc3BhbQ==
简化 URL:aHR0cHM6Ly93d3cuYW5qdWtlLmNvbS9jYXB0Y2hhLXZlcmlmeS8/Y2FsbGJhY2s9c2hpZWxkJmZyb209YW50aXNwYW0=
请求流程
- https://verifycode.58.com/captcha/getInfoTp (获取验证码图片等信息)
- https://verifycode.58.com/captcha/dctrace(8次,暂无紧要)
- https://verifycode.58.com/captcha/checkInfoTp(校验是否成功)
请求分析
getInfoTp 接口
请求参数
sessionId: 4cc3cd35a39c4eb4b03680e0812f6b98 在访问验证码页面的HTML代码里包含sessionId
showType: embed 固定
track: 固定
clientType: 1 固定
clientId: 1 固定
language: zh-CN 固定
dInfo: 0zKKrvsczg7QXGpGHiLxEepUoismp8P1rvEnnE8n95JH8Sril...省略 貌似不校验
请求响应
{"code":0,"data":{"ntpStatus":1,"ntp":"0","status":0,"responseId":"cea3453145194aaa88ce0f6b3171dad8","info":"I1vWKDGkPlxzM/1krtxMm8mDmkMZ1cfhpygfkAyS2lb1l3kC7gOr5NSjtPoUQAVDyu65emjI7u0D...省略"},"message":"成功"
}
sessionId
在访问验证码页面的 HTML 代码里包含,直接使用正则提取即可
dInfo
直接使用 DevTools
工具中的 search
搜索 dInfo:
,直接就会定位到下图位置
直接下断重新刷新页面,会断在下图位置,直接在 控制台
打印 l[_0x1vk[7]][_0x1vk[164]]((0,i)(), r[_0x1vk[104]])
输出看下内容
发现好像就是 dInfo
参数,
发现关键字 AESEncrypt
,那么就破案了,但是也要继续跟进验证下,主要看下 AES 加密的 内容
、key
、mode
、padding
等信息,方便我们自己加密测试是否与网站的结果是一样的
发现 sessionId
,很眼熟,就是上面最开始在验证码页面获取的,可以把这行代码整理下,整理如下
l[_0x1vk[7]][_0x1vk[164]]((0,i)(), r[_0x1vk[104]])
l[_0x1vk[7]][_0x1vk[164]](i(), r[_0x1vk[104]])
这样就稍微清楚些, l[_0x1vk[7]][_0x1vk[164]]
这个函数主要有两个参数,第一个是 i()
,第二个是 r[_0x1vk[104]](也就是sessionId)
,那么先看下 i()
是什么,老样子,在控制台打印输出下即可
接着进入加密函数看下
e = e[_0x1vk[388]](_0x1vk[23])[_0x1vk[745]](function(t, e, n) {return n % 2 == 0 ? t + _0x1vk[23] : t + e;
}, _0x1vk[23])
e
是对传入的 sessionId
做了一些处理,比如 9d811d9936354dcf90c2410390f7a5e1
处理后变成了 d1d965df02130751
e = r[_0x1vk[683]](e)
e
把 e
进行了处理又重新赋值给了 e
,那么 e 就是 AES 的 key
t = _0x1vk[70] == typeof t ? t : JSON[_0x1vk[720]](t)
t
把 第一个参数转换成字符串
t = s[_0x1vk[746]](t, e, {iv: e,mode: u[_0x1vk[747]][_0x1vk[748]],padding: f
}),
AES 对象,声明了 iv
为 key
,两者一样,mode
为 CBC
,padding
为 Pkcs7
e = o[_0x1vk[720]](t[_0x1vk[749]])
对第一个参数进行加密
encodeURIComponent)(e)
对加密后的内容再次进行 URL 编码,到此 dInfo
参数处理完成,然后自己使用库进行 AES 加密即可,使用 Python 实现并请求接口返回数据如下
发现返回后的数据是加密的,使用 AES 解密即可
getInfoTp 接口
请求参数
sessionId: 98533e7b1323471c82f42bda694af2aa 同上
responseId: b0f1474ffe8a41a8bbe225f9daa22e23 接口1返回的
dInfo: 9bGgD6bvcFdJCXEikdLVj48M39SK6%2FI%2FsZwk1iqjrY5Ky%2BtqN7Pk%2BsHpRLRQxuNk...省略
language: zh-CN 固定
data: IsRd8Fl22naf8FS6...省略
请求响应
{"code":0,"data":{"ischange":false,"status":1},"message":"校验失败"
}
dInfo
与上面接口 1 的处理方式一样
这里主要看下 t
,打断点依次调用栈往上找, 找到了下图位置
熟悉的配方 AES,看下都加密了什么内容
c[_0xw19[162]](r[_0xw19[7]][_0xw19[164]](e, c[_0xw19[25]][_0xw19[104]]));
e
为轨迹相关的数据,c[_0xw19[25]][_0xw19[104]])
是 sessionId
,下面是 e
的内容,包含了一个 x坐标
、track轨迹
、p坐标
'{"x":77,"track":"16,22,1|17,22,17|18,22,22|19,22,29|20,22,34|21,22,37|22,22,42|23,22,46|24,22,51|25,22,53|26,22,58|27,22,62|27,23,64|28,23,66|29,23,68|30,23,72|31,23,76|32,23,80|33,23,85|34,23,88|35,23,91|36,23,98|37,23,103|38,23,107|39,23,109|40,23,110|41,23,112|42,23,113|43,23,116|44,24,119|45,24,124|46,24,124|47,24,128|48,24,133|49,24,134|50,24,135|51,24,138|52,24,141|53,24,144|54,24,147|55,24,149|56,24,153|57,24,158|58,24,159|59,24,164|60,24,167|61,24,172|62,24,175|63,24,179|64,24,183|65,24,187|66,24,189|67,24,194|68,24,198|69,24,202|70,24,209|71,24,211|72,24,220|73,24,225|74,24,231|75,24,231|76,24,236|77,24,245|78,24,254|79,24,256|80,24,263|81,24,271|82,24,277|83,24,280|84,24,287|85,24,293|86,24,298|87,24,301|88,24,307|89,24,313|90,24,319|91,24,323|92,24,333|93,24,353|93,24,448|","p":[0,0]}'
最终结果
代码 GitHub 地址:关注【趣码周】公众号获取
微信公众号:【趣码周
】
[JS逆向案例]安居客滑块分析相关推荐
- JS逆向-韵达快递滑块分析
嗯,我们今天我们要分析的是一个滑块案例,简单的记录下,确实挺简单的. 链接地址:http://ydgw.yundasys.com:31620/view/zxfuwu/sfastgood.html 这是 ...
- js逆向案例-某数美
目录 一.案例分析 二.fveify校验分析-滑块/点选 1.滑块 2.点选 三.动态的js参数名以及密钥获得方式 四.DES/滑块缺口/轨迹xyt代码 一.案例分析 点击查看案例网址 如图regis ...
- Js逆向教程17-极验滑块 实现加密算法的逻辑
Js逆向教程17-极验滑块 实现加密算法的逻辑 还是和上节课一样,针对这个网址 https://www.geetest.com/demo/slide-float.html 一.加密算法的结果查看 计算 ...
- Python爬虫之Js逆向案例(2)-某乎搜索
Python爬虫之Js逆向案例(2)-知乎搜索 声明:某乎加密逆向分析仅用于研究和学习 大家好,今天继续分享关于某乎关键词搜索接口为案例的Js逆向实战.如果你是一名新手,而且还没有来得及看上一篇< ...
- Python爬虫之Js逆向案例(6)-某道翻译
Python爬虫之Js逆向案例(6)-有道翻译 声明:某道翻译加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,距离上次分享js逆向案例已经有一个月了,在这期间每次在快要揭秘出来时.整理文章 ...
- Python爬虫之Js逆向案例(8)-某乎x-zst-81之webpack
声明:某乎加密逆向分析仅用于研究和学习,如有侵权,可联系删除 大家好,相信各位童鞋通过上期<Python爬虫之Js逆向案例(7)-知hu最新x-zse-96之rpc方案>这篇文章了解了什么 ...
- JS逆向案例文章推荐
1.JS逆向语法学习分享 2.JS逆向案例 阿J的CSDN 成功你要成仁啊的CSDN mkdir700的CSDN 渔滒的CSDN 咸鱼学python 白白嫩嫩的简书 考古学家的CSDN 太阳花田向日葵 ...
- 安居客爬虫+分析+回归
安居客爬虫+分析+回归 工具:Pycharm,Win10,Python3.6.4 这次我们要做的是安居客西安地区房源爬虫,然后数据分析,并做一个简单的回归分析. 我们之前的爬虫和简单的数据分析已经说了 ...
- 凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证)
目录 1.前提和大概思路概述 2. 转换思路selenium和验证滑块图片的获取处理 3.总结 1.前提和大概思路概述 只是学习的途中有一些新的发现,分享给大家,希望对你们有帮助. 凡科网的JS逆向的 ...
最新文章
- asp.net mvc jqgrid 同一个页面查询不同的表,jqgrid显示不同表的表头和数据并且分页...
- 第二章:Android游戏开发之前台渲染
- Hibernate连接数据库
- 【HDU - 2612】Find a way(bfs)
- gps test free android,GPSTest | F-Droid - Free and Open Source Android App Repository
- Mysql 常用show命令
- 大数据之-Hadoop3.x_MapReduce_outputformat案例需求分析---大数据之hadoop3.x工作笔记0121
- 用户登入验证码代码示例
- jsp 文件使用 include指令 导入 jspf 分析,及导入jspf 文件后出现乱码问题
- GCD and LCM HDU 4497 数论
- KPI and evaluation decouple verification
- redirect_uri域名与后台配置不一致
- c语言设计一个语音识别程序,用 C# 开发自己的语音识别程序
- 车载蓝牙通话支持电话本PBAP功能的说明
- 1021.Deepest Root
- vue3项目源码汇集
- EXCELL XLToolbox科研作图插件
- LeetCode 力扣C++题解 575. 分糖果
- 【JZOJ4597】现世斩
- vue3 Composition ApI总结