前端加密对抗之CDP加解密

Mr.Wu 2,383 1 正在检测是否收录...

前言

现在很多网站都使用各种方式进行数据加密,在基于VUE时,很难搞明白其前端加密过程。
前段时间土司有大佬分享了关于前端加解密破解思路,研究了下,感觉非常nice,再也不需要花大量的时间去扒相应的加解密JS代码了,这个方法让我们再次遇到前端加密网站时显得更加方便省时。
土司已经有命令行转发和burp版的CPD加解密工具了,只是我个人不太喜欢,burp爆破时间久了就会卡死,命令行的需要转发感觉也挺麻烦,所以自己折腾了下,写了个python版的~

代码

import json
import requests
import websocket

def websocket_conn(title):
    resp = requests.get('http://127.0.0.1:9222/json')
    assert resp.status_code == 200
    for item in resp.json():
        if item.get('title') == title:
            ws_url = item.get('webSocketDebuggerUrl')
            return websocket.create_connection(ws_url)


def execute_cdp(conn: websocket, command: dict):
    conn.send(json.dumps(command))
    return json.loads(conn.recv())

def get_callFrameId(title):
    conn = websocket_conn(title)
    n = 0
    t = 1
    while t:
        try:
            n = n+1
            command = {'method': 'Debugger.enable','id': n, 'params': {} }
            resp = execute_cdp(conn, command)
            if resp['method'] == 'Debugger.paused':
                callFrameId = resp['params']['callFrames'][0]['callFrameId']
                #print(callFrameId)
                return callFrameId
        except:
            t = 0

def get_execute(callFrameId,code,title):
    conn = websocket_conn(title)
    command = {'method': 'Debugger.evaluateOnCallFrame','id': int(), 
        'params': {
            'callFrameId': callFrameId,
            'expression': code,
            'objectGroup': 'console',
            'includeCommandLineAPI': True,
        }
    }
    resp = execute_cdp(conn, command)

    try:
        return resp['result']['result']['value']
    except:
        print("加解密过程出现错误!")

def run(title,code):
    value = get_execute(get_callFrameId(title),code,title)
    return value

使用方法

  1. 开启浏览器的 Protocol Monitor,谷歌浏览器开启方法为:打开谷歌浏览器快捷方式属性,目标处添加"谷歌浏览器路径" --remote-debugging-port=9222 --user-data-dir= --remote-allow-origins=* 然后关闭所有谷歌浏览器进程,重新打开谷歌浏览器访问 http://127.0.0.1:9222/json 存在内容说明开启成功!
  2. 访问目标网站,在其加密函数代码处下断点(如果是需要解密就在解密函数代码处下断点)前端加密对抗之CDP加解密

    PS:验证函数是否能加解密可以通过console控制台来尝试

    前端加密对抗之CDP加解密

  3. 加解密函数下断点并且控制台测试成功之后,将上方提供的代码保存为 js_cdp.py 文件。
  4. 在你的 python 脚本中引用并且调用 run 函数即可:js_cdp.run('目标站完整标题',f'加解密函数及内容')前端加密对抗之CDP加解密

Tip

  • 注意 js_cdp.py 文件中第6行中的IP和端口是否和你的一致。
  • 注意 js_cdp.py 文件中的模块是否已经安装。
  • 缺点:本工具只适用于使用python进行爆破等场景时引用,如需别的地方引用,其实也是可以并且很简单,只需要在 js_cdp.py 文件中加入Flask然后通过Flask进行转发即可,几行代码的事稍微百度下就会了,因为我个人用不到,所以懒得加。
  • 优点,多线程引用毫无压力,对于我这种喜欢使用python来测试的人来说,这个工具使用更加方便,在需要的时候直接引用即可,不需要任何修改和执行转发之内的!

打赏
发表评论 取消回复
表情 图片 链接 代码

  1. 超级问鼎
    超级问鼎 Lv 1

    抓包哪个看不懂啊,哪里有视频?

分享
微信
微博
QQ