微信小程序抓包和解包

文章摘要

Bpple-GPT

微信小程序抓包和解包


这里主要使用的工具是

  • Proxifier
  • Yakit

代理 配置

在Proxifier中

先添加一个代理,我这里使用的是3333端口

image-20241130131722799

在yakit中

在MITM交互劫持中添加3333劫持

image-20241130131944630

这个后面就是安装证书

image-20241130132037314

代理规则配置

  • 可以直接下载yakit配置好的规则,直接导入Prox

https://aliyun-oss.yaklang.com/utils/Yakit-WeChatAppEx.ppx

  • 自己手动添加

在Rule页面添加,保存

image-20241130132207621

开始抓包

如果前面配置好了,但是无法抓包,可以看一这个错误排查

https://yaklang.com/Yaklab/WeChatAppEx/#%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF%E6%8E%92%E6%9F%A5

image-20241130132328064

这里走小程序的流量我们就可以在Yakit中找到了

小程序一些信息获取

进入这个小程序页面右上角三个点

image-20241130133127867

可以看到一些小程序开发常见信息

c6a2a0fb8431b7e99d19b756537fa16

一个简单的利用

随便找了一个小程序----彩虹志愿(倒霉🥚)

image-20241130135722415

image-20241130140054906

在yakit中找到他的api数据

image-20241130135811921

访问一下看看:https://api.caihongzhiyuan.cn/api_front/college/45?

image-20241130135836494

全是页面的数据

写了一个处理爬取的脚本

 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')

最后结果

image-20241130135947916

最后把csv数据导入excel中

image-20241130135616555

微信小程序逆向解包

使用工具:

UnpackMiniApp/UnpackMiniApp.exe at main · Angels-Ray/UnpackMiniApp · GitHub

获取小程序文件

1.首先进入这个文件管理目录

image-20241130142144309

  1. 进入小程序文件位置

image-20241130142249118

可以看到这个

image-20241130142309627

我们利用这个一键解密工具可以

image-20241130140905490

注意⚠️这个下载后需要给它创建一个wxpack文件夹

可以得到这个

image-20241130142421414

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
    

image-20241130142637037

这样就OK了

 ./bingo.bat D:\downloads\unpack\wxpack\wxbffcc9a1dff2dc6f.wxapkg

image-20241130142655214

可以看到解包后的目录: image-20241130142749395

可以使用这个小程序开发工具打开文件夹

image-20241130142114054

这个一般是用于分析加密规则的,还没有找到好的例子,后面补充


用键盘敲击出的不只是字符,更是一段段生活的剪影、一个个心底的梦想。希望我的文字能像一束光,在您阅读的瞬间,照亮某个角落,带来一丝温暖与共鸣。

BX33661

isfp 探险家

站长

不具版权性
不具时效性

文章内容不具时效性。若文章内容有错误之处,请您批评指正。


目录

欢迎来到Bpple的站点,为您导航全站动态

65 文章数
20 分类数
44 评论数
15标签数
最近评论
bpple

bpple


一切顺利

fetain

fetain


good luck

bx

bx


good luck

热门文章

Emoji收集

2024-11-01

551
Hello Halo

2024-10-30

532
本地部署LLM

2024-08-22

511
Uptime Kuma

2024-11-29

507
241

访问统计