如何对此处使用的编码方法进行逆向工程?

时间:2017-04-04 10:27:10

标签: hash encoding base64 reverse-engineering decoding

我有一个字符串:

RP581147238IN被编码为A3294Fc0Mb0V1Tb4aBK8rw==

和另一个字符串:

RP581147239IN被编码为A3294Fc0Mb1BPqxRDrRXjQ==

但是花了一天之后,我仍然无法弄清楚编码过程是什么。

编码的字符串看起来像base64编码。

但是当我解码它时,它看起来像: base64.decodestring(" A3294Fc0Mb0V1Tb4aBK8rw ==&#34) \x03}\xbd\xe0W41\xbdA>\xacQ\x0e\xb4W\x8d

现在,基本64解码的字符串看起来像一个zlib压缩字符串

我试图进一步使用zlib解压缩方法,但没有一种方法有效。

import zlib, base64
rt = 'A3294Fc0Mb1BPqxRDrRXjQ=='

for i in range(-50, 50):
    try:                                      
        print(zlib.decompress(base64.decodestring(rt), i));
        print("{} worked".format(i))
        break
    except:
        pass

但这也没有产生任何结果。

有人可以弄清楚这里使用的编码过程是什么。 @Nirlzr,我看着你在Reverse Engineer HTTP request中提供的英雄答案。

2 个答案:

答案 0 :(得分:0)

如果您并排放置数据字符串:

RP581147238IN A3294Fc0Mb0V1Tb4aBK8rw==
RP581147239IN A3294Fc0Mb1BPqxRDrRXjQ==

您可以看到源字符串只有字符差异,但编码版本包含12个不同的字符:

  ----------8-- ----------0V1Tb4aBK8rw--
  ----------9-- ----------1BPqxRDrRXjQ--

编码数据的末尾与base64类似,但绝对不是base64。可能使用类似SHA的算法加密。根据您提供的数据,我会说无法对编码过程进行反向工程。可能更多的数据也无济于事。

答案 1 :(得分:0)

字符串似乎是Base64编码的,底层解码数据似乎是加密的。加密数据不能直接表示为字符串,当需要字符串时,Base64编码加密数据是很常见的。

如果是这种情况,你需要解密解码数据和忽略器来完成你需要加密密钥。

注意:一般来说,压缩这些短项目的效率不高。