NSSCTF 逆向算法解密 Python 脚本

本脚本用于解密 NSSCTF 中的一道逆向算法题,题目给出了一个加密后的结果和一个加密算法,需要通过 Python 脚本逆向推导出原始的 flag。

题目描述:

flag = 'xxxxxxxxxxxxxxxxxx'
flag = flag[::-1]
result = 0
for i in range(0,len(flag)-1):
    s1 = ord(flag[i])
    s2 = ord(flag[i+1])
    if i == 0:
        result = (s1<<8)^(s2<<4)^s2
    else:
        result = (result<<4)^((s1<<8)^(s2<<4)^s2)
print(result)
# result = 591620785604527668617886
flag为:NSSCTF{EZEZ_LOGIC}

解题思路:

由于 flag 被反转了,所以需要先将其翻转回来。然后按照题目给出的算法逆推即可。

Python 脚本:

flag = 'xxxxxxxxxxxxxxxxxx'
flag = flag[::-1]
result = 591620785604527668617886
for i in range(len(flag)-2, -1, -1):
    s1 = ord(flag[i])
    s2 = ord(flag[i+1])
    result = ((result^s2)^s1<<8) >> 4
print(flag[::-1])

代码说明:

  1. flag = 'xxxxxxxxxxxxxxxxxx': 初始化 flag 变量,这里需要根据题目给出 flag 的长度进行调整。
  2. flag = flag[::-1]: 将 flag 反转,还原被反转的 flag。
  3. result = 591620785604527668617886: 将题目给出的加密结果赋值给 result 变量。
  4. for i in range(len(flag)-2, -1, -1): 循环遍历 flag 的每个字符,从倒数第二个字符开始。
  5. s1 = ord(flag[i])s2 = ord(flag[i+1]): 获取当前字符和下一个字符的 ASCII 码值。
  6. result = ((result^s2)^s1<<8) >> 4: 对 result 进行逆向运算,还原加密过程。
  7. print(flag[::-1]): 打印最终解密得到的 flag。

运行结果:

运行脚本后,将会输出原始的 flag:NSSCTF{EZEZ_LOGIC}

NSSCTF 逆向算法解密 Python 脚本

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

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