{ "info": { "author": "Roy Ragsdale", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# CTFd Fetch\n\nOften it would be nice to download all the challenges (descriptions/files/etc)\nfrom a CTF so that you have them for future reference, or to have offline, or to\nshare with a team.\n\nThat's all this script does.\n\nSince many CTFs have standardized around [CTFd][] as a platform, we use that as\na starting point.\n\n[ctfd]:https://github.com/CTFd/CTFd\n\n## Caveats\n- **Use this tool considerately**. It makes every attempt to respond sanely, and\n only download things not already downloaded, but make sure you are not abusing\n the good will of a CTF Host/Organizer.\n- This tool primarily uses the JSON response from a CTFd endpoint (`/challs`).\n Any changes to CTFd have the potential to break this tool.\n\n## Quick Start\n\nInstall.\n```\npip3 install ctfdfetch\n```\n\nDownload all the challenges from a CTF into the current folder.\n```\nctfdfetch --server https://ctf.example.com --user hacker\n```\n\nFor more options such as out directory, nested categories, verbosity, etc).\n```\nctfdfetch -h\n```\n\n## Development\n\nDevelopment occurs on `master`. The `release` branch has the version currently\npushed to pypi.\n```\n# get code\ngit clone https://gitlab.com/royragsdale/ctfdfetch.git\ncd ctfdfetch\n\n# setup virtualenv\npython3 -m venv venv3\n. venv3/bin/activate\n\n# install in dev mode\npip install -e .\n```\n\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://gitlab.com/royragsdale/ctfdfetch", "keywords": "ctf", "license": "", "maintainer": "", "maintainer_email": "", "name": "ctfdfetch", "package_url": "https://pypi.org/project/ctfdfetch/", "platform": "", "project_url": "https://pypi.org/project/ctfdfetch/", "project_urls": { "Bug Reports": "https://gitlab.com/royragsdale/ctfdfetch/issues", "Homepage": "https://gitlab.com/royragsdale/ctfdfetch", "Source": "https://gitlab.com/royragsdale/ctfdfetch" }, "release_url": "https://pypi.org/project/ctfdfetch/0.2.0/", "requires_dist": [ "beautifulsoup4", "jinja2", "Markdown", "requests", "tld" ], "requires_python": ">=3", "summary": "Fetch challenges from a CTFd competition", "version": "0.2.0" }, "last_serial": 3744638, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "2bccd63d54ef1b1ebeb43079feee9af6", "sha256": "bd63be2b2d8af816720791c8dc4f992b9b317be2e3ffb3ff89d6623d234d903d" }, "downloads": -1, "filename": "ctfdfetch-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2bccd63d54ef1b1ebeb43079feee9af6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 3811, "upload_time": "2018-04-07T02:19:52", "url": "https://files.pythonhosted.org/packages/f9/49/3a753467b42d4e3941cff2083d88c8ee53eb9871e303a2497e082e856f87/ctfdfetch-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9be5d9a61cd9fb21affba8f1a9d9f2fa", "sha256": "c8c6eff9d45011bddbcf1dfd7fc8eddc4a3b5c145038682ada3687c68214d385" }, "downloads": -1, "filename": "ctfdfetch-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9be5d9a61cd9fb21affba8f1a9d9f2fa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 3811, "upload_time": "2018-04-07T02:19:53", "url": "https://files.pythonhosted.org/packages/14/04/27d5398ae99082427917bc5a8307abd367e70c7d6dd36b58e0087e112bfb/ctfdfetch-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "101f24da685a4a1393e149b1e44c88dd", "sha256": "fa2954f891ab7d3a7d45c3e7c6758e1e1994f6fbad0ad37055092fdce55af4f5" }, "downloads": -1, "filename": "ctfdfetch-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "101f24da685a4a1393e149b1e44c88dd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 7290, "upload_time": "2018-04-08T01:32:11", "url": "https://files.pythonhosted.org/packages/d1/bb/7c320095e05a2621b393191ef12e6353fe6c867d403f9a3e4896523d5c5d/ctfdfetch-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "074ff1840bf3b7509be9203068a4ae38", "sha256": "2043bb5a0072e52557a5a76dc4a464026e0b6d6206ada664de9fe8e2046b4efb" }, "downloads": -1, "filename": "ctfdfetch-0.2.0.tar.gz", "has_sig": false, "md5_digest": "074ff1840bf3b7509be9203068a4ae38", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5780, "upload_time": "2018-04-08T01:32:12", "url": "https://files.pythonhosted.org/packages/db/53/b39aa788735e612dfe756b614f81ec57a391d7c69ba64b5e21c26a7e764c/ctfdfetch-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "101f24da685a4a1393e149b1e44c88dd", "sha256": "fa2954f891ab7d3a7d45c3e7c6758e1e1994f6fbad0ad37055092fdce55af4f5" }, "downloads": -1, "filename": "ctfdfetch-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "101f24da685a4a1393e149b1e44c88dd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 7290, "upload_time": "2018-04-08T01:32:11", "url": "https://files.pythonhosted.org/packages/d1/bb/7c320095e05a2621b393191ef12e6353fe6c867d403f9a3e4896523d5c5d/ctfdfetch-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "074ff1840bf3b7509be9203068a4ae38", "sha256": "2043bb5a0072e52557a5a76dc4a464026e0b6d6206ada664de9fe8e2046b4efb" }, "downloads": -1, "filename": "ctfdfetch-0.2.0.tar.gz", "has_sig": false, "md5_digest": "074ff1840bf3b7509be9203068a4ae38", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5780, "upload_time": "2018-04-08T01:32:12", "url": "https://files.pythonhosted.org/packages/db/53/b39aa788735e612dfe756b614f81ec57a391d7c69ba64b5e21c26a7e764c/ctfdfetch-0.2.0.tar.gz" } ] }