{ "info": { "author": "SOURCEdefender", "author_email": "hello@sourcedefender.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: Other Audience", "Intended Audience :: Science/Research", "Intended Audience :: System Administrators", "License :: Free To Use But Restricted", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Security", "Topic :: Security :: Cryptography", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Software Distribution", "Topic :: Utilities" ], "description": "![SOURCEdefender - advanced encryption protecting your Python codebase](https://images.sourcedefender.co.uk/logo.png \"SOURCEdefender - advanced encryption protecting your python codebase\")\n\n---\n\n[![python](https://img.shields.io/pypi/pyversions/sourcedefender.svg?logo=python&logoColor=fed749&colorB=3770a0&label=)][python-url]\n[![downloads](https://pepy.tech/badge/sourcedefender)][pepy-url]\n[![downloads](https://pepy.tech/badge/sourcedefender/week)][pepy-url]\n[![license](https://img.shields.io/pypi/l/sourcedefender.svg)][pypi-url]\n\nSOURCEdefender can protect your plaintext Python source code with AES 256-bit Encryption. There is no impact on the performance of your running application as the decryption process takes place during the import of your module or when loading your script on the command-line. Encrypted code won't run any slower when it is loaded from a _.pye_ file compared to loading from a _.py_ or _.pyc_ file. \n\nAs we hook directly into the import process there are no cross platform or Python version compatibility issues. Encrypted code will run on the _ANY_ target environment we support. Obviously your code needs to be written with the target platform in mind, we can't automagically make __sys.getwindowsversion()__ work on Linux.\n\n# Features\n - Code encrypted with AES 256-bit encryption.\n - Encrypted code will run on __ANY__ supported environment.\n - Enforced expire time on encrypted code (optional).\n\n# Supported Environments\n| Architecture | Operating System | Python 3.5 | Python 3.6 | Python 3.7 | Python 3.8-dev | Python 3.9-dev |\n|--|--|--|--|--|--|--|\n|x86_64|Windows 10|Y|Y|Y|N|N|\n|x86_64|Linux|Y|Y|Y|Y|Y|\n|x86_64|macOS|Y|Y|Y|N|N|\n|ARMv7|Linux|Y|Y|Y|Y|Y|\n\n\n# Licence\n\n## Runtime\nNo licence is required to distribute and run encrypted code. All you need to remember is to inlcude __sourcedefender__ as a dependency while packaging your project and import the sourcedefender module before you attempt to use/import encrypted code.\n\n## Encryption\nTo encrypt files you need a licence. To test the software you can create a __trial__ licence that will last for 30 days. To create a trial licence you'll need to run the following command:\n\n $ sourcedefender activate\n SOURCEdefender v5.0.4\n \n Generating Trial Licence.\n \n Licence:\n \n Type : Trial\n File : /home/ubuntu/.sourcedefender\n Status : [ Timestamp 1 Month from now ]\n $\n\n*Note: This will create a __.sourcedefender__ licence file in the current directory.*\n\nAny code encrypted with this licence will automatically have a 30 day expire period enforced by default, you can enforce a shorter expire time window with the __--ttl__ option as we will do in the example below. The Registered version has no enforced expire period defined, but you can set one manually if you need to.\n\n## Registration\nTo remove the 30 day expire restriction you need to purchase a licence:\n\n| Licence | Usage |\n|--|--|\n| [__Personal__](https://purchase.sourcedefender.co.uk/personal) | A Personal License is a discounted option for a private individual who purchases a license for non-commercial use. Examples would be for learning purposes or managing a tryout-lab at home. |\n| [__Commercial__](https://purchase.sourcedefender.co.uk/commercial) | A Commercial License is for organisations and business entities (including educational and non-profit organizations). Contact us for non-profit and educational organisations for a discount. |\n\n## Activation\nOnce you have completed your purchase, you will be emailed a __Profile ID__ from PayPal. Activation of your subscription is a one time event and the licence is only valid for the device activating the subscription. To activate your subscription you'll need to run the following command:\n\n $ sourcedefender activate --subscription=\"I-13K8MFCD23U3\"\n SOURCEdefender v5.0.4\n \n Validating subscription status....\n \n Licence:\n \n Type : Subscription\n ID : I-13K8MFCD23U3\n Status : Active\n File : .sourcedefender\n $\n\nIf you want to view your subscription status at any time you can run this:\n\n $ sourcedefende view\n SOURCEdefender v5.0.4\n \n Validating subscription status....\n \n Licence:\n \n Type : Subscription\n ID : I-13K8MFCD23U3\n Status : Active\n File : .sourcedefender\n $\n\nThere are four states for a subscription:\n\n| Status | Comment |\n|--|--|\n| Active | Successful validation of your active subscription. |\n| Cancelled | You have cancelled your subscription via PayPal. |\n| Uknown | We have been unable to validate the status of your licence. |\n| Error | There has been an error with your registration details. |\n\n\n### Network Requirements for subscription activation\n\nTo activate your subscription you will need TCP access to port 993. This can be direct access or via a SOCKS4, SOCK5, or HTTP proxxy configured using the HTTP_PROXY/http_proxxy environment variables. The uppercase 'HTTP_PROXY' environment variable will take precedence over the lowercase 'http_proxy' one. As an example for a SOCKS4 proxy you could use the following format for your environment variable:\n\n $ ALL_PROXY=\"socks4://username:password@hostname\"\n\nOR\n\n $ HTTP_PROXY=\"socks4://username:password@hostname\"\n\nHere it is assumed that you are running your SOCKS Proxy on port 1080.\nIf you use something like Squid, you can set it up as follows:\n\n $ HTTP_PROXY=\"http://username:password@hostname:3128\"\n\nObviously that assumes that Squid is using port 3128.\n\n\n# Usage\n\n## How do I protect my Python source code?\n\nLet's have a look at an example of the encryption process:\n\n $ cat /home/ubuntu/helloworld.py\n print(\"Hello World!\")\n\nThis is a very basic example and produces the following output:\n\n $ python3 /home/ubuntu/helloworld.py\n Hello World!\n\nWe do not want anyone to get at our source code and we also don't want anyone to run this code after 1 day. When we encrypt the file we can enforce an expire time of 1 day from now with the __--ttl__ option as follows:\n\n $ sourcedefender encrypt --ttl=1d /home/ubuntu/helloworld.py\n SOURCEdefender v5.0.4\n \n Processing:\n \n /home/ubuntu/helloworld.py\n\nNow the file is encrypted, its contents are as follows:\n\n $ cat /home/ubuntu/helloworld.pye\n -----BEGIN SOURCEDEFENDER FILE-----\n Version : 5.0.4\n \n PDVEZCZEVENjcUFLSzFCOGI7fjNubG14eGlGaUVANFI/dVU9WkpSeDI9NzA1JUxWJFUyRSpDPUQ5\n VWxpVf5xfJFnn0ZMVuXDWSu8xJ+89JTzA4/W+hpgz/t2p90XquT4y+BtXSfDrINLXFe5j6+EYSr0\n UVCi9Ad3119XXFgDzdMnjvhWVf8z5iH+BflX3wMDCM4M9qHPmqeB4j1xDDgMPwAW4biytQD8mc75\n N7f+l3N4i0ZORa1hA6FhUFNuH2BjauDVKcNVZVlHOWRGOX5vZkt4JEJ7Tm9mc2YyRExRekFWQUhm\n N3JzKXkkX199Nn0wSVFDOSNYKk42T2BEV2goZEVvVQ==\n\n ------END SOURCEDEFENDER FILE------\n\nOnce a file has been encrypted, its extension is changed __.py__ to __.pye__, this is so the module knows its encrypted and can process it accordingly during import.\n\n## Can I still run Python from the command-line?\n\nYes, you can still run scripts from the command-line, but you need to run the sourcedefender library module, and include your encrypted file name as the first argument:\n\n $ python3 -m sourcedefender /home/ubuntu/helloworld.pye\n Hello World!\n $\n\nOr access the module via the usual import system:\n\n $ cd /home/ubuntu\n $ ls\n helloworld.pye\n $ python3\n >>>\n >>> import sourcedefender\n >>> import helloworld\n Hello World!\n >>> exit()\n $\n\n\n# Feedback\n\nIf you wish to get in touch, please email us at , or via [Facebook](https://www.facebook.com/SOURCEdefender/).\n\n## Legal\n\nCopyright (c) 2018-2019 SOURCEdefender. All rights reserved.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. REVERSE ENGINEERING IS STRICTLY PROHIBITED.\n\n\n\n[python-url]: https://www.python.org\n[pepy-url]: https://pepy.tech/project/sourcedefender\n[pypi-url]: https://pypi.org/project/sourcedefender", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.sourcedefender.co.uk", "keywords": "encryption source aes", "license": "License required to encrypt past 30 days", "maintainer": "", "maintainer_email": "", "name": "sourcedefender", "package_url": "https://pypi.org/project/sourcedefender/", "platform": "", "project_url": "https://pypi.org/project/sourcedefender/", "project_urls": { "Homepage": "http://www.sourcedefender.co.uk" }, "release_url": "https://pypi.org/project/sourcedefender/5.0.4/", "requires_dist": null, "requires_python": "!=2.*,>=3.5.4", "summary": "Advanced encryption protecting your python codebase.", "version": "5.0.4" }, "last_serial": 5837194, "releases": { "5.0.2": [ { "comment_text": "", "digests": { "md5": "a4f9a87597c8ce457168adb30d5a0846", "sha256": "4dee909704dfb4ea156a7b58417140eebdac85786ed701250573d0a79c1f6291" }, "downloads": -1, "filename": "sourcedefender-5.0.2.tar.gz", "has_sig": false, "md5_digest": "a4f9a87597c8ce457168adb30d5a0846", "packagetype": "sdist", "python_version": "source", "requires_python": "!=2.*,>=3.5.4", "size": 4973214, "upload_time": "2019-07-20T00:31:46", "url": "https://files.pythonhosted.org/packages/b4/15/c9bfa6cccb964172ab66751f21a5c018f3299a80e6f955d4439f84b11b83/sourcedefender-5.0.2.tar.gz" } ], "5.0.3": [ { "comment_text": "", "digests": { "md5": "893a5ec0620379325c0f8ff759fc1e5d", "sha256": "b0fd6b47335b657fb132f5e1ab21b65033b7e464b43a17b72ceed332b7190842" }, "downloads": -1, "filename": "sourcedefender-5.0.3.tar.gz", "has_sig": false, "md5_digest": "893a5ec0620379325c0f8ff759fc1e5d", "packagetype": "sdist", "python_version": "source", "requires_python": "!=2.*,>=3.5.4", "size": 4973147, "upload_time": "2019-08-02T12:54:34", "url": "https://files.pythonhosted.org/packages/6c/59/3127e24a9efb5f05d74c9401dca795cae9e018f6350d509e00d8813b27b6/sourcedefender-5.0.3.tar.gz" } ], "5.0.4": [ { "comment_text": "", "digests": { "md5": "f9772226c2d2686820ddd54bbdfc3842", "sha256": "d8d7a7c44bc98d62f0e094c0288003fdab9c932e0ed2bebf3c6bf9844dd11b6b" }, "downloads": -1, "filename": "sourcedefender-5.0.4.tar.gz", "has_sig": false, "md5_digest": "f9772226c2d2686820ddd54bbdfc3842", "packagetype": "sdist", "python_version": "source", "requires_python": "!=2.*,>=3.5.4", "size": 4946287, "upload_time": "2019-09-16T16:22:36", "url": "https://files.pythonhosted.org/packages/29/51/9b4d937300294e015b7e8d07abcee6eb6fd4de37cc11a172c47bf32a8188/sourcedefender-5.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f9772226c2d2686820ddd54bbdfc3842", "sha256": "d8d7a7c44bc98d62f0e094c0288003fdab9c932e0ed2bebf3c6bf9844dd11b6b" }, "downloads": -1, "filename": "sourcedefender-5.0.4.tar.gz", "has_sig": false, "md5_digest": "f9772226c2d2686820ddd54bbdfc3842", "packagetype": "sdist", "python_version": "source", "requires_python": "!=2.*,>=3.5.4", "size": 4946287, "upload_time": "2019-09-16T16:22:36", "url": "https://files.pythonhosted.org/packages/29/51/9b4d937300294e015b7e8d07abcee6eb6fd4de37cc11a172c47bf32a8188/sourcedefender-5.0.4.tar.gz" } ] }