从如下代码中编写python脚本找出flagfrom Crypto.Cipher import AES import base64 password = b'ragfwQEFAAAAAAAA' iv = b'1234567812345678' text = input('> ').encode() aes = AES.new(password, AES.MODE_CBC, iv) en_text = aes.encrypt(text) if base64.b64encode(en_text) != b'HHAOD2xCZ0XIJTrOZB4t83wnFsi824jtpiRXI1usbkQ=': print('Flag is not correct!') else: print('you get it!')
时间: 2023-12-30 09:02:24 浏览: 118
根据代码的逻辑,我们需要找到一个字符串,经过 AES 加密后,再进行 Base64 编码,得到的结果应该是 `HHAOD2xCZ0XIJTrOZB4t83wnFsi824jtpiRXI1usbkQ=`。因此,我们可以从这个字符串入手,反向进行解密和解码操作,找到原始字符串即可。
具体的 Python 脚本如下所示:
```python
from Crypto.Cipher import AES
import base64
password = b'ragfwQEFAAAAAAAA'
iv = b'1234567812345678'
target = base64.b64decode(b'HHAOD2xCZ0XIJTrOZB4t83wnFsi824jtpiRXI1usbkQ=')
for i in range(32, 127):
for j in range(32, 127):
for k in range(32, 127):
text = bytes([i, j, k]) + b'\x00' * 13
aes = AES.new(password, AES.MODE_CBC, iv)
en_text = aes.encrypt(text)
if base64.b64encode(en_text) == target:
print('Flag is:', text.decode())
exit()
```
这个脚本的原理是,枚举所有可能的字符串,将其填充到 16 字节的长度,然后进行加密和编码操作,与目标字符串进行比较。如果找到了相同的字符串,则说明找到了 flag。
注意,这个脚本的运行时间可能很长,需要耐心等待。如果找到了 flag,程序会输出结果并退出。
阅读全文