Рейтинг:0

Как я могу расшифровать шифр XOR с помощью известного мне строкового ключа?

флаг cn

У меня есть текст, который подвергся операции XOR с ключом «77U» (я уверен в этом, поскольку это файл, созданный с помощью имеющегося у меня кода, поэтому я видел, как каждая запись подвергалась операции XOR с помощью 77U.

Однако ни один из онлайн-дешифраторов, которые я пробовал, не дает мне никаких ценных результатов (ошибка или что-то еще тарабарщина), у некоторых нет возможности поместить строку в качестве ключа, поэтому я попытался преобразовать ее в ASCII, но я все еще не т получить какие-либо хорошие результаты.

В пробных целях это часть файла, который я хочу расшифровать:

D>9,?9m=(#)$#*Gb|ub}mw|zwm

Некоторые символы изменяются веб-сайтом, поэтому вот скриншот:

введите описание изображения здесь

Любая помощь будет оценена по достоинству!

флаг ck
Об этом говорится в [мета-вопросе] (https://meta.stackexchange.com/questions/376440/broken-feed-for-the-cryptography-site).
флаг ck
Предполагается ли, что указанная часть файла является допустимыми печатными символами или это по существу двоичные данные? Или [UTF-16](https://en.wikipedia.org/wiki/UTF-16), где ожидается UTF-8?
Рейтинг:0
флаг cn
vnd

Добро пожаловать унно!

Вы можете использовать Python для определения функции расшифровки:

def decrypt (зашифровано: байты, ключ: байты):
    результат = []
    
    для i в диапазоне (len (зашифровано)):
        result.append (зашифровано [i] ^ ключ [i % len (ключ)])

    возвращаемые байты (результат)

В этом случае я считаю, что текст был зашифрован одним десятичным символом ASCII-код 77 (буква М):

% python3 -i xor.py
>>> зашифровано = b"D>9,?9m=(#)$#*Gb|ub}mw|zwm"
>>> ключ = байты ([77, ])
>>> расшифровать (зашифровано, ключ)
b'\tожидается запуск\n/18/0 :17: '

Другие онлайн-декодеры также должны работать, если вы укажете «M» (или 0x4D в шестнадцатеричном представлении) в качестве ключа.

unno avatar
флаг cn
А что насчет У? Почему вы взяли именно 77 вместо 77У?
unno avatar
флаг cn
Более того, когда я вставил 3 строки в загруженный снимок экрана, я получил «Синтаксическая ошибка: нельзя смешивать байтовые и небайтовые литералы»»
unno avatar
флаг cn
для справки, вот полный файл: https://pastebin.com/baFm7EqC
флаг cn
vnd
Вы, вероятно, получите SyntaxError, потому что текст заключен в кавычки, и вы вставляете его без экранирования. Вам нужно сначала экранировать его, загрузить из файла или использовать тройные кавычки, например: >>> b"""текст " здесь"""
флаг cn
vnd
Что касается U, это часто означает Unicode. Что касается ценностей
unno avatar
флаг cn
любая идея, как я могу загрузить его полностью из файла, поскольку у меня возникают проблемы с его вставкой, так как он действительно большой, и я получаю «Текст содержит управляющие символы, которые могут позволить вставленному содержимому выполнять произвольные команды. Чтобы подтвердить и вставить, вы можете использовать â§ââ."
unno avatar
флаг cn
так что это может испортить некоторые части.
флаг cn
vnd
Попробуйте: >>> зашифровано = open("file.txt", "rb").read()
unno avatar
флаг cn
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/134293/discussion-between-unno-and-vnd).
unno avatar
флаг cn
большое спасибо, это работает!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.