Intensio-Obfuscator es una herramienta, todavía en beta, para ofuscar código fuente en python. Reemplaza el nombre de las variables, clases y funciones por caracteres aleatorios de longitud definida, elimina comentarios, saltos de línea y agrega a cada línea un script aleatorio con valores siempre diferentes. Requiere Python >= 3.5 pero puede ofuscar python 2.x y 3.x.
Instalación
git clone https://github.com/Hnfull/Intensio-Obfuscator.git
cd Intensio-Obfuscator/intensio/
Caraterísticas
Uso
Se pueden excluir variables, clases o funciones para que no sean tratadas por 'replace' editando intensio/exclude_python_words.txt.
Si por el contrario quieres incluir variables, clases o funciones que no están incluidos en la función 'replace', edita intensio/include_python_words.txt.
Es importante no poner los mismos nombres de variables locales, clases o funciones que los de keywords y/o librerías importadas de python.
Ejemplos
Instalación
git clone https://github.com/Hnfull/Intensio-Obfuscator.git
cd Intensio-Obfuscator/intensio/
Caraterísticas
Param. | Descripción |
---|---|
Replace | Cambia todos los nombres de las variables, clases y funciones definidas y elimina los saltos de línea. |
Padding | Añade scripts aleatorios después de cada línea y elimina todos los saltos de línea. |
Remove | Borra todos los comentarios y los saltos de línea. |
Secret | Sólo para curiosos :) |
Mixer lower |
Genera palabras con 32 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'.
|
Mixer medium | Genera palabras con 64 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'. |
Mixer high | Genera palabras con 128 caracteres que reemplazan variables, clases y funciones definidas en el código fuente y en scripts aleatorios si se especifican las características 'replace' o 'padding'. |
Uso
-h, --help -> show this help message and exit.
-f, --onefile -> if only one file.
-d, --multiplefiles -> if multiple files (project).
-i, --input -> source file or directory - if multiple files indicate a directory that contain all your files.
-c, --code -> language used in input file or directory. value: [python]
-o, --output -> output file or directory that will be obfuscated - if multiple file indicate a empty directory that will contain all your files.
-m, --mixer -> length level of variables mix output. values: [lower,medium,high]
-r, --replace -> activate the 'replace' obfuscation feature.
-p, --padding -> activate the 'padding' obfuscation feature.
-rm, --remove -> activate the 'remove' obfuscation feature.
-s, --secret -> activate the 'secret' bullshit feature.
Se pueden excluir variables, clases o funciones para que no sean tratadas por 'replace' editando intensio/exclude_python_words.txt.
Si por el contrario quieres incluir variables, clases o funciones que no están incluidos en la función 'replace', edita intensio/include_python_words.txt.
Es importante no poner los mismos nombres de variables locales, clases o funciones que los de keywords y/o librerías importadas de python.
Ejemplos
-
Múltiples archivos básico:
python3.x intensio_obfuscator.py -d -i test/python/multiplefiles/basic/input/basicRAT -c python -o test/python/multiplefiles/basic/output/basicRAT -m lower -r -rm
-
Múltiples archivos avanzado:
python3.x intensio_obfuscator.py -d -i test/python/multiplefiles/advanced/input/basicRAT -c python -o test/python/multiplefiles/advanced/output/basicRAT -m high -r -p -rm
- Si solo se trabaja con un archivo el comando es el mismo que para varios, simplemente no hay que apuntar a un directorio sino a un archivo de Python directamente con los parámetros -i y -o, luego cambiar el parámetro -d por el parámetro -f.
- Si una variable, clase o función tiene un nombre idéntico a una palabra entre '' o "" en una función print(), el texto tendrá el mismo valor que las variables, clases o funciones mezcladas.
- Si una variable, clase o función tiene un nombre idéntico con una palabra después de # (comentario), el texto tendrá el mismo valor que las variables, clases o funciones mezcladas, pero si está entre """ or ''' sin una variable antes no se realiza ninguna sustitución.
- Si se nombró una variable, clase o función de la misma manera que alguna palabra clave de python o nombre de función/clase de librerías de python importadas, puede aparecer un error. Hay que editar intensio/excluded_python_words.txt para agregar las variables para no ofuscar o cambiar los nombres.
Comentarios
Publicar un comentario