程序员的资源宝库

网站首页 > gitee 正文

ctbpsp DES 解密 cap解密

sanyeah 2024-03-29 17:56:37 gitee 9 ℃ 0 评论

地址链接:

分析

对响应的数据分析

全局搜索,调试
  • 使用 decrypt 关键字进行全局搜索定位,断点调试如下

  • 函数解密响应内容

有图可以看出:

  • DES 加密解密
  • e 是 Hexkey,由字符串处理后所得
  • mode是ECB
  • padding是PKCS7
  • ciphertext是原字符串
  • 再看 e, e = w.a.enc.Utf8.parse() 可以看到实现方式如图

  • 然后是一个w.a.enc.Base64.parse,等同于解码: base64.b64decode(string)

  • 因为网站使用的Cryptojs,接下来我们也用nodejs实现一下这段代码。

// npm install crypto-js
var CryptoJS = require("crypto-js");
var C = CryptoJS;
var C_lib = C.lib;
var WordArray = C_lib.WordArray;


function parse1(latin1Str) {
    // Shortcut
    var latin1StrLength = latin1Str.length;
    // Convert
    var words = [];
    for (var i = 0; i < latin1StrLength; i++) {
        words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
    }
    return new WordArray.init(words, latin1StrLength);
}


var t = '要解密的字符串'
var keyHex = parse1(unescape(encodeURIComponent("ctpstp@custominfo!@#qweASD")))
var ciphertext = CryptoJS.enc.Base64.parse(t)

const decryptDES = (ciphertext) => {
  if (ciphertext) {
      let decrypted = CryptoJS.DES.decrypt(ciphertext, keyHex, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    return decrypted.toString(CryptoJS.enc.Utf8);
  } else {
    return '';
  }
};

console.log(decryptDES(t))
结果如图所示

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表