An AST based Python obfuscator that robustly mangles names and other obfuscations of Python code
pip install bobskater
bobskater
provides a few mechanisms for direct use.
obfuscateString("")
obfuscates a string of source code.obfuscateFile('myfile.py')
will obfuscate an entire file and overwrite the originalBoth take keyword arguments for configuration:
removeDocstrings
will remove docstrings by replacing them with pass
statements (to handle even cases where a function has only a docstring). Defaults to True
obfuscateNames
will obfuscate all names except globally scoped variables, kwargs, builtins, and identifiers in a class namespace. Defaults to True
There are no other obfuscations performed than the two mentioned above currently in bobskater
from bobskater import obfuscateString
myFileContents = open('myfile.py', 'r').read()
#Will obfuscate myFileContents and return it into output. Names will not be mangled, only docstrings will be removed
output = obfuscateString(myFileContents, obfuscateNames=False)
pytest
- Runs all the tests
Refer to the python docs on packaging for clarification.
Make sure you've updated setup.py
, and have installed twine
, setuptools
, and wheel
python3 setup.py sdist bdist_wheel
- Create a source distribution and a binary wheel distribution into dist/
twine upload dist/bobskater-x.x.x*
- Upload all dist/
files to PyPI of a given version
Make sure to tag the commit you released