{ "info": { "author": "Peter \"Cobertos\" Fornari", "author_email": "cobertosrobertos@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Code Generators" ], "description": "
\n\n# bobskater\n\nAn AST based Python obfuscator that robustly mangles names and other obfuscations of Python code\n\n### Current limitations:\n* DOES NOT SUPPORT: Annotations, evals, templated strings, imports of the form import xxx.yyy\n* Very little configuration currently and instead takes a cautious approach in determining what identifiers to mangle. Globals, kwargs, class namespace identifiers, and others are not obfuscated but type of obfuscations should be use selected in the future.\n* It is only tested with Python v3.5 and might not work with other AST versions\n* Scoping for comprehensions are kind of hacky (and basically follows Python 2 comprehension scope leaking methodology)\n\n### Installation\n\n```\npip install bobskater\n```\n\n### Usage\n\n`bobskater` provides a few mechanisms for direct use.\n\n* `obfuscateString(\"\")` obfuscates a string of source code.\n* `obfuscateFile('myfile.py')` will obfuscate an entire file and overwrite the original\n\nBoth take keyword arguments for configuration:\n\n* `removeDocstrings` will remove docstrings by replacing them with `pass` statements (to handle even cases where a function has only a docstring). Defaults to `True`\n* `obfuscateNames` will obfuscate all names except globally scoped variables, kwargs, builtins, and identifiers in a class namespace. Defaults to `True`\n\nThere are no other obfuscations performed than the two mentioned above currently in `bobskater`\n\n#### Example\n\n```\nfrom bobskater import obfuscateString\n\nmyFileContents = open('myfile.py', 'r').read()\n\n#Will obfuscate myFileContents and return it into output. Names will not be mangled, only docstrings will be removed\noutput = obfuscateString(myFileContents, obfuscateNames=False)\n```\n\n### Contributing\n\n##### Testing:\n`pytest` - Runs all the tests\n\n##### Releasing:\nRefer to [the python docs on packaging for clarification](https://packaging.python.org/tutorials/packaging-projects/).\nMake sure you've updated `setup.py`, and have installed `twine`, `setuptools`, and `wheel`\n`python3 setup.py sdist bdist_wheel` - Create a source distribution and a binary wheel distribution into `dist/`\n`twine upload dist/bobskater-x.x.x*` - Upload all `dist/` files to PyPI of a given version\nMake sure to tag the commit you released\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Cobertos/bobskater/", "keywords": "bobskater obfuscator obfuscation minifier mangler python", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "bobskater", "package_url": "https://pypi.org/project/bobskater/", "platform": "", "project_url": "https://pypi.org/project/bobskater/", "project_urls": { "Homepage": "https://github.com/Cobertos/bobskater/" }, "release_url": "https://pypi.org/project/bobskater/0.2.1/", "requires_dist": [ "astunparse" ], "requires_python": "", "summary": "AST based Obfuscator for Python", "version": "0.2.1" }, "last_serial": 5364870, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "87307928683faacb59d8b44e3a37f678", "sha256": "9a44bf8758a682e7f1ab2bde880f74b5d012049bcf159a6e7d2a2730ed666705" }, "downloads": -1, "filename": "bobskater-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "87307928683faacb59d8b44e3a37f678", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8528, "upload_time": "2018-04-25T02:13:34", "url": "https://files.pythonhosted.org/packages/50/88/09cebf6cb3c81a9aeffe3c32cf21c05ec14e9cbc519947f810befd2a869f/bobskater-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "959673807f36fa34d56d34b968fbcc74", "sha256": "0505186146ebab2703882964af6ff506bc2ec79ff781f0037571c9c4267d5e37" }, "downloads": -1, "filename": "bobskater-0.0.1.tar.gz", "has_sig": false, "md5_digest": "959673807f36fa34d56d34b968fbcc74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8075, "upload_time": "2018-04-25T02:13:35", "url": "https://files.pythonhosted.org/packages/0b/9c/08e17626db06b1c84848d7b02a35ade530fede9188875824e9e088f4198f/bobskater-0.0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "90ef4d7dd459c97364dc9a5b982cf769", "sha256": "36ca78f8c6fda0f2e6a7ae57b20bc21c9e7f8849ba6e72c8dff0a5a16e2026f9" }, "downloads": -1, "filename": "bobskater-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "90ef4d7dd459c97364dc9a5b982cf769", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11832, "upload_time": "2018-05-05T03:21:07", "url": "https://files.pythonhosted.org/packages/4d/0d/d6aeb112e386c21711b8f5a36d2f76ef0ba980578bec7fc2594126d750ee/bobskater-0.0.2-py3-none-any.whl" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "0f2885672b740f4f39badf9dd4f0106d", "sha256": "44c283bddadea47956ddd2e5efaa9a42347af5a8e5095d45b7e34437653d6a19" }, "downloads": -1, "filename": "bobskater-0.0.2.tar.gz", "has_sig": false, "md5_digest": "0f2885672b740f4f39badf9dd4f0106d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8521, "upload_time": "2018-05-05T03:21:08", "url": "https://files.pythonhosted.org/packages/08/fe/5da9a24185634eb0dcb96242b3f9bb99d8a14ecc60b80abd08203e4936ac/bobskater-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "e98565d6440560299d7907a4b6578208", "sha256": "2ce45b35da4877f8063a8b05275d502b9de38b8f396d14900cec34f96b9ef9dd" }, "downloads": -1, "filename": "bobskater-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e98565d6440560299d7907a4b6578208", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9682, "upload_time": "2018-05-05T03:29:01", "url": "https://files.pythonhosted.org/packages/ef/f6/16b61fc2b917802669eb9ad9fab7e416eb6a6ae78446bb0d33506c91d3db/bobskater-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b74f41f7e31124b96944af8f718b38a", "sha256": "11f02de6b5cfcfe80ef4fab2f18c33f5888178818db0c879f67d6baf1f1dbb5f" }, "downloads": -1, "filename": "bobskater-0.0.3.tar.gz", "has_sig": false, "md5_digest": "1b74f41f7e31124b96944af8f718b38a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8517, "upload_time": "2018-05-05T03:29:03", "url": "https://files.pythonhosted.org/packages/db/ba/8b501d5573c3b0d50432688b852172be9cf20c901874c263149b4d4c1b65/bobskater-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "d6c18fd277a7d8cc1f4e8a9a4823466f", "sha256": "72e15d98b25d503ed377d2a4b608e99b9ed6c60c48876165982da7096ea1b20c" }, "downloads": -1, "filename": "bobskater-0.0.4.tar.gz", "has_sig": false, "md5_digest": "d6c18fd277a7d8cc1f4e8a9a4823466f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8518, "upload_time": "2018-05-05T03:39:04", "url": "https://files.pythonhosted.org/packages/8b/79/af9ab0d9b2e2069640f744588720f16c4a237e5c2fe2e7a0737c08db7ff6/bobskater-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "8149c5b2051b0bbc52bbdc635fe30307", "sha256": "9bdc65130510a14ae0841c82eaeefe945a5662ae340ced3013647fdc51980a0e" }, "downloads": -1, "filename": "bobskater-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8149c5b2051b0bbc52bbdc635fe30307", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9638, "upload_time": "2018-08-22T04:43:33", "url": "https://files.pythonhosted.org/packages/55/c7/08cba3bf3d47918e9ea77602afc8f4ccef978146a17f6075da4e564f8b0a/bobskater-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd4ffb5104cc478e76c6476ecd66a22d", "sha256": "f311ea6fe0af63d96b7bf84f1f901352507f1160a40ac63973c548dff4c2f651" }, "downloads": -1, "filename": "bobskater-0.1.0.tar.gz", "has_sig": false, "md5_digest": "cd4ffb5104cc478e76c6476ecd66a22d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8691, "upload_time": "2018-08-22T04:43:35", "url": "https://files.pythonhosted.org/packages/50/bd/930c0f623ca07e1eed798bbc7ebf570432118c96c6159d118fb0baf9f004/bobskater-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "46fabb513e2b1b7ca77d957b5cf9256c", "sha256": "cbae3c3c91d247902993140c7cdbcc08354f5d7371afbd84b194914a694f57bc" }, "downloads": -1, "filename": "bobskater-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "46fabb513e2b1b7ca77d957b5cf9256c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10046, "upload_time": "2018-09-08T18:19:36", "url": "https://files.pythonhosted.org/packages/4b/f3/5c23eb7965db8e58b08a65206d53fb909d5210181439b44220a6bf2b98e1/bobskater-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e1d7512aa29654c0dca9b913f751306f", "sha256": "fcca7832ae76835c0cebc3d61631d855602736a4ddf156165e6246977877d1bd" }, "downloads": -1, "filename": "bobskater-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e1d7512aa29654c0dca9b913f751306f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9096, "upload_time": "2018-09-08T18:19:37", "url": "https://files.pythonhosted.org/packages/dc/42/605b1cff66372a5f7e084de139ec76cf1f8f90e5e526a378f324331dc20c/bobskater-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1af036d3d17bc93a55221f217b9fcee1", "sha256": "c274adba22380cd91b7b920c8dd6b7ac9f48b1cbccf5191ba0d4705e76fa9ad5" }, "downloads": -1, "filename": "bobskater-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1af036d3d17bc93a55221f217b9fcee1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11320, "upload_time": "2019-06-06T00:32:42", "url": "https://files.pythonhosted.org/packages/d8/17/228439747409fe93144b076a060d14c125d3198d0d00d73d5d5497856815/bobskater-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b86f47cc987b675f5d8e6888bd9552d", "sha256": "9f9f9c1895e97e3aef05852006180d1cb85889a29728ddfcab236f813e4127af" }, "downloads": -1, "filename": "bobskater-0.2.1.tar.gz", "has_sig": false, "md5_digest": "1b86f47cc987b675f5d8e6888bd9552d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9606, "upload_time": "2019-06-06T00:32:43", "url": "https://files.pythonhosted.org/packages/e9/3c/871961352f5eac15b5da8ee40958c1d40c731d0a676a9af966004f8c306d/bobskater-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1af036d3d17bc93a55221f217b9fcee1", "sha256": "c274adba22380cd91b7b920c8dd6b7ac9f48b1cbccf5191ba0d4705e76fa9ad5" }, "downloads": -1, "filename": "bobskater-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1af036d3d17bc93a55221f217b9fcee1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11320, "upload_time": "2019-06-06T00:32:42", "url": "https://files.pythonhosted.org/packages/d8/17/228439747409fe93144b076a060d14c125d3198d0d00d73d5d5497856815/bobskater-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b86f47cc987b675f5d8e6888bd9552d", "sha256": "9f9f9c1895e97e3aef05852006180d1cb85889a29728ddfcab236f813e4127af" }, "downloads": -1, "filename": "bobskater-0.2.1.tar.gz", "has_sig": false, "md5_digest": "1b86f47cc987b675f5d8e6888bd9552d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9606, "upload_time": "2019-06-06T00:32:43", "url": "https://files.pythonhosted.org/packages/e9/3c/871961352f5eac15b5da8ee40958c1d40c731d0a676a9af966004f8c306d/bobskater-0.2.1.tar.gz" } ] }