iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >responsebody加密如何破解方法详解
  • 123
分享到

responsebody加密如何破解方法详解

responsebody加密破解responsebody 2023-01-11 12:01:11 123人浏览 独家记忆
摘要

目录正文取密钥解密如何在控制台安装 npm 包?加密响应体有必要?最后正文 最近听了一个 WEB 安全的分享,其中提到了响应加密,我去看了下是怎么实现的,于是就有了这篇文章。 见过

正文

最近听了一个 WEB 安全的分享,其中提到了响应加密,我去看了下是怎么实现的,于是就有了这篇文章。

见过账号密码加密,没见过响应体加密吧? 打开控制台的 response,吓了一跳:

截屏2023-01-06 下午2.46.41.png

咦,响应不是 JSON,这还是第一次见。先别着急,既然只能看见字符串,说明是对整个响应体加密的,那么解密一定是在前端。 哈哈,只要是前端解密,作为一个老前端,还能难得倒我?
看我怎么取密钥

取密钥

既然是响应体统一的加密,那解密函数大概率在响应拦截器里。

添加 fetch breakpoints
devtools -> sources -> XHR/fetch Breakpoints -> +
对指定的 url 添加断点

一路 debug 发现密文是在 xhr.onReadyStateChange 函数里解密的。这里找到了加密方法是对称加密 AES192 以及对称加密密钥 key_string:

!(function (t) {
  var e = c.createDecipher("aes192", "key_string"),
    a = e.update(t.data, "hex", "utf8");
  (a += e.final("utf8")), (a = jsON.parse(a)), (t.data = a);
})(t);

yes,是不是很容易就破解啦?

解密

本地模拟解密 根据上一个步骤的加密方法和密钥,启动一个 node 服务,来模拟客户端和服务端,让我们来看看是否解密正常,以及 NetWork 中的展示是否一致

初始化一个 egg 工程,简单的改造一下。

$ mkdir egg-example && cd egg-example
$ npm init egg --type=simple
$ npm i
$ npm run dev
$ open Http://localhost:7001

添加两个 controller:

加密接口

// http://127.0.0.1:7001/encode
// 加密
const encrypt = require("./../../encrypt");
const { Controller } = require("egg");
class HomeController extends Controller {
  async index() {
    const { ctx } = this;
    ctx.body = encrypt.aes192_encode(ctx.query.data);
  }
}
module.exports = HomeController;

解密接口

// http://127.0.0.1:7001/decode
// 解密
const encrypt = require("./../../encrypt");
const { Controller } = require("egg");
class HomeController extends Controller {
  async index() {
    const { ctx } = this;
    ctx.body = encrypt.aes192_decode(ctx.query.data);
  }
}
module.exports = HomeController;

添加加解密方法:

const crypto = require("crypto");
function aes192_encode(text, key) {
  const cipher = crypto.createCipher("aes192", key);
  let crypted = cipher.update(text + "", "utf8", "hex");
  crypted += cipher.final("hex"); // 加密之后的值
  return crypted;
}
function aes192_decode(message, key) {
  const decipher = crypto.createDecipher("aes192", key);
  let dec = decipher.update(message, "hex", "utf8");
  dec += decipher.final("utf8"); // 解密之后的值
  return dec;
}
module.exports = { aes192_encode, aes192_decode };

修改 router.js

"use strict";

module.exports = (app) => {
  const { router, controller } = app;
  router.get("/", controller.home.index);
  router.get("/encode", controller.encode.index);
  router.get("/decode", controller.decode.index);
};

在浏览器访问 http://127.0.0.1:7001/encode?data=abc控制台 response 返回 62ff5059fd64c139378f1a370a09ad02

在浏览器访问 http://127.0.0.1:7001/decode?data=62ff5059fd64c139378f1a370a09ad02 控制台 response 返回 abc

把我们目标网站的响应体拿来试试,结果也是直接就解出来啦!

考虑到启动一个 node 服务还是有点麻烦,我们直接在控制台安装对应的 npm 包,直接在控制台解密。

如何在控制台安装 npm 包?

安装 chrome 插件 console importor 安装好之后 在控制台输入:

$i("package name");

这里我们安装 crypto 试试

$i("crypto")
importer.js:2 [$i]: Searching for crypto, please be patient...
importer.js:2 [$i]: crypto not found, import crypto-js instead.
importer.js:2 [$i]: crypto-js is loading, please be patient...
importer.js:2 [$i]: crypto-js(https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js) is loaded.
importer.js:2 [$i]: The new global variables are as follows: CryptoJS . Maybe you can use them.

控制台安装 crypto 找不到, 自动安装了 cryptojs, 道理是一样的

// Encrypt
var ciphertext = CryptoJS.AES.encrypt("data", "key_string").toString();
// Decrypt
var bytes = CryptoJS.AES.decrypt(ciphertext, "key_string");
var originalText = bytes.toString(CryptoJS.enc.Utf8);

到这里我们就可以直接在控制台解密响应体啦,如果大家感兴趣的话,可以自己写一个响应拦截器插件,可以对指定接口解密,这样的话,线上环境也能够排查 response 啦!

加密响应体有必要?

现在回到文章开头,想想加密响应体有没有价值?
能拿到响应体肯定是拥有登录令牌的,既然都能正常访问页面了,那么对响应加密其实意义不太大,反而增加了开发人员排查问题的成本。如果是为了防止抓包信息泄露,使用 https 后抓包拿到的数据已经是加密过且不能破解的。(可能想得不全面,欢迎大家讨论)

最后

密钥只要是放在前端,无论怎么做代码混淆,一定是有办法解密的,差别在于时间长短。

以上就是response body加密如何破解方法详解的详细内容,更多关于response body加密破解的资料请关注编程网其它相关文章!

--结束END--

本文标题: responsebody加密如何破解方法详解

本文链接: https://www.lsjlt.com/news/177376.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • responsebody加密如何破解方法详解
    目录正文取密钥解密如何在控制台安装 npm 包?加密响应体有必要?最后正文 最近听了一个 web 安全的分享,其中提到了响应加密,我去看了下是怎么实现的,于是就有了这篇文章。 见过...
    99+
    2023-01-11
    response body加密破解 response body
  • 详解ASP.NET中加密和解密的方法
    散列运算 mscorlib.dll下的System.Security.Cryptography下: 抽象类HashAlgorithm抽象类MD5MD5CryptoServicePro...
    99+
    2022-11-13
    ASP.NET 加密和解密
  • Mysql的密码破解方法
    MySQL密码破解 1.破解密码一: MySQL安装完成之后,系统会分配一个随机的密码 启动mysql然后查找mysql初始密码;这种方法设定的规则和规定都无法保存到配置文件; #启动mysql[ro...
    99+
    2023-09-29
    mysql 数据库
  • Python如何破解加密压缩包
    本篇内容介绍了“Python如何破解加密压缩包”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、准备工作我们先打开一个加密的压缩包尝试原始方...
    99+
    2023-06-25
  • Python轻松破解加密压缩包教程详解
    目录一、准备工作二、开始操作相信大家都遇到过这种情况,下载文件的时候遇到压缩包又没有密码,或者说自己设置的加密密码,但是忘记了,就很难受~ 但是~ 在Python程序员面前,这都是...
    99+
    2022-11-12
  • Linux破解root密码的方法
    这篇文章主要介绍“Linux破解root密码的方法”,在日常操作中,相信很多人在Linux破解root密码的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux破解root密码的方法”的疑惑有所帮助!...
    99+
    2023-06-13
  • Python实现栅栏密码的加密解密方法详解
    目录1.栅栏密码介绍2.栅栏密码加密3.栅栏密码解密(爆破)4.W型栅栏密码加密1.栅栏密码介绍 所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无...
    99+
    2023-01-16
    Python栅栏密码加密 Python栅栏密码解密
  • Vista登陆密码的破解方法
    Windows Vista系统管理员如果忘记登录密码,难道只能重装吗当然不是,下面介绍两种破解方法希望对大家有所帮助。     请先将Vista安装盘放入光驱,重新启动计算机,在CMOS中进...
    99+
    2023-05-23
    方法 破解 Vista
  • 破解win7登陆密码的方法
    第一步:  由于cmd在系统目录,文件更改首先要获得文件所有权。打开“D:\Windows\system32”(假设Windows 7安装在D盘),右击“arrator.exe&rdq...
    99+
    2023-05-25
    破解win7 登陆密码 win7 方法
  • ​​​​​​​如何利用python破解zip加密文件
    目录前言:一、破解zip加密文件的思路二、实例代码演示0、zip的压缩方式1、解压zip文件2、实现密码字符的全排列三、密码是几位未知,也可以破解密码总结前言: 日常工作中,会遇到一...
    99+
    2022-11-11
  • 如何理解Ruby加密方法
    如何理解Ruby加密方法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Ruby语言虽然是一个结构比较简单的编程语言,但是其中也有程序加密的功能。在这里我们就以几...
    99+
    2023-06-17
  • 破解云服务器密码的方法
    破解云服务器密码是一个很有风险的行为,因为黑客可以通过访问云服务器的配置信息、密码设置或使用漏洞等手段来窃取其敏感信息。下面是一些可以通过以下方法来破解云服务器密码的方法: 访问云服务器的配置信息:如果云服务器上有一个管理员帐户,可以使...
    99+
    2023-10-27
    密码 服务器 方法
  • 详解C#如何加密解密RAR文件
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-31
    C#加密解密RAR文件 C#加密RAR C#解密RAR
  • win8系统如何破解rar加密文件?win8系统下载rar格式的压缩软件有密码的三种破解方法
      Win8系统从网上下载程序软件,发现是rar格式的压缩软件,并且设置了密码,根本打不开,怎么办呢?其实这类压缩软件中自带了密码,只是很多用户不知道而已,那么有什么办法能够破解密码呢?根据这个问题,小编研...
    99+
    2022-06-04
    系统 三种 压缩软件
  • 破解云服务器密码的方法有
    暴力破解法:这种方法需要尝试所有可能的密码组合,并使用字典表来检索每一个可能的字符。这种方法通常比较耗时,但是如果成功,破解密码的成功率也相对较高。 弱密码破解法:这种方法使用简单的密码,例如与用户名相同的密码和数字字符。这种方法的安全性...
    99+
    2023-10-27
    密码 服务器 方法
  • Flutter RSA加密解密的方法
    本文小编为大家详细介绍“Flutter RSA加密解密的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“Flutter RSA加密解密的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。数...
    99+
    2023-06-30
  • AspJpeg V1.5.0 破解版使用方法284567(思路详解)
    AspJpeg V1.5.0 aspjpeg组件使用方法 aspjpeg是一款非常强大的图片处理组件,纯英文版本。不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文...
    99+
    2023-05-20
    AspJpeg 
  • AspJpeg V1.5.0 破解版使用方法284607(思路详解)
    AspJpeg V1.5.0 aspjpeg组件使用方法 aspjpeg是一款非常强大的图片处理组件,纯英文版本。不过早已经有免费版和破解版,但是对其进行详细与深入介绍的文...
    99+
    2023-05-20
    AspJpeg 
  • SpringSecurity如何实现升级密码加密方式详解
    目录本章内容密码加密方式怎么升级升级方案源码实战第一种方式: Spring Bean他是怎么自动升级到BCrypt加密方式的第二种方式: 多继承接口方式第三种方式: HttpSecu...
    99+
    2023-01-04
    Spring Security升级密码加密 Spring Security密码加密
  • 如何解析Linux密码破解问题
    这篇文章将为大家详细讲解有关如何解析Linux密码破解问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。大家都说Linux系统安全性比较高但是并不是说无懈可击,Linux密码破解是一种特殊的...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作