обфускатор python файлов в ТГ боте | Cshield - Форум социальной инженерии

обфускатор python файлов в ТГ боте

Ferium

Администратор
Данный файлбот для Telegram, который принимает Python-файл и возвращает его зашифрованную (обфусцированную) версию.
Он не является вирусом, но делает код почти нечитаемым и трудным для анализа.
Разберём подробно, что именно происходит:


Общий принцип​

Программа создаёт Telegram-бота, который:
  1. Получает от пользователя .py-файл.
  2. Извлекает его содержимое.
  3. Пропускает его через многоступенчатое обфусцирование (сжатие + кодирование + шифрование).
  4. Возвращает пользователю новый файл obf.py, в котором исходный код зашифрован и выполняется только после расшифровки во время запуска.

Пошаговый разбор​

1. Настройка Telegram-бота​

TOKEN = ""
bot = telebot.TeleBot(TOKEN)


Требуется вставить токен, полученный у @BotFather.
Без токена бот не будет работать.


2. random_name()​

Генерирует случайные имена переменных (например, qA3xF8tY1mL...) длиной 51 символ.
Это используется, чтобы сделать код непонятным — даже переменные не имеют смысла.



3. obfuscate(code)​

Главная функция. Она шифрует исходный код:
  1. Компиляция:
    compiled = marshal.dumps(compile(code, '<string>', 'exec'))

    Код превращается в байткод Python.
  2. Многоступенчатое сжатие:
    • bz2.compress()
    • zlib.compress()
    • lzma.compress()
      Это уменьшает размер и делает байты менее читаемыми.
  3. Кодирование в base64 — чтобы можно было вставить в строку.
  4. Добавление SHA-256 хэша в начало — чтобы усложнить расшифровку без скрипта.
  5. Ещё одно base64-кодирование поверх всего.
  6. Генерация 10 случайных переменных и создание кода-дешифровщика, который при запуске:
    • Раскодирует данные.
    • Убирает хэш.
    • Распакует их обратно.
    • Выполнит исходный байткод через exec(marshal.loads(...)).
    • То есть при запуске obf.py оригинальный код восстанавливается и выполняется в памяти, без записи на диск.

4. handle_docs(message)​

Этот обработчик срабатывает, когда пользователь присылает файл в чат:

  1. Бот скачивает файл.
  2. Проверяет, что расширение .py.
  3. Читает содержимое.
  4. Пропускает через obfuscate().
  5. Сохраняет результат как obf.py.
  6. Отправляет пользователю обратно.
  7. Удаляет временный файл.

5. @bot.message_handler(commands=['start'])​

Отвечает на команду /start, приглашая отправить файл для обфускации.


6. bot.polling(none_stop=True)​

Запускает бесконечный цикл обработки входящих сообщений от Telegram.

Что делает обфусцированный файл​

Полученный файл (obf.py) будет:

  • почти невозможно прочитать вручную (всё закодировано);
  • выполняться нормально, восстанавливая оригинальный код в оперативной памяти;
  • содержать несколько уровней компрессии и base64-кодирования;
  • использовать случайные имена переменных, что делает автоматическую дешифровку сложной.
 
Сверху