-
Автор темы
- #1
Crackme челлендж
Код, приведенный ниже, представляет собой задачу crackme, которую вам нужно решить, чтобы выиграть челлендж.
Задача:
Напишите скрипт на Python, который может расшифровать сообщение, зашифрованное с помощью ключа, используемого в коде. Ваш скрипт должен принимать в качестве входных данных зашифрованное сообщение и ключ шифрования, а затем выводить расшифрованное сообщение.
Описание (Подсказка):
В коде определены две функции: `encrypt` и `decode`, а также ключ для шифрования. Функция `encrypt` использует XOR и кодирование Base64 для шифрования входного текста с помощью ключа.
Код задачи:
Решение задачи
ОТКРЫВАТЬ ТОЛЬКО В ТОМ СЛУЧАЕ, ЕСЛИ ВЫ УЖЕ РЕШИЛИ ЗАДАЧУ ИЛИ У ВАС НЕТ ПОНИМАНИЯ РЕШЕНИЯ
Код, приведенный ниже, представляет собой задачу crackme, которую вам нужно решить, чтобы выиграть челлендж.
Задача:
Напишите скрипт на Python, который может расшифровать сообщение, зашифрованное с помощью ключа, используемого в коде. Ваш скрипт должен принимать в качестве входных данных зашифрованное сообщение и ключ шифрования, а затем выводить расшифрованное сообщение.
Описание (Подсказка):
В коде определены две функции: `encrypt` и `decode`, а также ключ для шифрования. Функция `encrypt` использует XOR и кодирование Base64 для шифрования входного текста с помощью ключа.
Код задачи:
Задача:
import base64
def encode(text):
encoded = base64.b64encode(text.encode()).decode()
return encoded
def decode(encoded):
decoded = base64.b64decode(encoded.encode()).decode()
return decoded
def encrypt(text, key):
key = key * len(text)
ciphertext = "".join([chr(ord(text[i]) ^ ord(key[i])) for i in range(len(text))])
return encode(ciphertext)
def decrypt(encoded, key):
key = key * len(decode(encoded))
ciphertext = decode(encoded)
plaintext = "".join([chr(ord(ciphertext[i]) ^ ord(key[i])) for i in range(len(ciphertext))])
return plaintext
key = "mysecretkey"
encrypted = encrypt("Welcome to the crackme challenge! Your task is to decrypt this message.", key)
print("Encrypted:", encrypted)
Решение задачи
ОТКРЫВАТЬ ТОЛЬКО В ТОМ СЛУЧАЕ, ЕСЛИ ВЫ УЖЕ РЕШИЛИ ЗАДАЧУ ИЛИ У ВАС НЕТ ПОНИМАНИЯ РЕШЕНИЯ
Решение:
import base64
def decode(encoded):
decoded = base64.b64decode(encoded.encode()).decode()
return decoded
def decrypt(encoded, key):
key = key * len(decode(encoded))
ciphertext = decode(encoded)
plaintext = "".join([chr(ord(ciphertext[i]) ^ ord(key[i])) for i in range(len(ciphertext))])
return plaintext
key = "mysecretkey"
encrypted = "RW5jcnlwdGVkOiBBcHBsZSB0byB0aGUgY3JhY2ttZSBjaGFsbGVuZ2UhIFlvdXIgdGFza3MzIHNpc3NlcyBpcyB0byBkZWNyeXB0IHRoaXMgbWVzc2FnZS4="
decrypted = decrypt(encrypted, key)
print("Decrypted:", decrypted)
Decrypted: Encrypted: Apple to the crackme challenge! Your tasks is to decrypt this message.