python中的挑战

2024-09-29 17:16:37 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,我只是想帮助大家理解这个算法,我理解按位异或和%运算符,但我不能完全理解发生了什么,我不想看到标志,我想知道如何得到标志,谢谢

PASS = input('Enter the Flag: ')
KEY = 'I know, you love decrypting Byte Code !'
I = 5
SOLUCE = [57, 73, 79, 16, 18, 26, 74, 50, 13, 38, 13, 79, 86, 86, 87]
KEYOUT = []
for X in PASS:
    KEYOUT.append((ord(X) + I ^ ord(KEY[I])) % 255)
    I = (I + 1) % len(KEY)

if SOLUCE == KEYOUT:
    print('You Win')
else:
    print('Try Again !')

任何帮助!你知道吗


Tags: thekey算法youinput标志运算符pass
1条回答
网友
1楼 · 发布于 2024-09-29 17:16:37

会有我对这个问题的思考和完整的解决方案。你知道吗

  1. 注意len(KEYOUT) == len(PASS) == len(SOLUCE)
  2. 注意符号之间没有依赖关系
  3. 所以你只需要找到这样的X(ord(X) + I ^ ord(KEY[I])) % 255)等于SOLUCE中相应的元素

    FLAG = []
    for part in SOLUCE:
        for ord_X in range(0, 256):
            current_try = (ord_X + I ^ ord(KEY[I])) % 255
            if current_try == part:
                FLAG.append(chr(ord_X))
                break
        else:
            print("fiasco")  # if you aren't sure task is solvable. Not necessary line
        I = (I + 1) % len(KEY)
    

验证是微不足道的。你知道吗

相关问题 更多 >

    热门问题