微信小程序抓包和解包
微信小程序抓包和解包
这里主要使用的工具是
- Proxifier
- Yakit
代理 配置
在Proxifier中
先添加一个代理,我这里使用的是3333端口
在yakit中
在MITM交互劫持中添加3333劫持
这个后面就是安装证书
代理规则配置
- 可以直接下载yakit配置好的规则,直接导入Prox
https://aliyun-oss.yaklang.com/utils/Yakit-WeChatAppEx.ppx
- 自己手动添加
在Rule页面添加,保存
开始抓包
如果前面配置好了,但是无法抓包,可以看一这个错误排查
https://yaklang.com/Yaklab/WeChatAppEx/#%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E6%8E%92%E6%9F%A5
这里走小程序的流量我们就可以在Yakit中找到了
小程序一些信息获取
进入这个小程序页面右上角三个点
可以看到一些小程序开发常见信息
一个简单的利用
随便找了一个小程序----彩虹志愿(倒霉🥚)
在yakit中找到他的api数据
访问一下看看:https://api.caihongzhiyuan.cn/api_front/college/45?
全是页面的数据
写了一个处理爬取的脚本
import json
import csv
import requests
def extract_school_info(json_data):
# 提取学校名称
school_name = json_data['college']['name']
# 提取学校地址
school_address = json_data['college']['attach']['address']
# 提取学校简介
school_introduce = json_data['college']['attach']['introduce']
# 提取学校电话
school_telephone = json_data['college']['attach']['telephone']
# 提取学校网站
school_website = json_data['college']['attach']['website']
# 提取学校所属省份
school_province = json_data['college']['province']['name']
# 提取学校所属城市
school_city = json_data['college']['city']['name']
# 提取学校类型
school_type = json_data['college']['type']['name']
# 提取学校性质
school_nature = json_data['college']['nature']['name']
# 提取学校标签
school_tags = ', '.join([tag['name'] for tag in json_data['college']['tags']])
# 提取学校排名信息
school_ranks = []
for rank in json_data['college']['attachRanks']:
rank_info = {
'rank': rank['rank'],
'topRankType': rank['topRankType']['name'],
'year': rank['year']
}
school_ranks.append(rank_info)
return {
'school_name': school_name,
'school_address': school_address,
'school_introduce': school_introduce,
'school_telephone': school_telephone,
'school_website': school_website,
'school_province': school_province,
'school_city': school_city,
'school_type': school_type,
'school_nature': school_nature,
'school_tags': school_tags,
'school_ranks': str(school_ranks)
}
def fetch_and_save_school_info(start_id, end_id, csv_file_path):
fieldnames = ['school_name', 'school_address', 'school_introduce', 'school_telephone',
'school_website', 'school_province', 'school_city', 'school_type',
'school_nature', 'school_tags', 'school_ranks']
with open(csv_file_path, 'w', encoding='utf-8', newline='') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for i in range(start_id, end_id + 1):
url = f"https://api.caihongzhiyuan.cn/api_front/college/{i}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
if 'college' in data:
school_info = extract_school_info(data)
writer.writerow(school_info)
else:
print(f"No college data found for ID {i}")
else:
print(f"Failed to fetch data for ID {i}, status code: {response.status_code}")
# 使用示例
fetch_and_save_school_info(1, 100, '学校/所有学校信息.csv')
最后结果
最后把csv数据导入excel中
微信小程序逆向解包
使用工具:
UnpackMiniApp/UnpackMiniApp.exe at main · Angels-Ray/UnpackMiniApp · GitHub
获取小程序文件
1.首先进入这个文件管理目录
- 进入小程序文件位置
可以看到这个
我们利用这个一键解密工具可以
注意⚠️这个下载后需要给它创建一个wxpack文件夹
可以得到这个
GitHub - Angels-Ray/wxappUnpacker: 基于node反编译小程序 已经配置完成
利用上面这个工具
- 首先要有node环境
-
git clone https://github.com/Angels-Ray/wxappUnpacker.git cd wxappUnpacker
-
#一键安装 npm install #或者 npm install esprima npm install css-tree npm install cssbeautify npm install vm2 npm install uglify-es npm install js-beautify
这样就OK了
./bingo.bat D:\downloads\unpack\wxpack\wxbffcc9a1dff2dc6f.wxapkg
可以看到解包后的目录:
可以使用这个小程序开发工具打开文件夹
这个一般是用于分析加密规则的,还没有找到好的例子,后面补充