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是一个分布式程序,分布在多台机器上运行,事必会涉及到网络编程.那这里如何让网络编程变得简单.透明的呢? 网络编程中,首先我们要 ...
随机推荐
- 1254 - Prison Break
1254 - Prison Break PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Mic ...
- Anti-prime Sequences
Anti-prime Sequences Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 3355 Accepted: 1 ...
- 用C++创建Https客户端,用Mingw编译
- FreeSql.Provider.SqliteCore如何加密
FreeSql.Provider.SqliteCore 是FreeSql基于微软提供的最新的Microsoft.Data.Sqlite.Core驱动的实现. 支持的版本 .NETStandard2.0 ...
- Going Deeper with Convolutions (GoogLeNet)
目录 代码 Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]. computer vision and pattern ...
- Java程序设计基础笔记 • 【第6章 循环结构进阶】
全部章节 >>>> 本章目录 6.1 for循环 6.1.1 for循环的简介 6.1.2 for循环的使用 6.1.3 for循环的表达式 6.1.4 实践练习 6.2 ...
- Centos8 设置中文
1.一般情况 1.1 进入设置选择 Region&Language 1.2 点击 加号 1.3 点击 汉语(中国) 1.4 选择 汉语(智能拼音) 2.特殊情况 有些虚拟机可能没有 汉语(智能 ...
- eDiary电子日记本
1.简介 eDiary是一款小巧的本地电子日记本, 也可以用来管理资料文档, 支持常用的文字编辑排版功能, 也支持插入图片功能. 支持多用户,可以设置登录用户名和密码, 每个用户可拥有多个日记文件, ...
- css 基础 rgba表示法
color:rgba(); //r表示red 红色 //g表示green 绿色 //b表示blue 蓝色 //a 表示透明度 color:rgb(0,0,0,0) //黑色 color:rgb(255 ...
- 初识python之词组截取及翻译
d = {} k = [] v = [] with open('dir','r',encoding='utf-8') as f: for i in f.readlines(): j = i.strip ...