本文以 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调用获取参数值的更多相关文章

  1. RPC调用与GC垃圾回收

    RPC调用 多个服务协同完成一次业务时,由于业务约束(如红包不符合使用条件.账户余额不足等).系统故障(如网络或系统超时或中断.数据库约束不满足等),都可能造成服务处理过程在任何一步无法继续,使数据处 ...

  2. Dubbo系列(三)dubbo的核心技术--RPC调用

    dubbo的核心技术--RPC调用:分为俩部分RPC协议Protocol和方法调用Invoke: 一.RPC协议Protocol(Remote Procedure Call)远程过程调用协议 1.我们 ...

  3. RabbitMQ学习笔记5-简单的RPC调用

    利用空的queue名字("")让rabbitMQ生成一个唯一的队列名称,同时指定队列是:临时的(auto-delete).私有的(exclusive). 在发送的RPC调用消息里设 ...

  4. Hadoop学习记录(3)|HDFS API 操作|RPC调用

    HDFS的API操作 URL方式访问 package hdfs; import java.io.IOException; import java.io.InputStream; import java ...

  5. 使用RPC 调用NameNode中的方法

    用户在Client 端是很难对 NameNode中的信息进行直接访问的, 所以 ,在Hadoop系统中为 Client端 提供了一系列的方法调用,这些方法调用是通过RPC 方法来实现的, 根据RPC ...

  6. 浅谈RPC调用

    RPC英文全称remote procedure call 翻译成中文的意思就是远程过程调用.RPC的出现其实主要是为了解决分布式系统间的通信透明性的问题. 那什么是分布式系统的通信透明性问题?这个问题 ...

  7. Openstack创建虚拟机 Restful api和RPC调用

    Horizon前台界面用于接受用户的输入或动作(action),然后将这些参数构造成RESTful API(https://developer.openstack.org/api-ref/comput ...

  8. pomelo RPC调用时新增字段缺失

    接触pomelo开发一个月,正式开始参与项目开发有10天,遇到很多细节的坑,今天讲讲标题:后端服务器节点之间的rpc调用过程中,返回的数据中新增字段缺失问题. 先讲结果:原因是该rpc调用已经采用了p ...

  9. Hadoop源码学习笔记(4) ——Socket到RPC调用

    Hadoop源码学习笔记(4) ——Socket到RPC调用 Hadoop是一个分布式程序,分布在多台机器上运行,事必会涉及到网络编程.那这里如何让网络编程变得简单.透明的呢? 网络编程中,首先我们要 ...

随机推荐

  1. Codeforces 450D:Jzzhu and Cities(最短路,dijkstra)

    D. Jzzhu and Cities time limit per test: 2 seconds memory limit per test: 256 megabytes input: stand ...

  2. Codeforces 913C:Party Lemonade(贪心)

    C. Party Lemonade A New Year party is not a New Year party without lemonade! As usual, you are expec ...

  3. 关于使用JupyterNotebook运行代码运行到一半会闪退的问题

    前几个星期使用Jupyter远程使用师兄的电脑跑了一段沐老师的代码学习,但是总是跑了一段就闪退,同时因为是远程桌面,远程桌面也被挤掉了. 具体表现就是:运行代码--表现正常,打印记录--远程桌面掉线- ...

  4. svn创建多个版本库

    mkdir /pangbing cd /pangbing/ svnadmin create 1 svnadmin create 2 svnadmin create3 启动时候这样启动 svnserve ...

  5. 可观察对象(Observable)

    最简示例: export class AppComponent { title = 'angular-tour-of-heroes'; // Create an Observable that wil ...

  6. Mysql查询阻塞的sql

    SELECTp2.`HOST` 被阻塞方host,p2.`USER` 被阻塞方用户,r.trx_id 被阻塞方事务id,r.trx_mysql_thread_id 被阻塞方线程号,TIMESTAMPD ...

  7. vue3.0+vue-cli3.0项目搭建

    因为需要兼容其他vue2.0的项目,所以先卸载vue-cli,再全局安装桥接工具 卸载vue-cli2.0 npm uninstall vue-cli -g 安装vue-cli3.0 npm inst ...

  8. android入门--环境搭建

    运行环境 windows 7 下载地址 环境下载 最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是windows7的笔记本,也就只能到Windows中搭建 ...

  9. Kubernetes三大落地姿势,你pick谁?

    Kubernetes是面向企业的开源容器编排工具的事实标准,它提供了应用部署.扩展.容器管理等功能.经过几年的发展,Kubernetes已成为云计算和现代IT基础架构的通用平台,得到广泛应用进入产业落 ...

  10. test_5 排序‘+’、‘-’

    题目是:有一组"+"和"-"符号,要求将"+"排到左边,"-"排到右边,写出具体的实现方法. 方法一: l=['-', ...