网站链接
aHR0cDovL2N0YnBzcC5jb20vIy8=
(base64解密后可见)
正文
网站搜索内容是后台加载的,且响应的内容是加密后的
然后大概看一下堆栈,除了vue,bs等资源的js,这个文件还是蛮可疑的
进去后,也没多少行代码,而且,看头部信息,加密的文件引用和加密方式一目了然
既然是des,那肯定还是有公钥的,在这个utils.js寻找下看有没有公钥,果然一目了然,甚至连注释都有,挺良心的啊,嗯
这就简单多了,直接吧原文js复制到本地,然后npm install crypto-js,最后再稍微改一下,就OK了,直接放代码吧
var CryptoJS = require("crypto-js");CryptoJS.mode.ECB = (function() {var ECB = CryptoJS.lib.BlockCipherMode.extend();ECB.Encryptor = ECB.extend({processBlock: function(words, offset) {this._cipher.encryptBlock(words, offset);},});ECB.Decryptor = ECB.extend({processBlock: function(words, offset) {this._cipher.decryptBlock(words, offset);},});return ECB;
})();
//DES 加密
function encryptByDES(message) {var keyHex = CryptoJS.enc.Utf8.parse("ctpstp@custominfo!@#qweASD");var encrypted = CryptoJS.DES.encrypt(message, keyHex, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7,});return encrypted.toString();
}
//DES 解密
function decryptByDES(ciphertext) {var keyHex = CryptoJS.enc.Utf8.parse("ctpstp@custominfo!@#qweASD");// direct decrypt ciphertextvar decrypted = CryptoJS.DES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(ciphertext),},keyHex,{mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7,});return decrypted.toString(CryptoJS.enc.Utf8);
}console.log(decryptByDES("接口返回的密文"))
最后,如果没问题,就能看到最后解密后的结果了,如图
小结
总体难度还是挺入门级别的,适合新手。这么良心的网站不多啦,且行且珍惜