我有一个字符串:
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中提供的英雄答案。
答案 0 :(得分:0)
如果您并排放置数据字符串:
RP581147238IN A3294Fc0Mb0V1Tb4aBK8rw==
RP581147239IN A3294Fc0Mb1BPqxRDrRXjQ==
您可以看到源字符串只有字符差异,但编码版本包含12个不同的字符:
----------8-- ----------0V1Tb4aBK8rw--
----------9-- ----------1BPqxRDrRXjQ--
编码数据的末尾与base64类似,但绝对不是base64。可能使用类似SHA的算法加密。根据您提供的数据,我会说无法对编码过程进行反向工程。可能更多的数据也无济于事。
答案 1 :(得分:0)
字符串似乎是Base64编码的,底层解码数据似乎是加密的。加密数据不能直接表示为字符串,当需要字符串时,Base64编码加密数据是很常见的。
如果是这种情况,你需要解密解码数据和忽略器来完成你需要加密密钥。
注意:一般来说,压缩这些短项目的效率不高。