Трудная задача в питоне
Привет, ребята, я просто хочу помочь понять этот алгоритм, я понимаю побитовые операторы xor и%, но я не могу понять, что именно происходит, я не хочу флаг, я хочу понять, что делать, чтобы получить флаг, и спасибо
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 !')
любая помощь!
1 ответ
Будет как я подумала об этой проблеме и как ее решить.
- уведомление
len(KEYOUT) == len(PASS) == len(SOLUCE)
- Обратите внимание, что между символами нет зависимости
Поэтому все, что вам нужно, это найти такой
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)
Утверждение тривиально.