首页 > 其他分享 >js逆向实战之数位观察响应数据解密

js逆向实战之数位观察响应数据解密

时间:2024-04-30 17:35:52浏览次数:23  
标签:swguancha 解密 js mode str import CryptoJS 数位

url:https://www.swguancha.com/home/city-detail?code=310100

分析过程

  1. 抓数据包,发现回显数据是加密字符串。
    image

  2. 对于这种回显数据解密,大概率通过拦截器实现,搜索interceptors
    image

  3. 只需关注响应拦截器,一共两处。

  • 第一处,只是对字符串的弹出和插入操作,不是。
    image
  • 第二处,可以看到decryptAES关键字了,解密逻辑就在这里了。
    image
  1. 打断点,刷新界面。
    image
    看下t.datakeyivmode的值。
    t.data就是数据包的回显数据。
    image
    key=n=u.enc.Utf8.parse(l)l是在上面定义的常量。
    image
    mode通过mode: u.mode.ECB可得到是ECB模式。
    iv就不需要了。

  2. 编写python代码获取数据。

import requests
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import base64


url = "https://app.swguancha.com/client/v1/cPublic/consumer/property/type/search?level=2"
resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                                                 "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 "
                                                 "Safari/537.36", "Referer": "https://www.swguancha.com/"})
mi_str = resp.text.replace(" ", "")     # 响应数据有空格,需进行处理

key = "QV1f3nHn2qm7i3xrj3Y9K9imDdGTjTu9".encode("utf-8")
aes = AES.new(key=key, mode=AES.MODE_ECB)
ming_str = aes.decrypt(base64.b64decode(mi_str))
ming_str = unpad(ming_str, 16)
print(ming_str.decode("utf-8"))

运行结果如下
image

  1. 也可以通过python调用js的代码实现。

var CryptoJS = require("crypto-js");

var l = "QV1f3nHn2qm7i3xrj3Y9K9imDdGTjTu9";

function decrypt(t) {
    var n = CryptoJS.enc.Utf8.parse(l)
        , r = CryptoJS.AES.decrypt(t, n, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    })
        , i = r.toString(CryptoJS.enc.Utf8)
        , s = JSON.parse(i);
    return s;
}

from functools import partial
import subprocess

subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")

import requests
import base64
import execjs


url = "https://app.swguancha.com/client/v1/cPublic/consumer/property/type/search?level=2"
resp = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                                                 "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 "
                                                 "Safari/537.36", "Referer": "https://www.swguancha.com/"})
mi_str = resp.text.replace(" ", "")     # 响应数据有空格,需进行处理
file_object = open("解密.js", mode="r")
exec_code = file_object.read()
exec_js = execjs.compile(exec_code)
res = exec_js.call("decrypt", mi_str)
print(res)

运行结果如下
image

标签:swguancha,解密,js,mode,str,import,CryptoJS,数位
From: https://www.cnblogs.com/sbhglqy/p/18168444

相关文章

  • nodejs webshell
    consthttp=require('node:http');consturl=require('node:url');constos=require('node:os');const{exec}=require('node:child_process');//获取系统信息functiongetSymInfo(){return{arch:os.arch(),......
  • decimal.js 处理浮点数计算
    decimal.js处理浮点数计算:https://blog.csdn.net/Wustfish/article/details/132835178?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4-132835178-blog-134384490.235^v43^pc_blog_bottom_relevance_base8&spm=1001.2101.300......
  • 关于JSON转字符串后前端与python得到的结果不一致的问题,及对象按key排序
    背景:哈希码参数校验防参数篡改。前端下发接口时对参数按约定秘钥和逻辑进行加密,后端在获取到请求后对请求参数以同样的秘钥和逻辑加密计算得出哈希值,再与请求的哈希值对比,如果不一致则证明参数被篡改。前端代码:对json对象进行了按key排序1letdataTmp=this.de......
  • Go语言常用标准库——json、文件操作、template、依赖管理及Go_module使用
    文章目录Go语言之jsonMarshal函数Unmarshal函数Go语言之文件操作打开和关闭文件读取文件file.Read()基本使用循环读取bufio读取文件ioutil读取整个文件文件写入操作Write和WriteStringbufio.NewWriterioutil.WriteFile练习copyFile实现一个cat命令template模板模板示例依......
  • permutations and combinations in js All In One
    permutationsandcombinationsinjsAllInOnejs中的排列组合概念排列组合demos/*permutations&combinations排列&组合https://leetcode.com/problems/3sum/给定一个数字数组,找出有三个元素为一组构成的所有不重复的子数字数组!*///constarr=[1,2,......
  • js逆向实战之集思录登录参数加密解析
    url:https://www.jisilu.cn/account/login/分析过程输入用户名和密码,抓包。(因为是测试,输入的账号和密码都是123456)可以看到用户名和密码都被加密了,且是被同一种加密算法加密的。搜索关键词user_name,有很多条记录。一个一个看,很快就可以确定加密的位置。打断点,重新......
  • SpringBoot的JSR303校验
    关于JSRJSR是JavaSpecificationRequests的缩写,意思是Java规范提案。是指向JCP(JavaCommunityProcess)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。关于JSR-303JSR-303是JAVAEE6中的一......
  • Babel与core-js
    1.Babel是把ES6的语法转成ES5比如:const、箭头函数、...(结构)、模板字符串等等Babel原理转译分为三阶段:解析(Parse),将代码解析⽣成抽象语法树AST,也就是词法分析与语法分析的过程转换(Transform),对语法树进⾏变换方面的⼀系列操作。通过babel-traverse,进⾏遍历并作添加、更新、......
  • vue.js 3 初学经验:开发环境搭建,Windows,nginx
    Windows11nginx-1.20.0"vue":"^3.4.21"--- 序章vue3开发,不需要后端服务业是可以的。在需要后端服务时,使用nginx来转发请求是很好的(个人开发者)。 注,还有什么其它方式吗?注,本文的后端服务是使用Java开发的HTTP接口。注,参考资料#2介绍了多个vue.js3.0项目......
  • 给Qt搭建一个简单的Json服务器用于软件调试
    一.vscode+nodejs+npm安装二.nodejs服务器开启打开vscode-终端-新建终端进入json_server目录cdD:\json_server运行启动命令,启动json-server服务器npmrunjson:server效果如下:PSD:\json_server>npmrunjson:server>[email protected]:se......