• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

js逆向rpc远程调用

武飞扬头像
波仔不百度
帮助1

学新通

websocket  python代码: 

  1.  
    #服务端,先开启这个
  2.  
    import asyncio
  3.  
    import websockets
  4.  
     
  5.  
    connected = set()
  6.  
     
  7.  
     
  8.  
    async def server(websocket):
  9.  
    connected.add(websocket)
  10.  
    try:
  11.  
    async for message in websocket:
  12.  
    for conn in connected:
  13.  
    if conn != websocket:
  14.  
    await conn.send(message)
  15.  
    finally:
  16.  
    connected.remove(websocket)
  17.  
     
  18.  
     
  19.  
    start_server = websockets.serve(server, "localhost", 8888)
  20.  
    asyncio.get_event_loop().run_until_complete(start_server)
  21.  
    asyncio.get_event_loop().run_forever()
学新通
  1.  
    #客户端,调用rpc例子
  2.  
    import asyncio
  3.  
    import websockets
  4.  
     
  5.  
    loop = asyncio.get_event_loop()
  6.  
     
  7.  
     
  8.  
    async def hello(message):
  9.  
    # 连接 websocket 并发送消息 获取相应
  10.  
    async with websockets.connect("ws://localhost:8888") as websocket:
  11.  
    await websocket.send(message)
  12.  
    return await websocket.recv()
  13.  
     
  14.  
     
  15.  
    def get_encrypt(message):
  16.  
    return str(loop.run_until_complete(hello(message)))
  17.  
     
  18.  
     
  19.  
    if __name__ == "__main__":
  20.  
    print(get_encrypt(str("1234565")))
学新通

值得注意的一点是,需要替换到本地注入的js代码

例子:这里用rsa加密为例

  1.  
    //自执行函数
  2.  
    !(function () {
  3.  
    window.test = f;
  4.  
    var ws = new WebSocket('ws://127.0.0.1:8888');
  5.  
    ws.onopen = function (evt) {
  6.  
    console.log('Connection open ...');
  7.  
    };
  8.  
    ws.onmessage = function (evt) {
  9.  
    console.log(evt.data)
  10.  
    console.log(window.test.encrypt([me.servertime, me.nonce].join("\t") "\n" evt.data))
  11.  
    ws.send(window.test.encrypt([me.servertime, me.nonce].join("\t") "\n" evt.data))
  12.  
    };
  13.  
    ws.onclose = function (evt) {
  14.  
    console.log("closed")
  15.  
    };
  16.  
    })();
学新通

1.一般来说开启的顺序是,服务端python代码,然后是浏览器中的js代码(调试一下),最后可以按照客户端模式调用rpc加密接口。

2.js本地替换,先下断点测试一下,然后右键js代码保存以备替代,最后单独测试一下,如果下断点没走,说明断点没找对,建议用alert()测试一下。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgekhbg
系列文章
更多 icon
同类精品
更多 icon
继续加载