simple-cipher
Взлом этого незамысловатого шифра вряд ли займёт много времени.
Участникам нужно выдать файлы:
Не требуется.
В задании реализован простой самописный шифр:
def encrypt(plaintext: bytes, key: bytes) -> bytes:
data = [i - byte for i, byte in enumerate(plaintext)]
for i, byte in enumerate(data):
idx = 2 * i + 1
byte = sum(data) - idx * byte
data[i] = (byte + idx * key[0]) % 256
return bytes(data)
Нужно заметить, что:
- от ключа используется всего один байт (
key[0]
), его можно перебрать - изначальную сумму символов флага (
sum(data)
) также можно перебрать
Итоговая сложность перебора — 256^2. На каждой итерации нужно аккуратно развернуть операции в шифре, затем проверить полученный текст на совпадение с форматом флага.
Пример решения: solution/solver.py
Cup{s1mple_rev3rs1ble_c1pher}