声明

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

目标

目标网站

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. 【技术实战】Vue技术实战【五】

    需求实战一 效果展示 代码展示 <template> <div class="home-component"> <div class="pr ...

  2. ubuntu安装rpm格式包

    首先,我们要安装alien这一软件: $sudo apt-get install alien ##alien默认没有安装,所以首先要安装它 $sudo alien xxxx.rpm ##将rpm转换为 ...

  3. ASP.NET WebForm中在TextBox输入框回车时会触发其他事件,如何处理?

    一.TextBox在输入框回车时会触发其他事件,如何解决? 前台代码: <ul> <li><span>名称:</span><asp:TextBox ...

  4. FreeRTOS 基于 ARMv8-M 对 MPU 的应用

    一.前言 ARMv8-M 支持 MPU,FreeRTOS 也添加了对这些 MPU 的应用代码.这里用来记录 FreeRTOS 对 MPU 应用方式的探究结果. 二.ArmV8-M MPU 介绍 ARM ...

  5. IDApython练习1-脚本去花

    IDApython练习1-脚本去花 这里主要是练习IDApython脚本去花 1 这里 jz跳转条件是zf=1, jnz跳转条件是zf=0, 但是zf就2种可能,所以无论如何都会跳转到loc_411D ...

  6. 头疼!卷积神经网络是什么?CNN结构、训练与优化一文全解

    本文全面探讨了卷积神经网络CNN,深入分析了背景和重要性.定义与层次介绍.训练与优化,详细分析了其卷积层.激活函数.池化层.归一化层,最后列出其训练与优化的多项关键技术:训练集准备与增强.损失函数.优 ...

  7. 一文了解Validator库

    1. 引言 github.com/go-playground/validator 是一个 Go 语言的库,用于对结构体字段进行验证.它提供了一种简单而灵活的方式来定义验证规则,并在验证过程中检查结构体 ...

  8. 解密Prompt系列14. LLM Agent之搜索应用设计:WebGPT & WebGLM & WebCPM

    前两章,我们分别介绍了基于微调和prompt的工具调用方案,核心都是如何让大模型和工具进行交互,包括生成工具调用语句和处理工具调用请求.不过在实际应用中,想要设计一个可以落地的LLM Agent,需要 ...

  9. C#中的ConcurrentExclusiveSchedulerPair类

    为什么使用ConcurrentExclusiveSchedulerPair? 现实生活中的例子是一个停车场的入口和出口,多辆车可以同时进入和离开停车场,但是只有一个车辆可以进入或离开一次. 这时候就需 ...

  10. Jquery tableExport.js将网页中的表格导出为Excel

    需求:将如下网页中的所有表格一次导入到Excel文件中. 方法:使用jQuery的tableExport.js插件,可以将网页中指定的table表格数据导出到Excel文件,而不需要经过后台. 操作步 ...