{ "info": { "author": "Falldog", "author_email": "falldog7@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Security", "Topic :: Security :: Cryptography", "Topic :: Software Development :: Build Tools" ], "description": "pyconcrete\n==========\n\n|Travis| |AppVeyor| |PyPI Version| |PyPI PyVersion| |PyPI License|\n\nProtect your python script, encrypt .pyc to .pye and decrypt when import\nit\n\n--------------\n\nProtect python script work flow\n-------------------------------\n\n- your_script.py ``import pyconcrete``\n- pyconcrete will hook import module\n- when your script do ``import MODULE``, pyconcrete import hook will\n try to find ``MODULE.pye`` first and then decrypt ``MODULE.pye`` via\n ``_pyconcrete.pyd`` and execute decrypted data (as .pyc content)\n- encrypt & decrypt secret key record in ``_pyconcrete.pyd`` (like DLL\n or SO) the secret key would be hide in binary code, can\u2019t see it\n directly in HEX view\n\nEncryption\n----------\n\n- only support AES 128 bit now\n- encrypt & decrypt by library OpenAES\n\nInstallation\n------------\n\n- need to input your passphrase create secret key for encrypt python\n script.\n- same passphrase will generate the same secret key\n- installation will add ``pyconcrete.pth`` into your ``site-packages``\n for execute ``sitecustomize.py`` under pyconcrete which will\n automatic import pyconcrete\n\npip\n~~~\n\n.. code:: sh\n\n $ pip install pyconcrete\n\n..\n\n If you only execute ``pip install`` will not display any prompt(via\n stdout) from pyconcrete. Installation will be ``blocked`` and\n ``waiting for user input passphrase twice``. You must input\n passphrase for installation continuously.\n\n.. code:: sh\n\n $ pip install pyconcrete --egg --install-option=\"--passphrase=\"\n\n..\n\n pyconcrete installed as egg, if you want to uninstall pyconcrete will\n need to manually delete ``pyconcrete.pth``.\n\nsource\n~~~~~~\n\n- get the pyconcrete source code\n\n.. code:: sh\n\n $ git clone \n\n- install pyconcrete\n\n.. code:: sh\n\n $ python setup.py install\n\nUsage\n-----\n\nFull encrypted\n~~~~~~~~~~~~~~\n\n- convert all of your ``.py`` to ``*.pye``\n\n.. code:: sh\n\n $ pyconcrete-admin.py compile --source= --pye\n $ pyconcrete-admin.py compile --source= --pye\n\n- remove ``*.py`` ``*.pyc`` or copy ``*.pye`` to other folder\n- *main*.py encrypted as *main*.pye, it can\u2019t be executed by normal\n ``python``. You must use ``pyconcrete`` to process the *main*.pye\n script. ``pyconcrete``\\ (*exe*) will be installed in your system path\n (ex: /usr/local/bin)\n\n.. code:: sh\n\n pyconcrete main.pye\n src/*.pye # your libs\n\nPartial encrypted (pyconcrete as lib)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- download pyconcrete source and install by setup.py\n\n.. code:: sh\n\n $ python setup.py install \\\n --install-lib= \\\n --install-scripts=\n\n- import pyconcrete in your main script\n\n - recommendation project layout\n\n .. code:: sh\n\n main.py # import pyconcrete and your lib\n pyconcrete/* # put pyconcrete lib in project root, keep it as original files\n src/*.pye # your libs\n\nTest\n----\n\n- test all case\n\n.. code:: sh\n\n $ ./pyconcrete-admin.py test\n\n- test all case, setup ``TEST_PYE_PERFORMANCE_COUNT`` env to reduce\n testing time\n\n.. code:: sh\n\n $ TEST_PYE_PERFORMANCE_COUNT=1 ./pyconcrete-admin.py test\n\nExample\n-------\n\n`Django with pyconcrete `__\n\nBuilding on Linux\n-----------------\n\nPython 3.7 - fix Ubuntu 14.04 build error\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: bash\n\n x86_64-linux-gnu-gcc: error: unrecognized command line option `-fstack-protector-strong`\n\nReference by `Stackoverflow\nsolution `__\n\\* you should install ``gcc-4.9`` first \\* symlink\n``/usr/bin/x86_64-linux-gnu-gcc`` to ``gcc-4.9`` \\* build pycocnrete\nagain \\* rollback symlink\n\nBuilding on Windows\n-------------------\n\nPython 2.7 - Visual Studio 2008\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nhttps://www.microsoft.com/en-us/download/details.aspx?id=44266\n\n- Open VS2008 Command Prompt\n- ``set DISTUTILS_USE_SDK=1``\n- ``set SET MSSdk=1``\n- create ``distutils.cfg`` and put inside\n ``text [build] compiler=msvc``\n\nPython 3.5, 3.6, 3.7 - Visual Studio 2015\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n`MSVC 2015 Build\nTools `__\n\n`Document `__\n\n- make sure setuptools >= 24.0\n ``sh python -c 'import setuptools; print(setuptools.__version__)'``\n\n- Open VS2015 Build Tools Command Prompt\n- ``set DISTUTILS_USE_SDK=1``\n- ``setenv /x64 /release`` or ``setenv /x86 /release``\n\nReference\n~~~~~~~~~\n\nhttps://matthew-brett.github.io/pydagogue/python_msvc.html\nhttps://github.com/cython/cython/wiki/CythonExtensionsOnWindows\n\nAnnouncement\n------------\n\npyconcrete is an experimental project, there is always a way to decrypt\n.pye files, but pyconcrete just make it harder.\n\n.. |Travis| image:: https://img.shields.io/travis/Falldog/pyconcrete.svg?label=travis\n :target: https://travis-ci.org/Falldog/pyconcrete\n.. |AppVeyor| image:: https://img.shields.io/appveyor/ci/Falldog/pyconcrete.svg?label=appveyor\n :target: https://ci.appveyor.com/project/Falldog/pyconcrete\n.. |PyPI Version| image:: https://img.shields.io/pypi/v/pyconcrete.svg\n :target: https://pypi.python.org/pypi/pyconcrete\n.. |PyPI PyVersion| image:: https://img.shields.io/pypi/pyversions/pyconcrete.svg\n :target: https://pypi.python.org/pypi/pyconcrete\n.. |PyPI License| image:: https://img.shields.io/pypi/l/pyconcrete.svg\n :target: https://pypi.python.org/pypi/pyconcrete", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Falldog/pyconcrete", "keywords": "python source encryption obfuscation", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "pyconcrete", "package_url": "https://pypi.org/project/pyconcrete/", "platform": "", "project_url": "https://pypi.org/project/pyconcrete/", "project_urls": { "Homepage": "https://github.com/Falldog/pyconcrete" }, "release_url": "https://pypi.org/project/pyconcrete/0.12.1/", "requires_dist": null, "requires_python": "", "summary": "Protect your python script, encrypt it as .pye and decrypt when import it", "version": "0.12.1" }, "last_serial": 4275950, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "ce77834e70f858fa3a3e2bb1c1f8bc5d", "sha256": "3f888436ffd94162e1eaf2d447a281de004aa5874699766068e8e01b867d54f6" }, "downloads": -1, "filename": "pyconcrete-0.10.0.tar.gz", "has_sig": false, "md5_digest": "ce77834e70f858fa3a3e2bb1c1f8bc5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23477, "upload_time": "2017-02-05T01:49:52", "url": "https://files.pythonhosted.org/packages/7c/8d/7b5a90a24563d3d67f8c0da617832a7bd9fa716aaa3fc236d8605257a490/pyconcrete-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "9174d51ee7121828a74d2e78c32747de", "sha256": "3b128f9d7c85a9be07346db6140100de6cbebb73e526432ed132f95245a10f18" }, "downloads": -1, "filename": "pyconcrete-0.10.1.tar.gz", "has_sig": false, "md5_digest": "9174d51ee7121828a74d2e78c32747de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39474, "upload_time": "2017-02-05T02:39:22", "url": "https://files.pythonhosted.org/packages/71/ce/3f3692d6833dcaaef13833d87a0d78bf10efab5088c0e0c2d8d11065f132/pyconcrete-0.10.1.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "b557549cec7b921e26ba7db852ff1c58", "sha256": "82cf58e416417139782508609bf3071ba54ac9ebd4305413fe0222ad1b818d6b" }, "downloads": -1, "filename": "pyconcrete-0.10.2.tar.gz", "has_sig": false, "md5_digest": "b557549cec7b921e26ba7db852ff1c58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40436, "upload_time": "2017-02-05T14:30:08", "url": "https://files.pythonhosted.org/packages/77/87/7e91871e0cf39e13c849ab42d29202272670e2b6844035afca5af15587b8/pyconcrete-0.10.2.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "b3c74e380780532902285aa59727b32f", "sha256": "5c4a8bceb91461a5291878a1e7fc500e70d8fc09018fa100c061047cb107065d" }, "downloads": -1, "filename": "pyconcrete-0.11.0.tar.gz", "has_sig": false, "md5_digest": "b3c74e380780532902285aa59727b32f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42876, "upload_time": "2017-07-30T07:44:24", "url": "https://files.pythonhosted.org/packages/16/50/0579cdd2efa6bfbd15ed9ef0f6bdb48f83c0d383619499ced198f8f1554e/pyconcrete-0.11.0.tar.gz" } ], "0.11.1": [ { "comment_text": "", "digests": { "md5": "e53d1246dcb6c17d8be201ab57c8c501", "sha256": "331ab988bb39224709b28d8f2693a3acf1754847f4a847e85dff5d7d941aed64" }, "downloads": -1, "filename": "pyconcrete-0.11.1.tar.gz", "has_sig": false, "md5_digest": "e53d1246dcb6c17d8be201ab57c8c501", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43167, "upload_time": "2017-07-30T16:56:15", "url": "https://files.pythonhosted.org/packages/79/62/d7ab9606ad3dfd235cef8de5fb6f400bf905db75341e3dab5c0e2513159f/pyconcrete-0.11.1.tar.gz" } ], "0.11.3": [ { "comment_text": "", "digests": { "md5": "c05fb1459e7063cccb4ea4a1e45ceadf", "sha256": "ff293eac2c6112e76282afd455d47ed3203af637a4dcd66c45ec800afeadf1e1" }, "downloads": -1, "filename": "pyconcrete-0.11.3.tar.gz", "has_sig": false, "md5_digest": "c05fb1459e7063cccb4ea4a1e45ceadf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44393, "upload_time": "2017-10-06T21:58:35", "url": "https://files.pythonhosted.org/packages/b0/91/0eaf532b79e623fb5fede6bcdc56c043bbe1b5282068465d1ade57219c53/pyconcrete-0.11.3.tar.gz" } ], "0.12.1": [ { "comment_text": "", "digests": { "md5": "6210dda5af3aaa22262ab5830f675e03", "sha256": "91c45408d86f40881a7206f8064148f839d213a84b55aa594a83a00576a716ae" }, "downloads": -1, "filename": "pyconcrete-0.12.1.tar.gz", "has_sig": false, "md5_digest": "6210dda5af3aaa22262ab5830f675e03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46712, "upload_time": "2018-09-15T01:54:46", "url": "https://files.pythonhosted.org/packages/a5/be/2bf8d1edc9a0688d5f9be89495d263566f30b50b368256fc9602685793cd/pyconcrete-0.12.1.tar.gz" } ], "0.12.2.dev1": [ { "comment_text": "", "digests": { "md5": "e4e21618c3c6868bd50b40bf1184317d", "sha256": "4815b68219954477fbb8c000bf3433ae822984a6ac4c65e3cc6189005fe7eb9d" }, "downloads": -1, "filename": "pyconcrete-0.12.2.dev1.tar.gz", "has_sig": false, "md5_digest": "e4e21618c3c6868bd50b40bf1184317d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46980, "upload_time": "2018-09-15T17:56:47", "url": "https://files.pythonhosted.org/packages/45/f4/0144c1a6f02f4d9c0bb5282800c9309a47e68b93d90c96282dbf72a69819/pyconcrete-0.12.2.dev1.tar.gz" } ], "0.12.2.dev2": [ { "comment_text": "", "digests": { "md5": "cd5f52c062e5f6dc1d973d35c2bbdabb", "sha256": "0da2cdbbbc31915da90b305d3d3d427b6cbabdc882fb42932c5ac218b7118e2e" }, "downloads": -1, "filename": "pyconcrete-0.12.2.dev2.tar.gz", "has_sig": false, "md5_digest": "cd5f52c062e5f6dc1d973d35c2bbdabb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47001, "upload_time": "2018-09-15T19:34:44", "url": "https://files.pythonhosted.org/packages/91/cf/188924d6191bf4a6fda38b9d3f96a7454c020c94b68519ed7e1597ea4e34/pyconcrete-0.12.2.dev2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6210dda5af3aaa22262ab5830f675e03", "sha256": "91c45408d86f40881a7206f8064148f839d213a84b55aa594a83a00576a716ae" }, "downloads": -1, "filename": "pyconcrete-0.12.1.tar.gz", "has_sig": false, "md5_digest": "6210dda5af3aaa22262ab5830f675e03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46712, "upload_time": "2018-09-15T01:54:46", "url": "https://files.pythonhosted.org/packages/a5/be/2bf8d1edc9a0688d5f9be89495d263566f30b50b368256fc9602685793cd/pyconcrete-0.12.1.tar.gz" } ] }