前端md5加密_post登陆分析实例,网站自定义password加密方式的分析

前端加密主流的有这么几种方式:RSA、MD5、自定义加密函数,其中自定义加密函数的可变性更加强,在实际分析中也更加有难度。
今天分析一个自定义加密的网站来说明这一点,网站是空中网,首先填个假信息抓个包看看。

a56feff8db796ce2e738fc69ae79ae40.png


表单数据
j:j
(empty)
type:1
service:https://passport.kongzhong.com/
username:18328491111
password:368c041f87be04f72d3f
vcode:
toSave:0
_:1547992251984
比较意外的是这个网站是以get方式登陆的,也是比较奇特了。看password字段不伦不类的,那自定义加密函数的几率比较大,然后全局收索password
一番查询之后没有明显的加密相关的js,但是发现了一个eval加密的js,那这就很可疑了。

b50369c8cd60cee135e0df4d033660a5.png


eval解密再看这段js函数其中有两处是有价值的
function encrypt ()
this.encrypt(pwd, this.j_data["dc"])
很明显这就是密码加密的方式,果真是自定义的加密方式
var KZLoginHandler = {
······
param += "&password=" + this.encrypt(pwd, this.j_data["dc"]);
······
'encrypt': function(str, pwd) {
if (pwd == null || pwd.length <= 0) {
return null
};
var prand = "";
for (var i = 0; i < pwd.length; i++) {
prand += pwd.charCodeAt(i).toString()
};
var sPos = Math.floor(prand.length / 5);
var mult = parseInt(prand.charAt(sPos) + prand.charAt(sPos * 2) + prand.charAt(sPos * 3) + prand.charAt(sPos * 4) + prand.charAt(sPos * 5));
var incr = Math.ceil(pwd.length / 2);
var modu = Math.pow(2, 31) - 1;
if (mult < 2) {
return null
};
var salt = Math.round(Math.random() * 1000000000) % 100000000;
prand += salt;
while (prand.length > 10) {
var a = prand.substring(0, 1);
var b = prand.substring(10, prand.length);
if (b.length > 10) {
prand = b
} else {
prand = (parseInt(a) + parseInt(b)).toString()
}
};
prand = (mult * prand + incr) % modu;
var enc_chr = "";
var enc_str = "";
for (var i = 0; i < str.length; i++) {
enc_chr = parseInt(str.charCodeAt(i) ^ Math.floor((prand / modu) * 255));
if (enc_chr < 16) {
enc_str += "0" + enc_chr.toString(16)
} else enc_str += enc_chr.toString(16);
prand = (mult * prand + incr) % modu
};
salt = salt.toString(16);
while (salt.length < 8) salt = "0" + salt;
enc_str += salt;
return enc_str
}
};
然后继续看加密的js,encrypt(pwd, this.j_data["dc"]),还需要一个this.j_data["dc"],这个应该是服务器传回的的,类似密钥的东西,然后再看其他几个请求,其中一个请求返回了dc

1b256e63b0e271ef2bb1dae97bfe2f54.png


到此这个网站的密码加密方式我们就很清楚了,在打开网站的时候服务器会返回一串字符串,用于加密,加密的js是通过eval方式处理的。
------------------------------
ID:Python之战
|作|者|公(zhong)号:python之战
专注Python,专注于网络爬虫、RPA的学习-践行-总结
喜欢研究技术瓶颈并分享,欢迎围观,共同学习。
独学而无友,则孤陋而寡闻!
---------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值