JS逆向笔记

下断点,按F11可进去函数内部,或者点击右上角的下标点进去函数内部
md5加密长度固定32位;

一、单向散列函数 消息摘要算法
加密后的密文定长
明文不一样,散列后结果一定不一样
不可逆
一般用于签名
MD5 32位
SHA1 40位
SHA256 64位
SHA512 218位
HmacMD5、HmacSHA1、HmacSHA256
(注:Hmac配合其他加密算法,传入两值,一加密参数,二公钥)

二、加密
加密和解密的过程是可逆的
对称加密算法
加密/解密使用相同的密钥
DES 数据加密标准 3DES
AES 高级加密标准
AES 共有ECB,CBC,OFE,CTR五种模式

非对称加密算法
RSA
使用公钥加密,使用私钥解密
公钥是公开的,私钥保密
加密处理安全,但是性能极差,单词加密长度有限制。

三、CryptoJS加密库的使用(注意区分大小写)
注:CryptoJS加密的结果为“对象”类型
alert输出时会自动转换为文本

console控制太输出的时候是对象,可+''变成字符串文本,
或者.toString()转换文本

搜索加密参数关键点:
一、搜索指定参数
二、搜索附近参数
三、搜索部分链接
四、搜索某些加密值

1、过掉定时器无限debugger:
1、鼠标移到debugger所在行断点数字处
2、右键点击“Never pause here”

2、AES加密(不属于哈希加密):
1、首先确定mode类型;
2、padding填充格式(注意Pkcs5格式也是属于Pkcs7格式);
3、Key值和iv值的Enc编码类型(注意key值和iv的值会存在函数附近上下方)
例子:CryptoJS加密库的AES加密方式:
var pwd = CryptoJS.enc.Utf8.parse(‘cjs122374’); // 解析明文
var key = CryptoJS.enc.Utf8.parse(‘asdqwwqwdqddq’); // 解析密钥
var iv = CryptoJS.enc.Utf8.parse(‘asdqwwqwdqddq’); // 解析偏移向量
var ciphertext = CryptoJS.AES.encrypt(pwd, key, {
mode: CryptoJS.mode.CBC // 加密模式
padding: CryptoJS.pad.Pkcs7 // 填充方式
iv: iv // 偏移向量
}).toString(); // 加密后的结果是对象,要转换为文本
console.log(ciphertext);

3、HMAC加密:
一般传入两个值,明文以及key值;

4、RSA加密:
公钥:用于加密;私钥:用于解密的,但是一般找不到
一般代码比较长,最好不去扣代码,使用软件生成js脚本代码即可
RSA加密注意点:一般会加密长度很长,以==双等号结尾,类似于base64,会出现两个数据包,一是带有一些key值的json数据,二是登录错误的密码等加密参数数据包。(套路:输入"10001"(加密字数)、‘’(空字符串为解密字数)以及密钥参与加密)

5、搜索加密关键参数出现众多文件或者无文件,则可以搜索url链接的一些特定后缀

6、出现windows未定义的:但是windows参与计算的,不可以直接设置为空,应该windows = this;出现navigator未定义:可以直接设置为空,var navigator = “”。

7、遇到(function(g){})的包裹类型的函数封装,需要在全局构建window = this,然后在函数末尾添加(window)即可。(注:在调试工具中能运行,在创建的js文件中不能运行,此问题还没解决。)

8、遇到特殊字符(例:字体图标显示的小框框)无法编译加载的情况,一、点击utf-8编码,或者使用发条js调试工具将此js文件copy到上方的搜索框,点击读取js代码,点击编码即可。

9、Base64/btoa/atob
alert(btoa(‘122374’));结果弹出:MTIyMzc0,即btoa是base64加密
alert(atob(‘MTIyMzc0’));结果弹出:122374,即btoa是base64解码

10、大文件加密方式:
var hasher = CryptoJS.algo.SHA256.create();
hasher.update(‘222’); # 分次添加加密内容
hasher.reset(); # 将之前添加加密内容重置为0
hasher.update(‘222’);
hasher.update(‘222’);
hasher.update(‘222’);
var hash = hasher.finaline(‘22’);
console.log(hash.toString());

11、不同加密解析方式(返回的是一个数组,可继续使用算法加密返回对象)
var = wordArray = CryptoJS.enc.Utf8.parse(‘cjs’);
// var = wordArray = CryptoJS.enc.Latin1.parse(latin1String);
// var = wordArray = CryptoJS.enc.Hex.parse(hexString);
// var = wordArray = CryptoJS.enc.Base64.parse(base64String);

var res = CryptoJS.SHA256(wordArray ) // 加密返回一个对象
console.log(res.toString()); // 将对象转换为字符串文本

12、DES加密的ECB模式中可以不要iv偏移向量值,反之CBC需要加粗样式

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔戈

创作不易,如有帮助,请鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值