aspx网站模板,平面网页设计,wordpress新增标题,怎么仿网站链接文章目录 一、抓包分析二、加密分析一、重写加密 一、抓包分析 分析站点#xff1a; aHR0cDovL2VpcC5jaGFuZmluZS5jb20v 首先我们提交一下登陆信息#xff1a; 搜索j_password查看加密函数: 把上图搜索到的encryptPassword函数拿出来分析一下#xff1a;
function encryptP… 文章目录 一、抓包分析二、加密分析一、重写加密 一、抓包分析 分析站点 aHR0cDovL2VpcC5jaGFuZmluZS5jb20v 首先我们提交一下登陆信息 搜索j_password查看加密函数: 把上图搜索到的encryptPassword函数拿出来分析一下
function encryptPassword(){ document.forms[0].j_password.value desEncrypt(document.forms[0].j_password.value);
}根据desEncrypt函数名推测是DES的对称加密方式desEncrypt函数参数是用户填写的,加密函数只需要一个参数
二、加密分析 我们根据断点提示进入desEncrypt函数 代码如下
function desEncrypt(value, xForm, type) {if (_0(xForm)) {return value} else {var keyObj {};if (type null || aes type.toLowerCase()) {keyObj SECURITYKEY.get();value CryptoJS.AES.encrypt(value, CryptoJS.enc.Utf8.parse(keyObj.key), {iv: CryptoJS.enc.Utf8.parse(keyObj.iv)}).toString()} else {keyObj SECURITYKEY.get(des);value CryptoJS.DES.encrypt(value, CryptoJS.enc.Hex.parse(keyObj.key), {iv: CryptoJS.enc.Hex.parse(keyObj.iv)})}return keyObj.security value}
}一看确定是DES加密方式通过分析上面的代码可知在里面只使用了第一个参数即valuexForm和type都没有使用根据上面代码逻辑分析只需要把上面的代码进行改写成需要的即可
虽然我们只需要传一个密码明文但是在上面加密函数里面还需要keyObj.key和keyObj.iv两个参数而这两个参数值皆来源于keyObj即SECURITYKEY.get()
在上面代码的上文中找SECURITYKEY.get()相关的代码如下所示
_2: function() {$.ajax({async: false,dataType: script,url: Com_Parameter.ResPath js/session.jsp?_ new Date().getTime()});var str ;if (window.getSessionId) {str getSessionId()}return str},supportEncodings: function() {return [aes, des]},get: function(encodeType) {var str SECURITYKEY._2();if (encodeType null || encodeType aes) {if (str.length 32) {str abcdefghijklmnopqrstuvwxyz1234567890}str str.toUpperCase();var key {};key.key str.substring(0, 16);key.iv str.substring(16, 32);key.security \u4435\u5320\u4d35} else {if (str.length 16) {str abcdefghijklmnopqrstuvwxyz}str str.toUpperCase();var key {};key.key SECURITYKEY.toHexString(str.substring(0, 8));key.iv SECURITYKEY.toHexString(str.substring(8, 16));key.security \u4445\u5320\u4d45}return key},通过上面的代码可知SECURITYKEY.get()返回的是一个key对象而key这个对应保存了keyiv和security这三项就是加密所需要用到的
keyiv和security的值通过下面的代码可以确定
var key {};key.key str.substring(0, 16);key.iv str.substring(16, 32);key.security \u4435\u5320\u4d35而str字符串则是由SECURITYKEY._2()生成的。SECURITYKEY._2()对应的代码是if (window.getSessionId) {str getSessionId()}也就是说str是它的SessionId如下图所示 这个网站用的是DES对称加密方式加密时用到两个参数key和iv以及把加密后的字符串与security拼接成最终加密字符串而这三个相关的参数是把该网站的SessionId进行处理得到的。所以最终要实现加密只需要通过python的requests打开登录页面获取SessionId值就行
一、重写加密 改写加密函数代码
function getPwd(value)
{var str 46D6F0AC53B420C83D055ED3486F601F;var key str.substring(0, 16);var iv str.substring(16, 32);var security \u4435\u5320\u4d35if (str.length lt; 32) {str abcdefghijklmnopqrstuvwxyz1234567890}value CryptoJS.AES.encrypt(value, CryptoJS.enc.Utf8.parse(key), {iv: CryptoJS.enc.Utf8.parse(iv)}).toString()return security value
}也可以把整个文件代码复制过来然后调用里面的加密函数。这样更省事 如下扣取加密代码 把文件aes.js整个代码复制过来放到getPwd(value)函数上面进行调用 好了到这里又到了跟大家说再见的时候了。创作不易帮忙点个赞再走吧。你的支持是我创作的动力希望能带给大家更多优质的文章