记录一下不能F5反编译
加密方式
密文
-
异或操作函数
xor_string_with_key
:- 接受两个字符串作为输入:待处理的
text
和key
。 - 对每个字符进行异或操作。使用
ord(char)
获取字符的 ASCII 值,ord(key[i % key_length])
是key
中对应位置的字符的 ASCII 值。 - 异或操作的结果转换回字符并添加到结果列表中。
- 接受两个字符串作为输入:待处理的
-
主函数
main
:- 定义原始字符串
original_string
和key
。 - 调用
xor_string_with_key
函数对字符串进行异或处理。 - 输出处理后的字符串。
- 定义原始字符串
def xor_string_with_key(text, key_bytes):
"""
对给定的字符串进行异或操作,使用字节密钥。
"""
result = []
key_length = len(key_bytes)
for i, char in enumerate(text):
# 对字符进行异或处理
xor_char = chr(ord(char) ^ key_bytes[i % key_length])
result.append(xor_char)
return ''.join(result)
def expand_to_26_characters(original_string):
"""
将字符串扩展到 26 个字符,简单重复或加填充字符。
"""
while len(original_string) < 26:
original_string += original_string # 重复原字符串
return original_string[:26] # 截断到 26 个字符
def main():
original_string = "DASCTF"
extended_string = expand_to_26_characters(original_string) # 扩展到 26 个字符
# 给定的十六进制序列
key_hex = [0x3F, 0x09, 0x63, 0x34, 0x32, 0x13, 0x2A, 0x2F,
0x2A, 0x37, 0x3C, 0x23, 0x00, 0x2E, 0x20, 0x10, 0x3A,
0x27, 0x2F, 0x24, 0x3A, 0x30, 0x75, 0x67, 0x65, 0x3C]
# 进行异或处理
processed_string = xor_string_with_key(extended_string, key_hex)
# 输出处理后的字符串
print("Processed String:", processed_string)
# 输出处理后的字符串的十六进制表示
hex_output = ' '.join(f'{ord(c):02X}' for c in processed_string)
print("Hexadecimal Representation:", hex_output)
if __name__ == "__main__":
main()
DASCTF{H0wfUnnytheDosSnakeis!!!}