【2023最新超详细】全国建筑市场监管公共服务平台(四库一平台)js逆向

本文主要是介绍【2023最新超详细】全国建筑市场监管公共服务平台(四库一平台)js逆向,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • js逆向思路
  • 第一步抓包
  • 第一种破解方法,堆栈法
    • python还原
    • js扣代码还原
  • 第二种破解方法,搜索法
  • 完整代码
  • 效果展示

js逆向思路

第一步看请求网址的发起程序都有哪些

接在js文件搜索AES,MD5,等高频加密方式的字段

1 parse  
2 decrypt
3 .toString()
4 Base64
5 表单字段
6 url关键字

最后可疑的地方都打上断点,调试,跟踪堆栈

第一步抓包

首先右键打开开发者工具,打开网络界面

接着点击翻页,抓到第二页的包

image-20231025221029421

这里可以看到点击第二页后只有一个包,那肯定是他了,接着我们看他返回的数据

image-20231025221159632

可以很明显的看到被加密了

破解的发法我这里有两种

第一种破解方法,堆栈法

首先打开发起程序

找到app的js文件

image-20231025221433520

一般的返回值都是这个文件

image-20231025221623917

打开之后黄色的这行就是调用的语句

我们这行代码上下部分的return和函数的地方打上断点

image-20231025221907795

这个是2934,最好把这行代码的整个函数代码的return都打上

image-20231025222014199

我在这行代码(e(t))的最开始的地方打断点的就发现 函数b 有问题,因为他的关键字,这个在第二种方法会讲。

现在打好断点后再次抓包

image-20231025222306744

这里也是断上了,先看看这个t是啥,params一看就是表单吧,很可疑

我们继续走

点击抓包工具里的三角形图案往下运行

在运行了几次之后

image-20231025222550112

就到了我说的很可疑的那段代码,函数b(t):

t 一看不就是 加密后返回值吗

r 是解密后的返回值

我们细看这段代码

image-20231025222857240

很明显,这是AES加密,CBC模式

先把t,就是加密后的返回值解密赋值给e,

n 是 Base64后的e值

最后在使用密匙和偏移量解密,f和m需要先编码

我们可以扣js代码,也可以使用python还原

python还原

from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import binascii
# python AES解密
def decrypt(data):KEY = 'jo8j9wGw%6HbxfFn'.encode()IV = '0123456789ABCDEF'.encode()cipher = AES.new(key=KEY, mode=AES.MODE_CBC, iv=IV)decrypted_data = cipher.decrypt(binascii.a2b_hex(data))result = unpad(decrypted_data, block_size=AES.block_size).decode('utf8')return result

image-20231025223714140

可以看到,我们直接使用加密后的返回值测试python AES解密,这里是成功了

js扣代码还原

image-20231025224057363

抠代码的时候,我们可以看到d,a就是一个算法包,里面有AES,有MD5等等等

我们也可以扣,不过太麻烦了,我们可以直接导入算法包

# 安装算法加密包
npm install crypto-js

然后把d.a 全换成算法加密包就行

// 导入算法加密包
const CryptoJS = require('crypto-js')
f = CryptoJS.enc.Utf8.parse("jo8j9wGw%6HbxfFn");
m = CryptoJS.enc.Utf8.parse("0123456789ABCDEF");
function b(t) {var e = CryptoJS.enc.Hex.parse(t), n = CryptoJS.enc.Base64.stringify(e), a = CryptoJS.AES.decrypt(n, f, {iv: m,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7}), r = a.toString(CryptoJS.enc.Utf8);return r.toString()
}

image-20231025224837375

这里通过打印测试,可以看出来,用js扣代码也成功了

接下来使用execjs模块在python中运行js就行

import execjsf = open('四库一平台.js','r',encoding='utf-8')
text = f.read()
f.close()js = execjs.compile(text)
raw_data = '957******'
res = js.call('b',raw_data)  # call(func,*args) 第一个参数为函数,后面都为参数
print(res)

image-20231025230336593

这里运行后如果报错AttributeError: ‘NoneType’ object has no attribute ‘replace’

这是因为乱码了

解决方法

在导入execjs之前

加上下面的代码

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')

image-20231025230544068

第二种破解方法,搜索法

这种方法不是很好用,因为关键字如果有几十几百就不行了

当我们看到是加密的返回值时,我们第一时间就要想到AES,MD5等加密方式

但是加密一定要解密,如果你js看的多的话,就会发现解密的关键字其实大部分都一样

# 1 parse  
# 2 decrypt
# 3 .toString()
# 4 Base64
# 5 表单字段
# 6 url关键字

这些是我自己整理的

我们可以直接点击右上角的搜索进行查看

image-20231025231300377

我们这里可以根据发起程序,重点看app这个文件,我们可以看到有25个,我们换一个

image-20231025231453796

可以看到,换了一个后,就只剩一个了,而且点开一看,就是我们用第一种方法时找到的那段代码

搜索法很好用,你js逆向多了,就知道解密的关键字都有哪些,可以更精准,不用一点点的打断点

或者在关键字那里都打上断点,这样效率也是不慢的

完整代码

import json
import time
import requests
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import binascii
url = 'https://jzsc.mohurd.gov.cn/APi/webApi/dataservice/query/comp/list'headers = {'Referer': 'https://jzsc.mohurd.gov.cn/data/company','User-Agent': '你的User-Agent','cookie':'你的cookie'
}params = {'pg': '1','pgsz': '15','total': '450',
}
# python AES解密
def decrypt(data):KEY = 'jo8j9wGw%6HbxfFn'.encode()IV = '0123456789ABCDEF'.encode()cipher = AES.new(key=KEY, mode=AES.MODE_CBC, iv=IV)decrypted_data = cipher.decrypt(binascii.a2b_hex(data))result = unpad(decrypted_data, block_size=AES.block_size).decode('utf8')return result
# 翻页
for i in range(30):params['pg'] = str(i)response = requests.get(url, headers=headers, params=params)time.sleep(1.5)try:result = decrypt(response.text)# print(result)json1 = json.loads(result)for item in json1['data']['list']:data_dict = {}data_dict['QY_NAME'] = item['QY_NAME']try:data_dict['QY_FR_NAME'] = item['QY_FR_NAME']except:data_dict['QY_FR_NAME'] = '无'data_dict['QY_REGION_NAME'] = item['QY_REGION_NAME']print(data_dict)print(f"第{i+1}页爬取成功")except Exception as e:print(e)print(response.text)

效果展示

你也可以把数据存入Mysql数据库,csv文件,xlsx文件等

image-20231025232736130

这篇关于【2023最新超详细】全国建筑市场监管公共服务平台(四库一平台)js逆向的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369834

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

如何解决线上平台抽佣高 线下门店客流少的痛点!

目前,许多传统零售店铺正遭遇客源下降的难题。尽管广告推广能带来一定的客流,但其费用昂贵。鉴于此,众多零售商纷纷选择加入像美团、饿了么和抖音这样的大型在线平台,但这些平台的高佣金率导致了利润的大幅缩水。在这样的市场环境下,商家之间的合作网络逐渐成为一种有效的解决方案,通过资源和客户基础的共享,实现共同的利益增长。 以最近在上海兴起的一个跨行业合作平台为例,该平台融合了环保消费积分系统,在短

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU