ctf-dl


Namectf-dl JSON
Version 0.3.2 PyPI version JSON
download
home_pageNone
SummaryCommand-line tool to download CTF challenges
upload_time2025-10-11 23:36:36
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords ctf ctf-tools
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align="center">
  ctf-dl
</h1>

<h4 align="center">Fast and flexible challenge downloader for all major CTF platforms</h4>

<p align="center">
  <a href="https://pypi.org/project/ctf-dl/"><img src="https://img.shields.io/pypi/v/ctf-dl" alt="PyPI"></a>
  <img src="https://img.shields.io/github/license/bjornmorten/ctf-dl" alt="License">
</p>

<p align="center">
  <a href="#-features">Features</a> •
  <a href="#-installation">Install</a> •
  <a href="#-quickstart">Quickstart</a> •
  <a href="#-examples">Examples</a> •
  <a href="#-license">License</a>
</p>


## 🔧 Features

- 🔽 **Download all challenges** from supported CTFs  
- 🗂️ **Organize challenges** with custom folder structures  
- 🧩 **Format outputs** using Jinja2 templates (Markdown, JSON, etc.)  
- 🎯 **Apply filters** by category, points, or solve status  
- 🌐 **Integrations:** Works with CTFd, rCTF, GZCTF, HTB, EPT, Berg, CryptoHack, pwnable.tw, pwnable.kr and pwnable.xyz via [ctfbridge](https://github.com/bjornmorten/ctfbridge)


## 📦 Installation

Run directly with [uv](https://github.com/astral-sh/uv):

```bash
uvx ctf-dl
```

Or install permanently with pip:

```bash
pip install ctf-dl
```

## 🚀 Quickstart

```bash
ctf-dl https://demo.ctfd.io -u user -p password
```

## 💡 Examples

If the CTF platform requires authentication, provide either:
- `--token YOUR_TOKEN`, or  
- `--username USERNAME --password PASSWORD`  

```bash
# Download all challenges
ctf-dl https://ctf.example.com

# Download to a custom directory
ctf-dl https://ctf.example.com --output /tmp/ctf

# Only download Web and Crypto challenges
ctf-dl https://ctf.example.com --categories Web Crypto

# Overwrite previously downloaded challenges
ctf-dl https://ctf.example.com --update

# Download and zip output
ctf-dl https://ctf.example.com --zip

# Save output as JSON
ctf-dl https://ctf.example.com --output-format json

# List available templates
ctf-dl --list-templates

```

## 📁 Default Output Structure

```
challenges/
├── README.md
├── crypto/
│   ├── rsa-beginner/
│   │   ├── README.md
│   │   └── files/
│   │       ├── chal.py
│   │       └── output.txt
├── web/
│   ├── sql-injection/
│   │   ├── README.md
│   │   └── files/
│   │       └── app.py
```

## 🤝 Contributing

Contributions are welcome! See [ctfbridge](https://github.com/bjornmorten/ctfbridge) regarding platform support, or open an issue or pull request to improve **ctf-dl** itself.

## 🪪 License

MIT License © 2025 [bjornmorten](https://github.com/bjornmorten)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "ctf-dl",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "ctf, ctf-tools",
    "author": null,
    "author_email": "bjornmorten <bjornmdev@proton.me>",
    "download_url": "https://files.pythonhosted.org/packages/dd/9b/8e2f85a0f54d1780b269263f7656afb9cb20e2f6130ba1e419a4f2237067/ctf_dl-0.3.2.tar.gz",
    "platform": null,
    "description": "<h1 align=\"center\">\n  ctf-dl\n</h1>\n\n<h4 align=\"center\">Fast and flexible challenge downloader for all major CTF platforms</h4>\n\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/ctf-dl/\"><img src=\"https://img.shields.io/pypi/v/ctf-dl\" alt=\"PyPI\"></a>\n  <img src=\"https://img.shields.io/github/license/bjornmorten/ctf-dl\" alt=\"License\">\n</p>\n\n<p align=\"center\">\n  <a href=\"#-features\">Features</a> \u2022\n  <a href=\"#-installation\">Install</a> \u2022\n  <a href=\"#-quickstart\">Quickstart</a> \u2022\n  <a href=\"#-examples\">Examples</a> \u2022\n  <a href=\"#-license\">License</a>\n</p>\n\n\n## \ud83d\udd27 Features\n\n- \ud83d\udd3d **Download all challenges** from supported CTFs  \n- \ud83d\uddc2\ufe0f **Organize challenges** with custom folder structures  \n- \ud83e\udde9 **Format outputs** using Jinja2 templates (Markdown, JSON, etc.)  \n- \ud83c\udfaf **Apply filters** by category, points, or solve status  \n- \ud83c\udf10 **Integrations:** Works with CTFd, rCTF, GZCTF, HTB, EPT, Berg, CryptoHack, pwnable.tw, pwnable.kr and pwnable.xyz via [ctfbridge](https://github.com/bjornmorten/ctfbridge)\n\n\n## \ud83d\udce6 Installation\n\nRun directly with [uv](https://github.com/astral-sh/uv):\n\n```bash\nuvx ctf-dl\n```\n\nOr install permanently with pip:\n\n```bash\npip install ctf-dl\n```\n\n## \ud83d\ude80 Quickstart\n\n```bash\nctf-dl https://demo.ctfd.io -u user -p password\n```\n\n## \ud83d\udca1 Examples\n\nIf the CTF platform requires authentication, provide either:\n- `--token YOUR_TOKEN`, or  \n- `--username USERNAME --password PASSWORD`  \n\n```bash\n# Download all challenges\nctf-dl https://ctf.example.com\n\n# Download to a custom directory\nctf-dl https://ctf.example.com --output /tmp/ctf\n\n# Only download Web and Crypto challenges\nctf-dl https://ctf.example.com --categories Web Crypto\n\n# Overwrite previously downloaded challenges\nctf-dl https://ctf.example.com --update\n\n# Download and zip output\nctf-dl https://ctf.example.com --zip\n\n# Save output as JSON\nctf-dl https://ctf.example.com --output-format json\n\n# List available templates\nctf-dl --list-templates\n\n```\n\n## \ud83d\udcc1 Default Output Structure\n\n```\nchallenges/\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 crypto/\n\u2502   \u251c\u2500\u2500 rsa-beginner/\n\u2502   \u2502   \u251c\u2500\u2500 README.md\n\u2502   \u2502   \u2514\u2500\u2500 files/\n\u2502   \u2502       \u251c\u2500\u2500 chal.py\n\u2502   \u2502       \u2514\u2500\u2500 output.txt\n\u251c\u2500\u2500 web/\n\u2502   \u251c\u2500\u2500 sql-injection/\n\u2502   \u2502   \u251c\u2500\u2500 README.md\n\u2502   \u2502   \u2514\u2500\u2500 files/\n\u2502   \u2502       \u2514\u2500\u2500 app.py\n```\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome! See [ctfbridge](https://github.com/bjornmorten/ctfbridge) regarding platform support, or open an issue or pull request to improve **ctf-dl** itself.\n\n## \ud83e\udeaa License\n\nMIT License \u00a9 2025 [bjornmorten](https://github.com/bjornmorten)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Command-line tool to download CTF challenges",
    "version": "0.3.2",
    "project_urls": {
        "Homepage": "https://github.com/bjornmorten/ctf-dl/",
        "Issues": "https://github.com/bjornmorten/ctf-dl/issues",
        "Repository": "https://github.com/bjornmorten/ctf-dl/"
    },
    "split_keywords": [
        "ctf",
        " ctf-tools"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8293b14282adfb4c33e339345c0901680b5e56578fb265ce5944e6e82ab781f2",
                "md5": "0f15d8eb2d2562be3a0d7dc306ff80c2",
                "sha256": "e1f923690739eaeb163c19777e82602791eebdf8003ec44f283e2d219e403b50"
            },
            "downloads": -1,
            "filename": "ctf_dl-0.3.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0f15d8eb2d2562be3a0d7dc306ff80c2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 25910,
            "upload_time": "2025-10-11T23:36:36",
            "upload_time_iso_8601": "2025-10-11T23:36:36.025662Z",
            "url": "https://files.pythonhosted.org/packages/82/93/b14282adfb4c33e339345c0901680b5e56578fb265ce5944e6e82ab781f2/ctf_dl-0.3.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dd9b8e2f85a0f54d1780b269263f7656afb9cb20e2f6130ba1e419a4f2237067",
                "md5": "ca9c2677e9128d715cd75c293d2b8b4a",
                "sha256": "b92458e36ea824fca78049bf3079269911c75056ef69f4e7bd55c34f508a9d39"
            },
            "downloads": -1,
            "filename": "ctf_dl-0.3.2.tar.gz",
            "has_sig": false,
            "md5_digest": "ca9c2677e9128d715cd75c293d2b8b4a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 23937,
            "upload_time": "2025-10-11T23:36:36",
            "upload_time_iso_8601": "2025-10-11T23:36:36.871026Z",
            "url": "https://files.pythonhosted.org/packages/dd/9b/8e2f85a0f54d1780b269263f7656afb9cb20e2f6130ba1e419a4f2237067/ctf_dl-0.3.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-11 23:36:36",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bjornmorten",
    "github_project": "ctf-dl",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "ctf-dl"
}
        
Elapsed time: 1.32183s