Среди основных инструментов обфускации Python кода можно выделить Pyarmor. В статье рассмотрим использование Pyarmor для обфускации кода Python.
Еще по теме: Обфускация PowerShell
Обфускация Python
Обфускация кода — это метод скрытия исходного кода программы или приложения, затрудняющий его чтение. Такие методы часто используются для написания вредоносного чтобы антивирусные системы не могли его обнаружить.
Статья в образовательных целях и предназначается для обучения этичных хакеров. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.
Обфускация кода Python с помощью Pyarmor
Pyarmor — самый популярный инструмент для обфускации кода на Python. Его можно установить из репозитория GitHub или выполнить команду:
1 |
$ pip install pyarmor |
Pyarmor предоставляет следующие опции для выполнения:
1 |
$ pyarmor -h |
Использование:
1 |
pyarmor [-h] [-v] [-q] [-d] [--home HOME] [--boot BOOT] |
Параметры использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
-\h, \-\-help — показать это справочное сообщение и выйти. -\v, \-\-version — показать номер версии программы и выйти. -\q, \-\-silent — скрыть весь обычный вывод. -\d, \-\-debug — выводить трассировку стека исключений и отладочные сообщения. \-\-home ДОМАШНЯЯ_ПАПКА — изменить домашнюю папку pyarmor. \-\-boot ЗАГРУЗОЧНАЯ_ПЛАТФОРМА — изменить загрузочную платформу. obfuscate (o) — обфусцировать скрипты Python. licenses (l) — сгенерировать новые лицензии для обфусцированных скриптов. pack (p) — упаковать обфусцированные скрипты в один пакет. init (i) — создать проект для управления обфусцированными скриптами. config (c) — обновить настройки проекта. build (b) — обфусцировать все скрипты в проекте. info — показать информацию о проекте. check — проверить согласованность проекта. hdinfo — показать всю доступную информацию об оборудовании. benchmark — запустить тест производительности на текущей машине. register — сделать рабочим ключевой файл регистрации. download — скачать платформозависимые динамические библиотеки. runtime — сгенерировать пакет runtime отдельно. |
Для примера возьмем следующий код:
1 2 3 4 |
def main(): print("Hello World!") if __name__ = = "__main__": main() |
Чтобы его обфусцировать, выполните команду:
1 |
$ pyarmor obfuscate code_ofuscate.py |
При запуске Pyarmor с параметром obfuscate будет создана новая папка dist, содержащая следующий обфусцированный код:
1 2 3 4 5 6 |
from pytransform import pyarmor_runtime pyarmor_runtime() __pyarmor__(__name__, __file__, b'\x50\x59\x41\x52\x4d\x4f\x52\x00\x00\ x03\x08\x00\x55\x0d\x0d\x0a\x09\x33\xe0\x02\x00\x00\x00\x00\x01\x00\x00\ x00\x40\x00\x00\x00\x89\x0e\x00\x00\x00\x00\x00\x18\x2f\x7c\xb0\x75\x45\ xeb\x44\x9b\x41\x2f\x3b\x0e\x8f\x69\x64\x7a\x00...', 2) |
Попробуем запустить скрипт с обфусцированным кодом:
1 2 |
$ python dist/code_ofuscate.py Hello World! |
Еще одна возможность, предоставляемая этим инструментом — это запуск через веб-приложение, которое можно развернуть на локальной машине. Для этого можно скачать этот репозиторий или установить с помощью команды:
1 |
$ pip install pyarmor-webui |
После установки можно запустить веб-сервер:
1 |
$ pyarmor-webui |
После запуска сервера мы получаем доступ из браузера:
1 |
http://localhost:9096 |
Будет предложен выбор пути, где расположен исходный код, и скрипта для обфускации.
Заключение
Обфускация кода также имеет свои недостатки, например, она может вызвать сложности в идентификации ошибок. Это происходит потому, что при применении обфускации все методы изменяются, и также затрагиваются регистры, что делает более сложным использование последних для идентификации ошибок.
Ошибочно полагаться исключительно на безопасность, обеспечиваемую лишь обфускацией. Было бы неправильным считать, что программный код защищен исключительно потому, что он был обфусцирован. Такие методы следует дополнять применением других способов.
Также рекомендую прочитать статью «Обфускация Python с помощью Cython».
ПОЛЕЗНЫЕ ССЫЛКИ: