混淆和混淆base64字符串

问题描述 投票:0回答:1

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

但是如何将其转换回去?

function obbtoa(text) {
  return btoa(text).replace(/=/gi, '_').replace(/\+/gi, '.').replace(/\//gi, '-');
}

function strobuscate(a) {
  var t = parseInt((+new Date()).toString().substr(11)) || 1;
  var y = ('0' + t.toString(16)).substr(-2);
  return y + obbtoa(a.split('').map(function(e, i) {
    return String.fromCharCode(e.charCodeAt(0) + i % t);
  }).join(''));
}
console.log(strobuscate("123123123123ashdamkfhdksadhfklsadhf"));
//39MTM1NDY4Nzk7Ojw.bYB2c3F.fXl8eYGKeX2CgYeJkYCEiYg_
javascript base64 obfuscation deobfuscation
1个回答
1
投票

您必须反转每个操作并反转操作顺序。我将为您提供每项操作的详细信息,然后交给您进行实际的反转:

准备:

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

迷离:

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

了解逆转:

  • [取前两个字符得到y,将我们用来从y计算t以获得“我们的” t]的运算反过来>
  • 反转替换项,反转btoa
  • 基本上通过执行-而不是+来反转char转换
© www.soinside.com 2019 - 2024. All rights reserved.