该代码片段展示了将一个未知的秘密信息 flag 通过 Python 代码进行 Base64 编码和不同进制转换,最终得到四个秘密信息 secret1secret2secret3secret4

  • secret1 是一个整数,表示将 flag 的前一个四分之一(即 flag[:L])转换为长整数格式的结果。
  • secret2 是一个字符串,表示将 flag 的第二个四分之一(即 flag[L:2*L])转换为十六进制格式的结果。
  • secret3 是一个字符串,表示将 flag 的第三个四分之一(即 flag[2*L:3*L])转换为二进制格式的结果。
  • secret4 是一个字节表示,表示将 flag 的最后一个四分之一(即 flag[3*L:])进行 Base64 编码的结果。
import base64
from secret import flag  ## secret is a local file, flag is unknown to you. Try to find it.


assert type(flag) == str

flag = flag.encode()
length = len(flag)
assert length % 4 == 0
L = length // 4

secret1 = bytes_to_long(flag[:L])
secret2 = flag[L:2*L].hex()
secret3 = bin(int(flag[2*L:3*L].hex(), 16))
secret4 = base64.b64encode(flag[3*L:])

print(f"{secret1 = }")
print(f"{secret2 = }")
print(f"{secret3 = }")
print(f"{secret4 = }")


'''
secret1 = 30772543014919602267414633191
secret2 = 'bc96e7a081e698afe5ada620'
secret3 = '0b10000110111001001111001011100000111010001101111001000001110011110011010100001001110011110101100'
secret4 = b'rOS4gOatpeOAgiF9'
'''

你需要根据提供的 secret1secret2secret3secret4 的值,逆向推导出原始的 flag 信息。这需要你对 Python 中的 Base64 编码、长整数、十六进制和二进制转换有一定的了解,并能够将这些转换进行逆向操作。

提示:

  • bytes_to_long() 函数可以将字节数组转换为长整数。
  • 可以使用 int() 函数将十六进制字符串转换为整数,再使用 bin() 函数将其转换为二进制字符串。
  • 可以使用 base64.b64decode() 函数对 Base64 编码后的字节数组进行解码。

如果你能成功地解密出 flag 信息,那么恭喜你完成了这个挑战!

Python Base64 编码解密挑战:还原秘密信息

原文地址: http://www.cveoy.top/t/topic/Viz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录