js逆向之rpc远程调用(你强任你强,我无视一切)
一、找到加密函数位置
二、在其下面注入ws服务
(1)注入准备
资源>>替换>>随便选一个空文件夹
(2)进行注入
进行(1)操作后可直接编辑js代码了,做以下修改
(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(encrypt(evt.data));}}}
)();
红框为插入的代码
修改完成后按 ctrl+s 进行保存,出现下载紫色点表示成功。
保存成功后,把所有断点去掉,运行下面python代码,然后刷新页面,即可进行python调用了。
三、开启ws服务,python进行调用
注意:先运行python代码再去刷新页面
import sys
import asyncio
import websocketsasync def receive_message(websocket):while True:send_text = input("请输入要加密的字符串:")if send_text == "exit":print("退出!")await websocket.send(send_text)await websocket.close()sys.exit()else:await websocket.send(send_text)response_text = await websocket.recv()print("加密结果:", response_text)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()
四、测试效果
python测试效果,注:部署到服务器用flask写个接口就可以提供远程调用啦
谷歌控制台效果
四、部署到服务器
到服务器上也是按上面过程,ws注入不变,只修改python代码,然后用flask提供远程调用。
(1)开启ws服务
同样是进行ws注入后,运行下面代码,再刷新页面
python代码
import asyncio
import websocketsconnected = set()
async def server(websocket):connected.add(websocket)try:async for message in websocket:for conn in connected:if conn != websocket:await conn.send(message)finally:connected.remove(websocket)start_server = websockets.serve(server, "127.0.0.1", 8080)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
(2)开启flask服务
开启ws服务,刷新页面后,即可运行flask提供远程调用了
flask代码
import asyncio
import websockets
from flask import Flask,request
app = Flask(__name__)
loop = asyncio.get_event_loop()async def hello(message):# 连接 websocket 并发送消息 获取相应async with websockets.connect("ws://127.0.0.1:8080") as websocket:await websocket.send(message)return await websocket.recv()def get_encrypt(message):return str(loop.run_until_complete(hello(message)))@app.route('/',methods = ['POST', 'GET'])
def hello_world():if request.method == 'GET':encrypt_txt = request.args.get('encrypt_txt')return get_encrypt(encrypt_txt)if __name__ == '__main__':app.run(host="0.0.0.0",port=80,debug=True)
(3)测试效果
测试效果不错,基本0.05s返回,预估每秒50并发无压力。
js逆向之rpc远程调用(你强任你强,我无视一切)相关推荐
- 学习笔记-RPC远程调用概念和实例
RPC远程调用概念和实例 一定要注意顺序,先hook,然后invoke,再rpc 逆向三段: 第三段RPC:Remote Procedure Call 远程调用 FRIDA精髓:远程调动 frida( ...
- 徒手撸框架--实现 RPC 远程调用
微服务,已经是每个互联网开发者必须掌握的一项技术.而 RPC 框架,是构成微服务最重要的组成部分之一.趁最近有时间.又看了看 dubbo 的源码.dubbo 为了做到灵活和解耦,使用了大量的设计模式和 ...
- java socket 远程调用_使用Socket反射Java流操作进行方法的远程调用(模拟RPC远程调用)...
写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...
- Rpc远程调用框架的设计与实现(2)
接上: 3 基于Json的前后端数据交互 3.1 轻量级的数据交换形式 3.1.1 什么是Json Json(JavaScript Object Notation) 是一种轻量级的数据交 ...
- Rpc远程调用框架的设计与实现(1)
Rpc远程调用框架的设计与实现 1 Rpc远程调用框架设计概述 1.1 研究背景 1.1.1传统的Web开发方式 在传统的Web应用程序中,一般都是采取请求→刷新→显示的模式.即每当用户通过单击 ...
- 从 0 到 1:全面理解 RPC 远程调用!
作者 | Python编程时光 责编 | 胡巍巍 什么是RPC呢?百度百科给出的解释是这样的:"RPC(Remote Procedure Call Protocol)--远程过程调用协议,它 ...
- python rpc调用_从0到1:全面理解 RPC 远程调用
上一篇关于 WSGI 的硬核长文,不知道有多少同学,能够从头看到尾的,不管你们有没有看得很过瘾,反正我是写得很爽,总有一种将一样知识吃透了的错觉. 今天我又给自己挖坑了,打算将 rpc 远程调用的知识 ...
- androidAsync fridaManager 实现某宝 sgmain 70102 rpc 远程调用
仅供学习研究 .请勿用于非法用途,本人将不承担任何法律责任. 前言 使用 AndroidAsync + FridaManager 实现 frida 脚本持久化 rpc 远程调用 AndroidAsyn ...
- zookeeper 密码_「附源码」Dubbo+Zookeeper 的 RPC 远程调用框架
技术博文,及时送达 作者 | 码农云帆哥 链接 | blog.csdn.net/sinat_27933301 上一篇:从零搭建创业公司后台技术栈 这是一个基于Dubbo+Zookeeper 的 RPC ...
最新文章
- IDEA插件-生成对象所有set方法--->GenerateAllSetter
- matlab for循环_从零开始的matlab学习笔记——(5)循环
- Redis缓存穿透、击穿、雪崩及主从复制
- python生成姓名,python自动生成姓名
- Linux操作系统下双网卡路由表配置
- Android项目开发实战—倒计时[Handler,Timer,TimerTask,Message]
- 本人计划继续写飞鸽传书,支持的人有吗?
- SolidEdge 如何绘制局部视图 局部放大图
- 安装插件设置Intellij IDEA背景图片
- 计算机网络的体系结构
- iOS-实现验证码倒计时功能(1)
- 注册登录时本地图片验证码
- Pycharm 简单设置成官方中文版
- 直播行业市场分析:2022年构建多元化的直播生态体系
- 基于频域的数字图像水印算法设计
- 回退到首页,返回浏览器窗口历史第一页 js
- ArcGIS中相对高程的提取
- win7系统64位系统怎么计算机配置,电脑装64位系统有什么要求|64位系统安装条件是什么...
- 创新式开发探索(三) —— 反思自己的开发活动
- 容器服务ACK+容器网络文件系统CNFS快速搭建NGINX网站(体验有礼)