声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

目标

目标网站

aHR0cHM6Ly9kLndlaWRpYW4uY29tL3dlaWRpYW4tcGMvbG9naW4=

目标

获取登录接口 UA 参数加密,UA参数经过了OB混淆加密

其他

**本文更新于2023/11/13 **

与之前版本不太一样的是增加了phone和password 以及CountryCode的加密。

ps: 上一次发的文章中有个错误。我的账号和密码加密没有添加公钥 导致请求失败。

还有的就是对ua的某些值的校验。

其他参数加密



如上图所示:除了ua是我们本文需要研究的。还有几个参数也是需要我们给逆向逆出来的。

分别为:

  • phone
  • countryCode
  • password
  • wdtoken

我们直接搜索 countryCode



如上图所示。这里就直接显示出了加密的位置。后面就一直跟栈一直扣就行了。很简单。



跟到这个地方。把这一整个JSEncrypt 文件保存下来。然后简单补两个环境。

具体代码如下:

JSEncrypt.js

window = global;
navigator={
appName:'Netscape'
}
...

login_encrypt.js

window = global;

var JSEncrypt =require("./JSEncrypt.js")
var v = new JSEncrypt() _encrypt = function (e) {
return e ? v.encrypt(e + "") : ""
} getCountryCode = function (e) {
return Number(e.split("-")[0])
} function encrypt_up(t){
return _encrypt(t)
} function encrypt_CountryCode(){
return _encrypt(getCountryCode("86-Z"))
} // i = window.getUa()
// phone = _encrypt(17772231096)
// countryCode = _encrypt(getCountryCode("86-Z"))
// password = _encrypt("1323123213")
//
// console.log(phone,countryCode,password)

至于wdtoken

其实是通过某个请求set_cookie得来的。

抓包分析

研究完其他参数。我们可以来搞UA了。

在刚刚的抓包过程中。我们已经找到了加密位置。



可以看到 ua加密赋值给了i 。i最后再通过URL编码。得到了网页上呈现的UA。

进栈之后



可以看到 这就是个标准的OB混淆啊。至于什么是OB混淆,自己搜搜资料。这里贴一个官网地址: https://obfuscator.io/#upload

简单来说就是一个免费且高效的 JavaScript 混淆器。使代码更难复制,并防止其他人窃取代码。

可以通过AST的方式。或者是工具的方法去给解混淆。

这里我通过

https://tool.yuanrenxue.cn/decode_obfuscator

模式2 的方式去解混淆。

代码分析

解混淆后的主要代码如下



确实到这边已经一目了然了。

这里简单来看看 _0x2e98dd 和 _0x420004

_0x2e98dd:



_0x420004:



如此一来。可以得到一下如此结论

UA参数由三部分组成。最后通过gzip压缩然后btoa(base64)加密。

  1. _0x7dfc34 这个值很简单。通过JS生成的时间戳
  2. _0x1722c3(_0x2e98dd) 这部分是浏览器的环境代码
  3. _0x1722c3(_0x420004) 这部分是鼠标轨迹以及一些是否点击的鼠标环境。
  4. 最后通过gzip压缩 然后base64 加密。
var _0x261229 = _0x1722c3(_0x2e98dd) + "|" + _0x1722c3(_0x420004) + "|" + _0x7dfc34["toString"](16);

_0x261229 = btoa(_0x570bef["gzip"](_0x261229, {
"to": "string"
}));

参数分析

这里扣代码其实很简单。因为已经脱混淆了。缺什么补什么就行了

这里需要注意的是最后通过zip压缩 然后base64加密的那部分函数代码。

这里可以通过两种方法去补全。

  1. 扣代码(最稳定且最容易出正确结果的)
  2. 因为是gzip压缩算法,可以直接套库。

代码

我们把所有值带入



诶 发现为什么是参数错误呢?

哦我的天哪。好像并没有看上去那么简单。经过我无间断的测试。我发现ua确实是没问题的。

而真正出问题的是 phone 和password 这个rsa加密。

我们网上去找。

按步骤去跟栈 最后发现在初始化V的时候。还有个地方设置了个公钥。我并没有发现。所以导致请求的时候 老是参数错误。



设置完公钥后。重新请求。

然后就可以了。搞的时候感觉很难。真正写出来。感觉好简单。。。





可以关注我的微信公众号。

某些文章,核心代码,以及提前更新都在微信公众号上。

JS逆向实战26——某店ua模拟登陆的更多相关文章

  1. JS逆向实战12——某店 captchaToken 参数 加密

    今天爬取的是网站需要模拟登陆 目标网站 aHR0cHM6Ly9wYXNzcG9ydC55aGQuY29tL3Bhc3Nwb3J0L2xvZ2luX2lucHV0LmRv 浏览器抓包分析 随便输入一堆假 ...

  2. JS逆向实战4--cookie——__jsl_clearance_s 生成

    分析 网站返回状态码521,从浏览器抓包来看,浏览器一共对此地址请求了三次(中间是设置cookie的过程): 第一次请求:网站返回的响应状态码为 521,响应返回的为经过 混淆的 JS 代码:但是这些 ...

  3. JS逆向实战3——AESCBC 模式解密

    爬取某省公共资源交易中心 通过抓包数据可知 这个data是我们所需要的数据,但是已经通过加密隐藏起来了 分析 首先这是个json文件,我们可以用请求参数一个一个搜 但是由于我们已经知道了这是个json ...

  4. JS逆向实战13——某市公共资源交易中心Cookie混淆加密

    "本文地址:https://www.cnblogs.com/zichliang/p/17346860.html 目标网站 aHR0cDovL2xkZ2d6eS5obmxvdWRpLmdvdi ...

  5. JS逆向实战8——某网实战(基于golang-colly)

    其实本章算不上逆向教程 只是介绍golang的colly框架而已 列表页分析 根据关键字搜索 通过抓包分析可知 下一页所请求的参数如下 上图标红的代表所需参数 所以其实我们真正需要的也就是Search ...

  6. JS逆向实战7-- 某省在线审批网站params 随机生成

    参数分析 我们首先通过抓包 发现这个就是我们所需要的数据 然后我们通过fidder 发起请求 结果: 通过我们反复测试 发现这个params的参数是每次请求中都会变化的 断点查找 我们通过 这个t参数 ...

  7. JS逆向实战6-- x轴 y轴 过点触验证码

    点触验证码是一种常见的反爬手段 解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间的对应关系. 这 ...

  8. JS逆向实战5--JWT TOKEN x_sign参数

    什么是JWT JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式).它是在Web环境下 ...

  9. JS逆向实战2--cookie-AcwScV2加密—某招标信息网

    cookies的获取 首先拿到第一次访问原链接 拿到acw_tc的值,然后放到session中去 再用这个session再次访问原链接拿到js加载的加密的真实数据.用了一些反混淆. 最后获取这个数据中 ...

  10. JS逆向实战1——某省阳光采购服务平台

    分析 其实这个网站基本没有用到过什么逆向,就是简单的图片base64加密 然后把连接变成2进制存成文件 然后用ocr去识别即可 !! 注意 在获取图片连接 和对列表页发起请求时一定要用一个请求,也就是 ...

随机推荐

  1. 三个编程思想:面向对象编程、面向接口编程、面向过程编程【概念解析系列_1】【C# 基础】

    〇.前言 对于 .Net 中的编程思想还是十分重要的,也是编码出高效的程序的基础! 在使用之前了解其本质,那么用起来就游刃有余.下面来简单对比下三个编程思想,看下它们都是什么,它们之间又有什么关系. ...

  2. OpenLayers示例

    http://develop.smaryun.com:81/API/JS/OL3InterfaceDemo/index.htm

  3. [minio]挂载minio到本地

    前言 将minio的bucket挂载到本地文件系统 环境 客户端系统版本:centos 7 MinIO节点IP:192.168.0.20 s3fs方式步骤 安装s3fs客户端(可能需要先安装epel- ...

  4. 宝塔linux网站搬家思路

    对于一个网站来说,其实就分为两个部分,一个是网站的源码,另一个就是网站的数据库. 那么对于网站搬家而言,要考虑的也就是两点,一是要打包网站的源码,再者就是要打包网站的数据库.其次就是要在新的站点,配置 ...

  5. React-Chat移动端聊天实例|react18 hooks仿微信App聊天界面

    基于react18+react-vant+zustand仿微信手机端聊天室ReactChat. react18-chat 一款使用最新react18.x hooks.zustand搭配react-va ...

  6. 《SQL与数据库基础》22. 分库分表(二)

    目录 分库分表(二) MyCat分片规则 范围分片 取模分片 一致性hash分片 枚举分片 应用指定算法 固定分片hash算法 字符串hash解析 按天分片 自然月分片 MyCat原理 MyCat管理 ...

  7. 震坤行根据ID取商品详情 API

    item_get-根据ID取商品详情 注册开通 zhenkunhang.item_get 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) se ...

  8. prometheus 监控实战篇

    prometheus 监控 目录 prometheus 监控 1.上传tar包 2.解压到对应文件夹 3.配置开机自启动 4.配置Prometheus 5.black_exporter 监控网站状态 ...

  9. kubernates的集群安装-kubadm

    kubernates的集群安装-kubadm 环境准备工作(CentOS) 准备三台或以上的虚拟机 停用防火墙 sudo systemctl stop firewalld sudo systemctl ...

  10. EtherCAT转Modbus网关做为 MODBUS 从站配置

    EtherCAT转Modbus网关做为 MODBUS 从站配置案例 兴达易控EtherCAT转Modbus网关可以用作MODBUS从站的配置.这种网关允许将Modbus协议与EtherCAT协议进行转 ...