Python Base64 解码错误:'utf-8' codec can't decode byte 0x9c in position 0: invalid start byte
在使用 Python 进行 base64 解码时,你可能会遇到 'utf-8' codec can't decode byte 0x9c in position 0: invalid start byte 错误。这个错误意味着解码后的 flag 含有无法使用 'utf-8' 编解码器解码的字节,表明 flag 不是一个有效的 UTF-8 字符串。
为了解决这个问题,你可以尝试使用其他编解码器,比如 'latin-1' 进行解码。以下代码展示了如何修改代码以解决这个问题:
import base64
data = [0x7C, 0x7B, 0x77, 0x21, 0x99, 0x44, 0x73, 0x42, 0x79, 0x4C, 0x75, 0x42, 0xA0, 0x5C, 0x7F, 0x42, 0x93, 0x76, 0x22, 0x03, 0x79, 0x56, 0x91, 0x4C, 0x9F, 0x03, 0x9D, 0x49, 0x7C, 0x44, 0x87, 0x41]
flag = ""
for i in range(len(data)):
if (i%2 == 0)|(data[i] == 33):
data[i] = data[i] - 33
else:
data[i] = data[i] + 0x03
flag += chr(data[i]^0x35)
# Base64 解码
flag = base64.b64decode(flag)
flag = flag.decode('latin-1')
print(flag)
通过将 flag.decode('utf-8') 替换为 flag.decode('latin-1'),你应该能够成功解码 flag。
原文地址: https://www.cveoy.top/t/topic/o7eX 著作权归作者所有。请勿转载和采集!