使用 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
被添加到结果字符串前面,因此解码可以知道 t
和 y
。
要了解反转:
- 取前两个字符得到
y
,将我们用来计算y
的操作从t
反转得到"our" t
- 反转替换,反转
btoa
- 通过基本上执行
-
而不是 +
来反转 char 转换
我在下面 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
被添加到结果字符串前面,因此解码可以知道t
和y
。
要了解反转:
- 取前两个字符得到
y
,将我们用来计算y
的操作从t
反转得到"our"t
- 反转替换,反转
btoa
- 通过基本上执行
-
而不是+
来反转 char 转换