wangsz20010 发表于 2024-7-24 09:21

国密获取数据思路(RPC、非扣代码)

本帖最后由 wangsz20010 于 2024-7-24 15:09 编辑

加密header:

加密parm:


如果逆向的话显然会非常的麻烦,但是数据要的有比较急,所以采用RPC的方式来进行获取
1.hook到明文位置
(function() {
    var parse = JSON.parse;
    JSON.parse = function(params) {
      console.log("Hook JSON.parse ——> ", params);
      debugger;
      return parse(params);
    }
})();


然后重新加载一下代码:

多走几次直到明文位置:


这就找到了,然后点击前面的那个栈找到对应的函数

这个就是返回的数据,你需要在这个前面进行输出这个i,输出到你能看到的地方

替换内容,选择你的本地目录进行替换内容
插入我的RPC:
(function() {
                        var ws = new WebSocket("ws://127.0.0.1:8080")
                        ws.onmessage = function(evt) {
                        console.log("收到消息:" + evt.data);
                        if (evt.data == "exit") {
                            wx.close();
                        } else {
                            ws.send(i);
                            console.log(i);
                        }
                        }
                        }
                        )();

这样就可以了
打开我的服务端:
import asyncio
import json

import websockets

# from crawl_par import receive_message2
number = 0
records = []
import pandas as pd


def count():
    global number
    number += 1
    print(f'第{number}页')
    return number


async def receive_message(websocket):
    global number, records
    all_data = []
    await websocket.send("ss")
    response_text = await websocket.recv()
    response_text = json.loads(response_text)
    for item in response_text['list']:
      record = {
            'medinsTypeName': item.get('medinsTypeName', ''),
            'medinsLvName': item.get('medinsLvName', ''),
            'medinsName': item.get('medinsName', ''),
            'addr': item.get('addr', ''),
            '所属地': '四川省'
      }
      records.append(record)
    # print(all_data)
    number = count()
    if number == 257:
      # 输出到 Excel
      df = pd.DataFrame(records)
      # df['序号'] = range(1, len(records) + 1)
      df.to_excel(f'output_province/四川省.xlsx', index=False)
      print("数据已成功导出到output.xlsx")


start_server = websockets.serve(receive_message, "127.0.0.1", 8080)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()


启动服务器
然后重新加载一下网站

你点的第几页,爬取的就是第几页,这个使用按键精灵点击下一页即可,也是挺快的,简单 一点

wangsz20010 发表于 2024-7-24 09:26

第一次发帖诶,不知道怎么重新编辑了{:1_907:} 有多的图 不知道咋办了

侃遍天下无二人 发表于 2024-7-24 09:59

wangsz20010 发表于 2024-7-24 09:26
第一次发帖诶,不知道怎么重新编辑了 有多的图 不知道咋办了

要删除的话在附件里找到你的图片去掉就行

Xiaosesi 发表于 2024-7-24 10:15

这个是什么版本的呢,所有版本的都可以这样解嘛

KirinRT 发表于 2024-7-24 10:45

这个思路好啊

相比抓包解密,直接拿原始数据很直观,还可以直接套成脚本执行

Carinx 发表于 2024-7-24 11:18

思路很新奇哈哈哈{:301_1000:}

xuxiake 发表于 2024-7-24 11:43

看着很复杂呀,这个明文没有混淆,要是混淆后没这么方便吧

空竹 发表于 2024-7-24 12:54

JSHook也是一种取巧的办法

bdcpc 发表于 2024-7-24 14:36

没看明白什么意思

yoga2joker 发表于 2024-7-24 14:37

学习了,谢谢分享
页: [1] 2
查看完整版本: 国密获取数据思路(RPC、非扣代码)