霍雅
追求源于热爱,极致源于梦想!
str和v7异或
def xor_decrypt(input_str, key):
"""
用于异或解密字符串。
:param input_str: 原始字符串
:param key: 异或密钥(整数)
:return: 解密后的字符串
""" return ''.join(chr(ord(char) ^ key) for char in input_str)
# 示例数据
encrypted_str = "n=<;:h2<'?8:?'9hl9'h:l>'2>>2>hk=>;:?"
key = 10 # 密钥为9
# for key in range(10, 150):
# 解密
decrypted_str = xor_decrypt(encrypted_str, key)
print(f"解密结果: {decrypted_str}")
#
# encrypted_str = "]U[du~|t@{z@wj.}.~q@gjz{z@wzqW~/b;"
# print( ''.join(chr(ord(c) ^ 0x1F) for c in encrypted_str))
用010把CTF改成UPX
就能脱下来了
经过一个base58再经过一个异或
Base58换了表
import math
# ── 1) 先把你给出的密文贴进来(末尾 0x00 是字符串结束):
buf2 = bytes([
0x72,0x7A,0x32,0x48,0x34,0x4E,0x3F,0x3A,0x42,0x33,
0x47,0x69,0x75,0x63,0x7C,0x7D,0x77,0x62,0x65,0x64,
0x7B,0x6F,0x62,0x50,0x73,0x2B,0x68,0x6C,0x67,0x47,
0x69,0x15,0x42,0x75,0x65,0x40,0x76,0x61,0x56,0x41,
0x11,0x44,0x7F,0x19,0x65,0x4C,0x40,0x48,0x65,0x60,
0x01,0x40,0x50,0x01,0x61,0x6F,0x69,0x57,
0x00 # 末尾结束符
])
b = buf2[:-1]
L = len(b) # 58
Str_bytes = bytearray(L)
for k in range(L):
Str_bytes[k] = b[L-1-k] ^ (L-k)
Str = Str_bytes.decode('ascii')
print("Recovered Str =", Str)
tb58 = "wmGbyFp7WeLh2XixZUYsS5cVv1ABRrujdzQ4Kfa6gP8HJN3nTCktqEDo9M"
N = 0
for c in Str:
N = N * 58 + tb58.index(c)
blen = (N.bit_length() + 7)//8
flag = N.to_bytes(blen, 'big').decode('ascii')
print("FLAG =", flag)
下断点v5就是flag