反向设计字符串屏蔽/混淆功能

时间:2017-07-02 08:43:49

标签: encryption reverse-engineering

我想取消屏蔽或取消混淆包含某些字符的base64编码字符串。

例如,我知道VovL5SaV_iSBx6oAFGypsTCO匹配00000000。有没有办法,知道更多的数据(输入和输出),找出混淆字符串的算法?我找不到任何东西。

一些例子:

  • 如果f(A)更长,则A的结果会有所不同f(A)会更长,如果A更短f(A)则更短。
  • 如果我们的A和B有类似的结尾(例如aaaaa@gmail.com和bbbbb@gmail.com),那么f(A)和f(B)也会有相同的结尾。

3 个答案:

答案 0 :(得分:2)

根据您提到的内容,似乎加密使用分组密码: 关于你阻塞密码的一个nive属性是块的加密并不依赖于之前的一个,这不是真的,(并且非常糟糕的做法=对攻击者非常好),其中一个块这样做的密码是: ECB:https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Block_Chaining_.28CBC.29,因为您可以看到每个加密使用相同的密钥,并且分组密码可以等同于允许猜测解密任何内容的XOR。检查尝试f(00000000000000)长度是否超过一个块并查看模式是否重复自我。 如果不是这种情况,您可能会使用CTR之类的内容:https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Counter_.28CTR.29这里使用"密钥(i)" = blockcipher(密钥,nonce(i))用于加密每个块使用异或,如果你设法再次计算f(000000000000)并找到键(1),键(2)......你可以使用它们来解密你想要的任何东西。如果你能为我提供用于混淆的工具,我可以解密你想要的东西

答案 1 :(得分:2)

鉴于你所说的和发表的评论,我会说是的,知道更多的数据对[obfuscated/cleartext]可以帮助你理解基础算法。

您必须分析各种属性,例如字符串长度和字符冗余,字节值移位和变化小变化(例如:将000000更改为000001)另外,控制是否混淆的字符串是可预测的或可重复的。

最后,试着看看你是否可以伪造自己的混淆文本并查看结果。这可以通过模糊测试来实现,并且可以帮助您以更积极的方式预测算法。

根据你的说法,我会说这不是数据的安全块加密,而是替代。它可能是字节级的ROT13或XOR,都有一些填充(元数据?)。

请注意,_似乎充当了分隔符:无法解码字符串,但_周围的两个部分都可以。

答案 2 :(得分:-1)

我想帮助你,但在United States Digital Millennium copyright act section 1201下这是非法的。也许在一个拥有更多自由的国家里,某个人会有更好的回答。

1201. (1) A. No person shall circumvent a technological measure
that effectively controls access to a work protected under this title.