zoukankan      html  css  js  c++  java
  • RPC调用获取参数值

    本文以 RPC 获取百度登录password加密值为例:

    涉及的知识点有:

      1.js调试,寻找加密代码

      2. 浏览器本地代码替换

      3. js自执行函数

      4. 插桩

      5. RPC 远程调用

      6. python websocket ,js websocket

    一.寻找百度登录password 加密代码

    1.找加密代码

     2. 加密代码的位置

    二.js本地替换

    1.浏览器--> Overides--->select floder for overides--> 选择目录---> 会弹出权限允许按钮--> 点击允许--> 未格式化的js文件右键—》 save for overrides--> 复制格式好的代码到未格式的js文件中(替换)--》保存

     

     

    三.将自执行websockect 客户代码注入到本地js加密文件中(加密前一句,添加)

      js自执行函数

      闭包自执行函数,不污染全局变量

    !(function () {
        
    })();

    1. 将需要写的逻辑代码加入到自执行函数中

    web.js

    !(function () {
    
        // 导出函数e,从而能外部调用
        window.deng=e;
    
        var ws = new WebSocket("ws://127.0.0.1:5678");
        ws.onopen=function (ev) {
    
        };
    
        ws.onmessage =function (ev) {
            //收到客户端的信息,并对其进行加密
            var pwd = window.deng.RSA.encrypt(ev.data);
            // 向客户端发送加密后的信息
            console.log(pwd);
            ws.send(pwd)
    
        };
    
    
    })();

     2. 将上面web.js中的代码加入本地js文件中并保存本地替换插桩

     3. 开启python websocket 服务端

    服务端server.py 代码:

    import asyncio
    import websockets
    
    async def echo(websocket, path):
        # cnt = 0
        while True:
            #要发送的消息
            msg = input("send=>")
            #给客户端发信息
            await websocket.send(msg)
            try:
                message = await websocket.recv()
                print(f"加密前{msg}\n加密后:{message}")
                print("==================")
            except Exception as e:
                print(e)
            # await asyncio.sleep(1)
    
    
    
    start_server = websockets.serve(echo, '127.0.0.1', 5678)  # 地址改为你自己的地址
    asyncio.get_event_loop().run_until_complete(start_server)
    asyncio.get_event_loop().run_forever()
    server.py

     4. 开启浏览器客户端

    web.js的代码已经注入到本地js中,作为客户端

    (1)刷新百度页面,重新进入百度登录页面,点击登录

    5. python服务端发送明文密码后:

  • 相关阅读:
    Nightwatch的介绍
    reduce的用法及实例
    什么是声明式渲染?
    H5自带的表单验证
    Flex弹性布局
    JS中的forEach,for in,for of和for的遍历优缺点及区别
    将博客搬至CSDN
    9 外观模式(Facade)
    8 代理模式(Proxy)
    7 装饰模式(Decorator)
  • 原文地址:https://www.cnblogs.com/knighterrant/p/15680421.html
Copyright © 2011-2022 走看看