Техническое задание на практику на разработку модуля автоматической обфускации JavaScript файлов на Python
Цель данного технического задания - разработка модуля на языке Python, который будет обфусцировать JavaScript файлы в указанной папке. Обфускация должна сделать код максимально сложным для чтения и анализа, при этом сохраняя его функциональность.
-
Обработка папок и файлов
- Модуль должен принимать на вход путь к папке, содержащей JavaScript файлы.
- Рекурсивно обрабатывать все файлы в указанной папке и вложенных папках.
- Изменять только файлы с расширением
.js.
-
Обфускация кода
- Преобразование имён переменных, функций и параметров в случайные строки.
- Удаление комментариев.
- Изменение структуры кода, не влияющее на его функциональность (например, добавление лишних скобок, изменение форматирования).
- Преобразование строковых литералов в их эквиваленты (например, в Unicode).
- Любые другие методы обфускации, которые могут усложнить чтение кода.
-
Сохранение исходной функциональности
- Обфусцированный код должен оставаться полностью работоспособным и функционально эквивалентным исходному коду.
-
Логирование и отчёты
- Модуль должен вести логирование процесса обфускации с указанием обработанных файлов и применённых методов обфускации.
- По завершению работы модуля, должен создаваться отчёт с результатами обфускации (например, количество обработанных файлов, применённые методы обфускации и т.д.).
- Python 3.8 и выше.
- Модуль должен быть кроссплатформенным и работать как на Windows, так и на Linux и MacOS.
- Рекомендуется использовать существующие библиотеки для парсинга и обработки JavaScript кода, такие как
esprimaдля Python или другие подобные библиотеки.
- Входные данные: путь к папке с JavaScript файлами.
- Выходные данные: обфусцированные JavaScript файлы, сохранённые в тех же папках, где и исходные файлы.
- Модуль должен предоставлять интерфейс командной строки (CLI) для запуска процесса обфускации.
- Пример команды для запуска:
python obfuscator.py --input_path /path/to/js/files
-
Обработчик командной строки
- Парсинг аргументов командной строки.
- Валидация входных данных.
-
Модуль обфускации
- Обработка файлов и папок.
- Применение методов обфускации.
-
Логирование и отчётность
- Логирование процесса обфускации.
- Генерация отчёта по завершению процесса.
project_root/
├── obfuscator/
│ ├── __init__.py
│ ├── cli.py
│ ├── obfuscate.py
│ ├── logger.py
│ └── utils.py
├── reports/
│ └── obfuscation_report.txt
├── README.md
├── requirements.txt
└── setup.py
Задание оценивается по глубине выполнения ТЗ. Минимальная версия - модуль, обфусцирующий конкретный файл на JS