Дополнительно
Добавить в закладкиFerium
Администратор
Данный файлбот для Telegram, который принимает Python-файл и возвращает его зашифрованную (обфусцированную) версию.
Он не является вирусом, но делает код почти нечитаемым и трудным для анализа.
Разберём подробно, что именно происходит:
bot = telebot.TeleBot(TOKEN)
Требуется вставить токен, полученный у @BotFather.
Без токена бот не будет работать.
Это используется, чтобы сделать код непонятным — даже переменные не имеют смысла.
Он не является вирусом, но делает код почти нечитаемым и трудным для анализа.
Разберём подробно, что именно происходит:
Общий принцип
Программа создаёт Telegram-бота, который:- Получает от пользователя .py-файл.
- Извлекает его содержимое.
- Пропускает его через многоступенчатое обфусцирование (сжатие + кодирование + шифрование).
- Возвращает пользователю новый файл obf.py, в котором исходный код зашифрован и выполняется только после расшифровки во время запуска.
Пошаговый разбор
1. Настройка Telegram-бота
TOKEN = ""bot = telebot.TeleBot(TOKEN)
Требуется вставить токен, полученный у @BotFather.
Без токена бот не будет работать.
2. random_name()
Генерирует случайные имена переменных (например, qA3xF8tY1mL...) длиной 51 символ.Это используется, чтобы сделать код непонятным — даже переменные не имеют смысла.
3. obfuscate(code)
Главная функция. Она шифрует исходный код:- Компиляция:
compiled = marshal.dumps(compile(code, '<string>', 'exec'))
Код превращается в байткод Python. - Многоступенчатое сжатие:
- bz2.compress()
- zlib.compress()
- lzma.compress()
Это уменьшает размер и делает байты менее читаемыми.
- Кодирование в base64 — чтобы можно было вставить в строку.
- Добавление SHA-256 хэша в начало — чтобы усложнить расшифровку без скрипта.
- Ещё одно base64-кодирование поверх всего.
- Генерация 10 случайных переменных и создание кода-дешифровщика, который при запуске:
- Раскодирует данные.
- Убирает хэш.
- Распакует их обратно.
- Выполнит исходный байткод через exec(marshal.loads(...)).
- То есть при запуске obf.py оригинальный код восстанавливается и выполняется в памяти, без записи на диск.
4. handle_docs(message)
Этот обработчик срабатывает, когда пользователь присылает файл в чат:- Бот скачивает файл.
- Проверяет, что расширение .py.
- Читает содержимое.
- Пропускает через obfuscate().
- Сохраняет результат как obf.py.
- Отправляет пользователю обратно.
- Удаляет временный файл.
5. @bot.message_handler(commands=['start'])
Отвечает на команду /start, приглашая отправить файл для обфускации.6. bot.polling(none_stop=True)
Запускает бесконечный цикл обработки входящих сообщений от Telegram.Что делает обфусцированный файл
Полученный файл (obf.py) будет:- почти невозможно прочитать вручную (всё закодировано);
- выполняться нормально, восстанавливая оригинальный код в оперативной памяти;
- содержать несколько уровней компрессии и base64-кодирования;
- использовать случайные имена переменных, что делает автоматическую дешифровку сложной.
