难点读程序,写exp
-
*(unsigned __int8 *)(i + a1) >> 4
:- 这将字节
i + a1
右移 4 位,提取出字节的高 4 位。
- 这将字节
-
*(_BYTE *)(i + a1)
:- 这获取原字节的低 4 位(即,
i + a1
位置的字节的低 4 位)。
- 这获取原字节的低 4 位(即,
-
(16 * *(_BYTE *)(i + a1))
:- 这是将低 4 位的值乘以 16,用于计算位权值。
-
(unsigned __int8)((*(unsigned __int8 *)(i + a1) >> 4) | (16 * *(_BYTE *)(i + a1)))
:- 高 4 位和低 4 位相加得到最终的字符值
def convert_to_string(a):
result = []
for i in range(len(a)):
byte_value = a[i]
high_nibble = byte_value >> 4
low_nibble = byte_value & 0x0F
char_value = high_nibble | (low_nibble * 16)
result.append(chr(char_value))
return ''.join(result)
# 输入数组
a = [228, 53, 53, 52, 69, 100, 183, 212, 100, 52, 245, 7, 39, 3, 118, 39, 67, 214, 214, 150, 230, 118,
245, 150, 55, 245, 22, 119, 86, 55, 3, 214, 51, 215]
# 调用函数并输出结果
output_string = convert_to_string(a)
print(output_string)
//NSSCTF{MFC_pr0gr4mming_is_awes0m3}