BitBoost Python code obfuscator

Obfuscating Python Code To Run On Telit Hardware Modules / Devices Using Telit Native APIs (Resulting In Custom/VAR Devices With GSM & GPS Functionality)

About Telit Devices: Opportunity To Make Custom Devices By Uploading Python Code

Some Telit hardware (www.telit.com) lets you run Python code natively using the Telit “Easy Script Extension Feature”. By uploading your own code to Telit hardware, you can turn the off-the-shelf Telit hardware into customized devices with capabilities such as cellular network communications (GSM) and GPS. (Telit hardware modules supporting these features include GM862-GPS and GE863-GPS.)

Telit’s Easy Script Extension functionality includes a Python interpreter supporting Python version 1.5.2 (as this was written), 1MB or more of nonvolatile storage, and 1.2 MB of RAM for the Python interpreter.

Reconciling A Python Obfuscator With The Telit Environment

Although the Telit hardware provides a built-in Python interpreter, we don’t run the obfuscator on the Telit hardware itself, because:

Fortunately, components of a workaround are available.

  1. With default settings, the ‘bobs’ BitBoost Python obfuscator outputs Python code which uses only the Python language version feature set used by the inputted code. So if your input code is compatible with Python 1.5.2, your obfuscated output code can still run in Python 1.5.2.
  2. A Telit simulator/interface library is available (see the Telit simulator guide/tutorial at http://wiki.groundlab.cc/doku.php?id=telit_python) that can run
    • on non-Telit hardware
    • in operating systems such as Linux or OS X.
    • in later versions of Python (preferably Python 2.x for our purposes.)
  3. In conjunction with this simulator, the obfuscator can be run on the non-Telit hardware, such as a desktop computer running Linux or OS X.

For More Information

For more information, please feel free to contact our Python code obfuscation & protection experts.


1 Specifically, as of October 2013, Telit’s onboard Python interpreter differed from normal Python 1.5.2 in the following ways: it supported some later-version Python string methods, but didn’t support certain Python types (complex, float, docstring) and supported only a subset of the Python standard library’s modules: (marshal, imp, _main_, _builtin_, sys, md5, binascii). See “Easy Script in Python 80000ST10020a Rev.17 – 2013-10-08) Telit_Easy_Script_Python_r17.pdf”, fetched from http://www.telit.com/module/infopool/download.php?id=617 See Chapter 3.

2 “Easy Script in Python 80000ST10020a Rev.17 – 2013-10-08) Telit_Easy_Script_Python_r17.pdf, fetched from http://www.telit.com/module/infopool/download.php?id=617