python - 逆向工程 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
。
解决方案
转换不是单射的。这意味着不止一个输入列表将获得相同的输出列表。例如,对于给定列表e
和任何值 b,[i ^ b for i in e]
将给出相同的输出列表。
换句话说,假设列表只包含字节值,对于给定的结果,您有 256 个可能的输入。这是因为一旦你知道了第一个元素,你就可以获得所有其他元素。
当然,如果列表可以包含 16 位值,您将获得 65636 种可能性,依此类推……
推荐阅读
- rust - 为什么 Rust 文档说数组上的 while 循环比 for 循环慢?
- javascript - 在 React.js 中使用 Promise.all() 和 rxjs 史诗
- css - 在导入的 sass 文件中使用相对路径时,url() 未引用正确的文件
- c++ - 如何使用类型特征正确推断引用的参数
- python - Mongoengine / MongoDB模型过滤基于字典字段中的关键存在
- django - IntegrityError(news_post.hashTag 可能不为 NULL)
- linux - 如何在 puppet 中多次使用声明的类
- java - SQLiteDatabase 是同步的还是异步的?
- javascript - 带默认值的 JavaScript JSON API 解析器?
- c# - 如何连接到数据库、编辑数据并在 WPF 的列表视图中显示它们