2020 | 中国科学技术大学第七届信息安全大赛 | General
自复读的复读机
题目¶
能够复读其他程序输出的程序只是普通的复读机。
顶尖的复读机还应该能复读出自己的源代码。
什么是国际复读机啊(战术后仰)
你现在需要编写两个只有一行 Python 代码的顶尖复读机:
- 其中一个要输出代码本身的逆序(即所有字符从后向前依次输出)
- 另一个是输出代码本身的 sha256 哈希值,十六进制小写
Quine¶
自产生程序,指的是无输入且输出结果为程序自身源码的程序
原理¶
- 程序包含两个部分:用于执行输出的代码 A 和表示代码文本的数据 B
- 代码 A 打印输出数据 B,数据 B 中也包含代码 A
Quine in Python¶
repr()
:返回描述对象的字符串。在格式化字符串中,转换说明符%r
代表repr()
- 最短的 Python 自产生程序(未考虑回车)
参考资料¶
- 自产生程序 - 维基百科,自由的百科全书
- How to write your first Quine program | by David Bertoldi | Towards Data Science
输出代码本身的逆序¶
注意要考虑回车
输出代码本身的 SHA256 哈希值¶
字符串s
的内容参考执行输出的代码
最后更新:
2020年11月8日 23:02:53
Contributors: