一、通过抓包分析要找的参数password
二、搜索“password:”关键字,找到encode.js关键点
三、进去查看JS代码,通过iv,key,aes等关键字发现这是aes加密
import CryptoJS from 'crypto-js'
const key = CryptoJS
.enc
.Utf8
.parse("20171109124536982017110912453698");
const iv = CryptoJS
.enc
.Utf8
.parse('2017110912453698'); //十六位十六进制数作为密钥偏移量
const encrypt = (word: string) => {
let srcs = CryptoJS
.enc
.Utf8
.parse(word);
let encrypted = CryptoJS
.AES
.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted
.ciphertext
.toString()
.toUpperCase();
}
export const passwordEncrypt = (password: string) => {
if (typeof password === 'undefined') return undefined
if (!password) return ''
return encrypt(password)
}
四、编写代码验证
1、通过JS实现加密
var CryptoJS=module.exports;
var data=CryptoJS.enc.Utf8.parse("123456")
var key=CryptoJS.enc.Utf8.parse("20171109124536982017110912453698")
var iv=CryptoJS.enc.Utf8.parse("2017110912453698")
var res=CryptoJS.AES.encrypt(
data,key,{
iv:iv,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
});
//默认是Base64
console.log(res.toString())
//到十六进制
console.log(res.ciphertext.toString().toUpperCase())
2、通过火山中文编程实现
禁止非法,后果自负
欢迎关注公众号:逆向有你
欢迎关注视频号:之乎者也吧
原文始发于微信公众号(web安全工具库):JS逆向 -- AES加密
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论