/pyobfuscate

pyobfuscate

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

This fork fixes Issue #19: Install location hardcoded as `/usr/bin`.

Install Commands
```
git clone https://github.com/TQwan/pyobfuscate.git
python setup.py install
```
Example Result Output
```
running install
running build
running build_scripts
running install_scripts
running install_egg_info
Writing D:\Anaconda3\Lib\site-packages\pyobfuscate-0.3-py3.5.egg-info
```

This is for people that experience this bug:
```
Traceback (most recent call last):
  File "setup.py", line 17, in <module>
    data_files=[('/usr/bin', ['pyobfuscate'])]
  File "D:\Anaconda3\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "D:\Anaconda3\lib\distutils\dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "D:\Anaconda3\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "D:\Anaconda3\lib\distutils\command\install.py", line 551, in run
    self.run_command(cmd_name)
  File "D:\Anaconda3\lib\distutils\cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "D:\Anaconda3\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "D:\Anaconda3\lib\distutils\command\install_data.py", line 56, in run
    dir = convert_path(f[0])
  File "D:\Anaconda3\lib\distutils\util.py", line 125, in convert_path
    raise ValueError("path '%s' cannot be absolute" % pathname)
ValueError: path '/usr/bin' cannot be absolute
```

pyobfuscate - Python source code obfuscator
===========================================

pyobfuscate is a source code obfuscator: It makes Python source code
hard to read for humans, while still being executable for the Python
interpreter. 


Why obfuscate?
--------------

Obfuscation makes little sense for Open Source
(http://www.opensource.org/) programs, but vendors developing
commercial applications are usually not happy with shipping the
original source code to customers. 

Several obfuscators for other languages, like Java, already
exists. With Python, the problem is even more severe than with Java,
because Python bytecode is not compatible between different Python
versions. Also, bytecode is very easy to "decompile" to source code by
using "decompyle": http://www.crazy-compilers.com/decompyle/.

If shipping original source code is the only option for distributing
Python applications, then many vendors might choose another
programming language instead. 


What does pyobfuscate do?
-------------------------

pyobfuscate transforms the source code in several ways. Some of these
transformations are reversible (can be "un-obfuscated"); some are
not. Here's a list of what pyobfuscate currently does:

* Removes comments and docstrings (not reversible)

* Changes indentation (reversible)

* Adds whitespace between tokens (somewhat reversible)

* Renames functions, classes and variables (not reversible)

* Inserts bogus lines instead of blank lines. 


Limitations
-----------

pyobfuscate operates on one single source file at a time. It does not
obfuscate the interface between several files. 

pyobfuscate cannot obfuscate methods, class variables or other
attributes, currently. See the TODO for more information.