Вопрос или проблема
_ = lambda __ : __import__('zlib').decompress(__import__('base64').b64decode(__[::-1]));exec((_)(b'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'))
Как декодировать этот код?
Если просто заменить вызов exec
на print
, вы увидите, что это декодируется в:
b"exec((_)(b'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'))"
Поскольку становится очевидно, что оригинальный код был закодирован несколько раз той же функцией, было бы проще добраться до оригинального исходного кода, заменив функцию exec
на такую, которая выводит исходный код, если он не начинается с b'exec('
:
import builtins
def printing_exec(source, *args):
if isinstance(source, bytes) and not source.startswith(b'exec('):
print(source)
orig_exec(source, *args)
orig_exec=exec
builtins.exec = printing_exec
_ = lambda __ : __import__('zlib').decompress(__import__('base64').b64decode(__[::-1]));exec((_)(b'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'))
Это выводит:
b'print("Hello, World!")'
Hello, World!
Демонстрация: https://ideone.com/LnTi4N
Ответ или решение
Для декодирования строки, закодированной с использованием zlib и base64 в Python, нам необходимо выполнить несколько шагов. В данном случае используется лямбда-функция, которая принимает закодированные данные, декодирует их из base64, а затем распаковывает с помощью zlib.
Шаги для декодирования:
-
Импортирование необходимых библиотек:
Для работы с zlib и base64 необходимо будет импортировать модулиzlib
иbase64
. -
Определение функции для декодирования:
Мы можем создать лямбда-функцию или обычную функцию, которая будет принимать закодированные данные, обращаясь кbase64.b64decode()
иzlib.decompress()
. -
Изменение поведения функции exec:
Чтобы увидеть промежуточные результаты, можно переопределить встроенную функциюexec
, чтобы она не выполняла код, который мы декодируем, а просто выводила его.
Пример кода:
Вот как это может выглядеть на практике:
import builtins
import zlib
import base64
# Определяем функцию, которая будет выводить код вместо выполнения
def printing_exec(source, *args):
if isinstance(source, bytes) and not source.startswith(b'exec('):
print(source) # Печатаем декодированный код
orig_exec(source, *args) # Выполняем исходный exec
# Сохраняем оригинальную функцию exec
orig_exec = exec
# Перенаправляем exec на нашу функцию
builtins.exec = printing_exec
# Лямбда-функция для декодирования данных
_ = lambda __ : zlib.decompress(base64.b64decode(__[::-1]))
# Декодируем закодированные данные
exec((_)(b'COt1C9399//...'))
Важно:
В этом коде строка (представленная как b'COt1C9399//...'
) должна быть полной строкой, которую вы хотите декодировать, она должна продолжаться после ...
.
Результат:
После выполнения вышеуказанного кода вы увидите вывод декодированного байтового кода. Если в закодированных данных изначально содержится что-то вроде print("Hello, World!")
, то после декодирования и выполнения кода вы увидите сообщение на экране.
Заключение:
Этот метод позволяет не только декодировать данные, но и легко регистрировать и выводить промежуточные результаты. Вы можете адаптировать код для реализации более сложной логики обработки или декодирования других форматов в зависимости от ваших потребностей.
Если у вас остались вопросы или вы хотите увидеть конкретные примеры работы с другими данными, не стесняйтесь спрашивать!