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服务端发送明文密码后:

RPC调用获取参数值的更多相关文章
- RPC调用与GC垃圾回收
RPC调用 多个服务协同完成一次业务时,由于业务约束(如红包不符合使用条件.账户余额不足等).系统故障(如网络或系统超时或中断.数据库约束不满足等),都可能造成服务处理过程在任何一步无法继续,使数据处 ...
- Dubbo系列(三)dubbo的核心技术--RPC调用
dubbo的核心技术--RPC调用:分为俩部分RPC协议Protocol和方法调用Invoke: 一.RPC协议Protocol(Remote Procedure Call)远程过程调用协议 1.我们 ...
- RabbitMQ学习笔记5-简单的RPC调用
利用空的queue名字("")让rabbitMQ生成一个唯一的队列名称,同时指定队列是:临时的(auto-delete).私有的(exclusive). 在发送的RPC调用消息里设 ...
- Hadoop学习记录(3)|HDFS API 操作|RPC调用
HDFS的API操作 URL方式访问 package hdfs; import java.io.IOException; import java.io.InputStream; import java ...
- 使用RPC 调用NameNode中的方法
用户在Client 端是很难对 NameNode中的信息进行直接访问的, 所以 ,在Hadoop系统中为 Client端 提供了一系列的方法调用,这些方法调用是通过RPC 方法来实现的, 根据RPC ...
- 浅谈RPC调用
RPC英文全称remote procedure call 翻译成中文的意思就是远程过程调用.RPC的出现其实主要是为了解决分布式系统间的通信透明性的问题. 那什么是分布式系统的通信透明性问题?这个问题 ...
- Openstack创建虚拟机 Restful api和RPC调用
Horizon前台界面用于接受用户的输入或动作(action),然后将这些参数构造成RESTful API(https://developer.openstack.org/api-ref/comput ...
- pomelo RPC调用时新增字段缺失
接触pomelo开发一个月,正式开始参与项目开发有10天,遇到很多细节的坑,今天讲讲标题:后端服务器节点之间的rpc调用过程中,返回的数据中新增字段缺失问题. 先讲结果:原因是该rpc调用已经采用了p ...
- Hadoop源码学习笔记(4) ——Socket到RPC调用
Hadoop源码学习笔记(4) ——Socket到RPC调用 Hadoop是一个分布式程序,分布在多台机器上运行,事必会涉及到网络编程.那这里如何让网络编程变得简单.透明的呢? 网络编程中,首先我们要 ...
随机推荐
- 1110 距离之和最小 V3
1110 距离之和最小 V3 基准时间限制:1 秒 空间限制:131072 KB X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].该点到其他点的带权距离 = 实际距离 * ...
- 1119 机器人走方格 V2
1119 机器人走方格 V2 基准时间限制:1 秒 空间限制:131072 KB M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mo ...
- Spring事务的基本原理
Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.. 对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connecti ...
- SROP
先放个例题吧,原理后面有时间再更:BUUCTF ciscn_2019_s_3 保护只开了nx 1 signed __int64 vuln() 2 { 3 signed __int64 v0; // r ...
- 前后端java+vue 实现rsa 加解密与摘要签名算法
RSA 加密.解密.签名.验签.摘要,前后端java+vue联调测试通过 直接上代码 // 注意:加密密文与签名都是唯一的,不会变化.// 注意:vue 端密钥都要带pem格式.java 不要带pem ...
- Mybatis的联合查询
数据库表结构 department employee 要求一 现在的要求是输入 id 把 employee 表的对应员工数据查询出来,并且查询出该员工的所处部门信息 JavaBean public c ...
- versions-maven-plugin插件批量修改版本号
1.简介 versions-maven-plugin插件可以管理项目版本, 特别是当Maven工程项目中有大量子模块时, 可以批量修改pom版本号, 插件会把父模块更新到指定版本号, 然后更新子模块版 ...
- 深入 Laravel 内核之工厂模式
英雄与行为,依赖的诞生 首先定义一个英雄,英雄具有一些行为: class Hero { protected $behavior = []; public function show() { var_d ...
- vuex从后台数据后页面已完成渲染无法显示数据的解决办法
一.在store中state定义一个变量 来控制是否显示 二.在完成数据获取后把isShow设为true 三.把state状态映射到页面的computed中 四.在模板中使用v-if来判断是否显示 来 ...
- antd中的form表单 initialValue导致数据不更新问题
初步理解 : initialValue就是所谓的defaultValue,只会在第一次赋值的时候改变,却又有一些不同,因为 initialValue又会因其他改动而改变. 然而当获取的数据重新上来要渲 ...