首页 > 解决方案 > 逆向工程 python 代码以找到它的输入

问题描述

我有一个产生一些输出的python代码。

e = [97, 71, 86, 115, 98, 71, 56, 61]
i=0
z=[]
while i < len(e):
    z += [e[i] ^ e[((i+1) % len(e))]]
    i = i+1
print(z)

z在计算来自 的值后打印一个列表e。现在假设我知道 list 的值z但不知道e。我将如何找到 list 的元素e

标签: pythonxor

解决方案


转换不是单射的。这意味着不止一个输入列表将获得相同的输出列表。例如,对于给定列表e和任何值 b,[i ^ b for i in e]将给出相同的输出列表。

换句话说,假设列表只包含字节值,对于给定的结果,您有 256 个可能的输入。这是因为一旦你知道了第一个元素,你就可以获得所有其他元素。

当然,如果列表可以包含 16 位值,您将获得 65636 种可能性,依此类推……


推荐阅读