目标:作者在进行模拟登陆时候发现原来简单的密码返回值是却看不懂了,考虑到这种情况应该是进行了加密,这时候如何破解加密的代码尤为重要。
作者提交的密码是:
123456qq.com //仅仅是举例
104|122|51|49|53|56|49|51,//输出加密过后的密码
今天笔者分享是一个简单的登陆时候密码的加密,这里直接分享加密的js
代码以及破解过程,如果你不会寻找js
代码,那么你就去看我之前写的如何寻找加密函数,哈哈哈哈,上代码:
if($("#ispassChang").val() != "0"){
pass=encodeSTR($("#password").val());
}
首先看到这个代码的时候我们就会想到首先是找到encodeSTR
这个函数,寻找过程就不分享了直接上代码:
function encodeSTR(str) { //str显然是密码传输过来
var t = ""; // 声明一个空字符串
for (var x = 0; x < str.length; x++) { // 声明一个x=0, 如果 x< 密码的长度,执行下变的过程,x并加1
a = str.charCodeAt(x); // 对循环的密码进行获取ascii值
if (x != 0) {
t += '|' // 如果变量x !=0 变量t+='|'
}
t += new Number(a).toString(10) // 变量t+=str(a)
}
return t // 最后返还的值便是加密过后的密码
}
看到没?上边的加密是如此的简单,只需要分析一下加密逻辑,通过python
来实现即可。直接上代码
entry_password = ''
pass_word = '自己密码'
i = 0
for i in range(len(pass_word)):
s = ord(pass_word[i])
if i != 0:
entry_password += '|'
entry_password += str(s)
i += 1
print entry_password // 即为密码
好了分享结束了,是不是特别简单?哈哈哈 当然你也可以用笔者之前所写的 execjs
进行破解。可以看之前笔者所写的过程。
哈哈哈,分享一下吧:
# coding=utf-8
import requests
import execjs
infos = """
function encodeSTR(str) {
var t = "";
for (var x = 0; x < str.length; x++) {
a = str.charCodeAt(x);
if (x != 0) {
t += '|'
}
t += new Number(a).toString(10)
}
return t
}
"""
if __name__ == "__main__":
import execjs
r = execjs.compile(infos)
result = r.call('encodeSTR','123456').lower() // encodeSTR加密的函数,‘123456’密码
print result
分享结束咯,如有问题欢迎纠正。