使用 base64 的反向字符串混淆

reverse string obfuscation that uses base64

我在下面 javascript 找到了将字符串转换为混淆的 base64 字符串的代码。

但是如何转换回来呢?

` 

function strobuscate(a) {
      return (a.split('').map(function(c, i) {
        return String.fromCharCode(c.charCodeAt(0) + i % 80);
      }).join('');
    }

`

您必须反转每个操作并反转操作的顺序。我会给你每个操作的细目,并留给你实际进行反转:

准备:

  • t = parseInt((+new Date()).toString().substr(11)):它获取当前 UTC 时间戳的最后两位数,也就是第 100 和第 1000 秒。 || 1 仅用于错误处理,以防日期未给出有用的结果。
  • y = ('0' + t.toString(16)).substr(-2):将之前的t转换为16进制。0前缀和-2子串再次只是corner case错误处理

混淆:

  • a.split('').map(function(e, i) { return String.fromCharCode(e.charCodeAt(0) + i % t); }).join(''):迭代输入字符串的每个字符并应用内部函数:
    • 获取字符代码并添加索引模 t 并从该字符代码中获取字符串
  • 将 char 转换后的字符串传递给 obbtoa
    • btoa 字符串
    • 替换不同的特殊字符
  • y 被添加到结果字符串前面,因此解码可以知道 ty

要了解反转:

  • 取前两个字符得到y,将我们用来计算y的操作从t反转得到"our" t
  • 反转替换,反转btoa
  • 通过基本上执行 - 而不是 +
  • 来反转 char 转换