【问题标题】:How can I reverse engineer the encode method used here?如何对此处使用的编码方法进行反向工程?
【发布时间】:2024-01-21 11:43:01
【问题描述】:

我有一个字符串:

RP581147238IN 被编码为A3294Fc0Mb0V1Tb4aBK8rw==

还有另一个字符串:

RP581147239IN 被编码为A3294Fc0Mb1BPqxRDrRXjQ==

但是花了一天的时间,我还是想不通编码过程是什么。

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

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

base 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 中提供的英勇回答。

【问题讨论】:

  • @Nirlzr,我正在向你寻求帮助
  • 不幸的是,我认为我不能在这里提供帮助。除非您愿意做更多的工作,否则您需要对生成这些输出的代码进行逆向工程以弄清楚它的作用。

标签: hash encoding base64 reverse-engineering decoding


【解决方案1】:

字符串似乎是 Base64 编码的,而底层解码数据似乎是加密的。加密后的数据不能直接表示为字符串,需要字符串时一般采用Base64编码加密数据。

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

注意:一般来说,压缩这样短的项目是没有效率的。

【讨论】:

    【解决方案2】:

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

    RP581147238IN A3294Fc0Mb0V1Tb4aBK8rw==
    RP581147239IN A3294Fc0Mb1BPqxRDrRXjQ==
    

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

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

    编码后的数据在末尾有与 base64 相似的填充,但绝对不是 base64。可能用一些类似 SHA 的算法加密。根据您提供的数据,我想说不可能对编码过程进行逆向工程。可能更多的数据也无济于事。

    【讨论】:

      最近更新 更多