Top Related Projects
CTFs as you need them
A curated list of CTF frameworks, libraries, resources and softwares
CTF framework and exploit development library
Quick Overview
CTF-tools is a collection of security-related utilities for Capture The Flag (CTF) competitions. It provides a curated set of tools commonly used in CTFs, along with installation scripts and management features. This repository aims to simplify the process of setting up and maintaining a CTF toolset.
Pros
- Comprehensive collection of popular CTF tools
- Easy installation and management of tools
- Supports multiple operating systems (Linux, macOS)
- Regular updates and community contributions
Cons
- Some tools may be outdated or no longer maintained
- Installation process can be time-consuming for all tools
- Potential conflicts with existing system packages
- Limited documentation for individual tools
Getting Started
To get started with ctf-tools, follow these steps:
# Clone the repository
git clone https://github.com/zardus/ctf-tools.git
cd ctf-tools
# Install a tool (e.g., pwntools)
./ctf-tools-pip install pwntools
# List all available tools
./ctf-tools-pip list
# Update all installed tools
./ctf-tools-pip update
# Remove a tool
./ctf-tools-pip uninstall <tool-name>
Note: Make sure you have the necessary dependencies installed on your system before using ctf-tools. Refer to the repository's README for more detailed instructions and system-specific requirements.
Competitor Comparisons
CTFs as you need them
Pros of CTFd
- Complete CTF platform with web interface for hosting competitions
- Actively maintained with regular updates and a large community
- Scalable and customizable with plugin support
Cons of CTFd
- Focused on hosting CTFs rather than providing individual tools
- Steeper learning curve for setup and configuration
- Requires more resources to run compared to standalone tools
Code Comparison
CTFd (Python):
@challenges.route('/challenges', methods=['GET'])
@during_ctf_time_only
@require_verified_emails
def challenges_view():
infos = get_infos()
errors = get_errors()
return render_template('challenges.html', infos=infos, errors=errors)
ctf-tools (Bash):
#!/bin/bash
set -eu -o pipefail
if [[ $# -lt 1 ]]; then
echo "Usage: $0 <tool>"
exit 1
fi
CTFd is a full-featured CTF platform written in Python, while ctf-tools is a collection of scripts to install and manage individual CTF tools. CTFd provides a web interface and comprehensive competition management, whereas ctf-tools focuses on tool installation and management for CTF participants.
A curated list of CTF frameworks, libraries, resources and softwares
Pros of awesome-ctf
- More comprehensive list of CTF resources, including tools, websites, and learning materials
- Better organized into categories, making it easier to find specific types of tools
- Regularly updated with new resources and community contributions
Cons of awesome-ctf
- Lacks installation scripts or automated setup for tools
- Doesn't provide version information or compatibility details for listed tools
- Less focus on practical tool usage and more on resource aggregation
Code comparison
awesome-ctf:
## Forensics
*Tools used for solving Forensics challenges*
- [Aircrack-Ng](http://www.aircrack-ng.org/) - Crack 802.11 WEP and WPA-PSK keys
- [Audacity](http://sourceforge.net/projects/audacity/) - Analyze sound files (mp3, m4a, whatever)
ctf-tools:
#!/bin/bash -e
git clone https://github.com/devttys0/binwalk.git
cd binwalk
sudo python setup.py install
sudo apt-get install squashfs-tools
The code snippets highlight the difference in approach: awesome-ctf provides a curated list of tools with brief descriptions, while ctf-tools focuses on installation scripts for specific tools.
CTF framework and exploit development library
Pros of pwntools
- Comprehensive Python library specifically designed for exploit development and CTF challenges
- Extensive documentation and active community support
- Seamless integration with other Python libraries and tools
Cons of pwntools
- Steeper learning curve for beginners compared to ctf-tools
- Focused primarily on binary exploitation, may not cover all CTF categories
Code Comparison
pwntools:
from pwn import *
r = remote('example.com', 1337)
r.sendline(b'Hello, World!')
response = r.recvline()
log.info(f'Received: {response.decode()}')
ctf-tools:
# No direct code comparison available
# ctf-tools is a collection of installation scripts
./ctf-tools/bin/manage-tools install pwntools
Summary
pwntools is a powerful Python library for exploit development and CTF challenges, offering comprehensive features and extensive documentation. However, it has a steeper learning curve and focuses primarily on binary exploitation. ctf-tools, on the other hand, is a collection of installation scripts for various CTF tools, including pwntools, providing a broader range of utilities but lacking the direct coding capabilities of pwntools.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
ctf-tools
This is a Nix flake packaging various security research tools. Of course, this isn't a hard problem, but it's really nice to have them in one place that's easily deployable to new machines and so forth. CI evaluates the catalog and builds the repository-packaged x86_64 tools every day, so breakage should be caught quickly.
The following tools are included. The first table lists tools packaged in this repo (under nix/pkgs/); the second lists tools taken from nixpkgs.
NIX??????
Long-time ctf-tools users might be surprised by this development, but it is a good development. Nix provides isolated packaging and can be deployed into a dev/hack environment, locally into a user's home directory, or globally system/container-wide. It also happily installs alongside your normal OS and package manager (e.g., ubuntu and apt) with zero interference. Trust me, I was as skeptical as you are for years, but it is the way.
Packaged in this repo
| Category | Tool | Description |
|---|---|---|
| binary | angr | Next-generation binary analysis engine from Shellphish. |
| binary | angr-management | A GUI reverse engineering and decompilation tool. |
| binary | beef | |
| binary | crosstool | |
| binary | cross2 | A set of cross-compilation tools from a Japanese book on C. |
| binary | decomp2dbg | |
| binary | deepmage | Terminal hex editor for bit-level and non-octet-oriented data. |
| binary | elfparser | |
| binary | evilize | |
| binary | forkever | Debugger with fork-based checkpoints for exploit development. |
| binary | ida | Decompilation and reversing tool (proprietary: you download it yourself â drop the Hex-Rays tarball in ~/Downloads, or set IDA_HOME to an unpacked install). |
| binary | ida-pro-mcp | MCP server that drives IDA Pro (headless via idalib, or attached to a running IDA; set up with ida --activate-idalib). |
| binary | kuna | An agent-first decompiler in Rust, originally ported from Ghidra's decompiler. |
| binary | manticore | |
| binary | patchkit | Python toolkit for patching ELF binaries. |
| binary | preeny | |
| binary | pwndbg | |
| binary | pwnsh | |
| binary | qiling | A dynamic binary instrumentation framework. Entry point is qltool. |
| binary | qira | |
| binary | reko | General-purpose machine-code decompiler. Entry point is reko. |
| binary | shellnoob | |
| binary | taintgrind | tnt_translate: expr2vbits_Unop). |
| binary | villoc | |
| binary | xrop | |
| mobile | frick | Interactive debugger built on Frida. |
| forensics | firmware-mod-kit | |
| forensics | origami-pdf | Ruby framework and command-line tools for parsing and manipulating PDF files. |
| forensics | peepdf | |
| forensics | scrdec18 | |
| forensics | volatility | |
| crypto | codext | |
| crypto | cribdrag | |
| crypto | fastcoll | |
| crypto | foresight | |
| crypto | featherduster | |
| crypto | galois | |
| crypto | hashpump-partialhash | Hashpump, supporting partially-unknown hashes. |
| crypto | libc-database | libc-database-get all once to populate the database. |
| crypto | nonce-disrespect | |
| crypto | pemcrack | |
| crypto | reveng | |
| crypto | rsactftool | |
| crypto | ssh_decoder | |
| crypto | yafu | |
| web | burpsuite | Web proxy to do naughty web stuff. |
| web | subbrute | |
| web | webgrep | grep for Web pages, with JS deobfuscation, CSS unminifying and OCR on images. |
| stego | steganabara | |
| stego | stegano-tools | |
| stego | stegdetect | |
| stego | stegosaurus | |
| misc | jdgui | |
| misc | python2 | |
| misc | social-analyzer | |
| misc | veles | |
| misc | xspy | |
| game | df |
From nixpkgs
| Category | Tool | Description |
|---|---|---|
| binary | aflplusplus | Modern coverage-guided fuzzer. |
| binary | checksec | Reports executable hardening features. |
| binary | elfkickers | Utilities for manipulating ELF files. |
| binary | gdb | GDB with Python 3 scripting and support for many targets. |
| binary | gef | Enhanced environment for GDB. |
| binary | ghidra | Open-source reverse engineering and decompilation tool. |
| binary | grap | Defines and matches graph patterns in binaries. |
| binary | honggfuzz | General-purpose security-oriented fuzzer. |
| binary | imhex | Extensible graphical hex editor. |
| binary | one_gadget | Finds one-shot code-execution gadgets in libc. |
| binary | poke | Extensible editor for structured binary data. |
| binary | pwninit | Automates preparing binary-exploitation challenges. |
| binary | pwntools | Python framework and utilities for exploit development. |
| binary | qemu | Full-system and user-mode machine emulator. |
| binary | radare2 | Reverse-engineering framework and command-line toolkit. |
| binary | rappel | Linux assembly REPL. |
| binary | rizin | Reverse-engineering framework forked from radare2. |
| binary | ropper | ROP gadget finder and binary analysis utility. |
| binary | rp++ | Fast ROP gadget finder. |
| binary | rr | Record-and-replay debugger. |
| binary | seccomp-tools | Utilities for seccomp analysis. |
| binary | upx | Executable packer and unpacker. |
| binary | valgrind | Dynamic instrumentation framework and debugging tools. |
| binary | wcc | Witchcraft Compiler Collection for binary analysis. |
| mobile | apktool | Decodes and rebuilds Android APK resources. |
| mobile | dex2jar | Tools for Android DEX and Java class files. |
| mobile | frida-tools | Command-line tools for Frida dynamic instrumentation. |
| mobile | jadx | Dex-to-Java decompiler with CLI and GUI frontends. |
| forensics | autopsy | Graphical digital-forensics platform. |
| forensics | binwalk | Firmware and embedded-file analysis tool. |
| forensics | dislocker | Reads BitLocker-encrypted volumes. |
| forensics | exiftool | Reads and writes file metadata. |
| forensics | foremost | File carver based on headers and footers. |
| forensics | pdf-parser | Inspects objects and streams in PDF files. |
| forensics | sleuthkit | Filesystem and disk-image analysis toolkit. |
| forensics | testdisk | Partition recovery and file undelete tools. |
| forensics | volatility3 | Current memory-forensics framework. |
| forensics | yara | Pattern-matching engine for malware and forensic artifacts. |
| crypto | hash-identifier | Identifies likely hash algorithms. |
| crypto | hashcat | GPU-accelerated password recovery tool. |
| crypto | hydra | Parallel network-login cracker. |
| crypto | john | John the Ripper password cracker. |
| crypto | msieve | Integer factorization library and application. |
| crypto | pkcrack | Classic PKZIP known-plaintext attack. |
| crypto | sage | Mathematics system useful for cryptanalysis and algebra. |
| crypto | xortool | Repeating-key XOR analysis tool. |
| crypto | z3 | SMT theorem prover and constraint solver. |
| networking | bettercap | Network reconnaissance and attack framework. |
| networking | dsniff | Network auditing and traffic-analysis tools. |
| networking | nmap | Network discovery and port scanner. |
| networking | socat | Bidirectional relay for sockets and many other streams. |
| networking | sslsplit | SSL/TLS interception proxy. |
| networking | tshark | Command-line packet analyzer from Wireshark. |
| web | commix | Command-injection discovery and exploitation tool. |
| web | dirb | Web content scanner. |
| web | dirsearch | Web path scanner. |
| web | feroxbuster | Fast recursive content-discovery tool. |
| web | ffuf | Fast web fuzzer. |
| web | mitmproxy | Interactive HTTP interception proxy and Python library. |
| web | nikto | Web-server scanner. |
| web | sqlmap | SQL-injection detection and exploitation engine. |
| web | tor-browser | Tor-enabled browser bundle. |
| web | wfuzz | Web application fuzzer. |
| web | xsstrike | Cross-site scripting detection and exploitation suite. |
| stego | pngtools | Utilities for inspecting PNG files. |
| stego | sonic-visualizer | Audio visualization and analysis application. |
| stego | stegsolve | Image steganography solver. |
| stego | zsteg | Detects data hidden in PNG and BMP images. |
| osint | sherlock | Finds accounts by username across social networks. |
Usage
Every tool is a flake output. To use, do:
# install a tool into your Nix profile
nix profile install github:zardus/ctf-tools#gdb
# run a tool without installing it
nix run github:zardus/ctf-tools#ropper
# run a shell with a tool in it
nix shell github:zardus/ctf-tools#ropper
# list every available tool
nix flake show github:zardus/ctf-tools
A bin/manage-tools wrapper around nix profile is also provided, for the familiar CLI:
# (once) configure Nix + the binary cache
/path/to/ctf-tools/bin/manage-tools setup
manage-tools list # list the available tools
manage-tools install pwntools
manage-tools uninstall gdb
manage-tools search preload
manage-tools list -t # list generated cross-toolchains
manage-tools install all # every catalogued tool
manage-tools install all-toolchains
manage-tools install everything # catalog + toolchains
Tools install into your Nix profile, and uninstalling removes them cleanly.
The three aggregate names install as single profile entries, so Nix shares
common dependencies and does not activate a partial set if a build fails.
manage-tools prints Nix's download/build plan before installing an aggregate.
On ARM, all contains every supported catalog tool; the generated toolchain
aggregates are x86_64-only.
Downloads outside Nix
Package inputs are downloaded by Nix and pinned by SHA-256, including the two
legacy plain-HTTP sources (steganabara and pkcrack's fallback mirror). A
server or network attacker can make those fetches unavailable, but cannot make
Nix accept different bytes under the recorded hash.
The exceptions are:
libc-database-get alldownloads the multi-gigabyte libc corpus into the user's data directory after installation.- IDA itself is downloaded by the user from Hex-Rays. The
idawrapper can unpack that local archive and activate the vendor's bundledidaprowheel; activation tries an offline install first, with PyPI only as a fallback if that wheel declares an unavailable dependency. - Running the
crosstoolpackage'sct-ngdriver directly downloads the sources selected by the user's configuration. The prebuiltcrosstool-ng-*flake outputs instead fetch a hash-pinned source set during the Nix build and compile offline.
Network scanners and clients naturally contact targets when run; that is tool operation, not package installation.
Platform support
The ordinary package set is available on both x86_64-linux and
aarch64-linux. Packages that nixpkgs or their upstream binary releases mark
as unsupported are omitted from the ARM package set instead of making the
whole profile fail to evaluate.
The generated cross2-* and crosstool-ng-* toolchain outputs are x86_64-only.
ARM packages are evaluated by CI, but are not built or uploaded to the
size-limited ctftools Cachix cache; ARM users build repository-packaged tools
locally. Tools forwarded unchanged from nixpkgs can still substitute from
cache.nixos.org on either architecture.
Cross-compiler toolchains (cross2, crosstool)
On x86_64, two of the tools are toolchain builders rather than single programs, so they expose one output per target instead of one output overall. Install only the target you need â each is an independent package.
crosstool is the crosstool-NG ct-ng
driver, and only the driver â unlike the old shell tool, it puts no cross
compilers on your PATH. Installing crosstool gives you ct-ng itself, ready
to build your own toolchain from a config:
nix profile install github:zardus/ctf-tools#crosstool
ct-ng list-samples
The compilers themselves are separate outputs: 77 of crosstool-NG's 146 samples
are prebuilt as crosstool-ng-<sample>, so you can install a ready-made
toolchain (say, arm-none-eabi-gcc) instead of spending an hour building one:
# a bare-metal ARM toolchain: arm-none-eabi-gcc, -gdb, -objdump, ...
nix profile install github:zardus/ctf-tools#crosstool-ng-arm-none-eabi
# a full Linux/musl cross toolchain, with sysroot
nix profile install github:zardus/ctf-tools#crosstool-ng-aarch64-unknown-linux-musl
# see all of them (bare-metal newlib/picolibc plus Linux
# glibc/uClibc/musl, and the mingw-w64 Windows targets)
nix flake show github:zardus/ctf-tools | grep crosstool-ng-
The sample name is the crosstool-NG sample id with any character outside
[a-zA-Z0-9_-] replaced by - (so x86_64-ubuntu16.04-linux-gnu becomes
crosstool-ng-x86_64-ubuntu16-04-linux-gnu).
The other 69 samples that ct-ng list-samples prints have no
crosstool-ng-* output â build them yourself with ct-ng <sample> && ct-ng build, or pin one as a flake output by running
nix/pkgs/crosstool/pin-samples.sh and folding the hash it prints into
nix/pkgs/crosstool/hashes.nix (anything in there is surfaced automatically).
cross2 is the companion toolchain set for the
kozos.jp assembly book â binutils 2.21.1 +
gcc 3.4.6 + newlib 1.20.0 (+ gdb 7.3.1 where it still builds, or just its CPU
simulator, <target>-run, where it does not), for 34
mostly-retro bare-metal targets. Installing cross2 gives you the book's six
"major architecture" toolchains (arm, h8300, i386, mips, powerpc, sh); the other
targets are individual cross2-<target> outputs:
# the major-architecture bundle
nix profile install github:zardus/ctf-tools#cross2
# or just one target, e.g. mmix or vax
nix profile install github:zardus/ctf-tools#cross2-mmix-elf
nix profile install github:zardus/ctf-tools#cross2-vax-netbsdelf
These are large, from-source gcc builds, so install them with the binary cache configured â otherwise Nix will build the whole toolchain locally (tens of minutes to hours each).
Help!
Something not working? I didn't write (almost) any of these tools, but hit up the discord if you're desperate. Maybe some kind soul will help!
Binary cache
CI builds the x86_64 tools packaged in this repo and pushes them to a public Cachix cache, so x86_64 installs download prebuilt binaries instead of compiling.
Trusted Nix users pick this up automatically from the flake's nixConfig; otherwise run cachix use ctftools once (or pass --accept-flake-config).
ARM outputs are deliberately not pushed to this cache. Unchanged tools in the
"From nixpkgs" table use the official cache.nixos.org binary cache and do not
consume space in the ctftools cache. dirsearch is the exception on x86_64:
our setuptools compatibility override produces a distinct output, so CI caches
it alongside the tools packaged in this repository.
Dockerized Tools
You can get the tools packaged in this repo in prebuilt x86_64 containers from dockerhub. For example:
$ echo hi | docker run -i ctftools/taintgrind taintgrind --taint-stdin=yes /bin/cat
The images are generated by CI, which installs the tool into a nixos/nix base with nix profile install.
Adding Tools
To add a tool (say, named toolname):
- If it is already in nixpkgs, add a line to
nix/passthrough.nix. - Otherwise, create
nix/pkgs/toolname/default.nixâ acallPackage-style derivation with its sources pinned by hash â and build it withnix build .#toolname. - Add it to the README.
The flake discovers nix/pkgs/* automatically; the output name is the directory name.
License
The individual tools are all licensed under their own licenses. As for ctf-tools itself, it is licensed under BSD 2-Clause License. If you find it useful, star it on GitHub (https://github.com/zardus/ctf-tools).
Good luck!
See Also
There's a curated list of CTF tools, but without installers, here: https://github.com/apsdehal/aWEsoMe-cTf.
There's a Vagrant config with a lot of the bigger frameworks here: https://github.com/thebarbershopper/epictreasure.
The old apt-only tool list has been fully migrated to Nix outputs.
Useful CTF tools in docker images
Previously, this repository included some scripts that were wrappers around docker pull.
We trust that you can do that yourself :-)
| Category | Source | Tool | Description |
|---|---|---|---|
| binary | docker | panda | Platform for Architecture-Neutral Dynamic Analysis. |
| stego | Docker | stego-toolkit | A docker image with dozens of steg tools. |
Useful CTF Libraries
Previously, this repository included library installers. Because of how bespoke library install preferences are (e.g., unlike a tool, it's not clear if per-library venvs are a desired thing), we've stopped shipping them, and link them here for posterity.
| Category | Source | Tool | Description |
|---|---|---|---|
| binary | Library | capstone | Multi-architecture disassembly framework. |
| binary | Library | keystone | Lightweight multi-architecture assembler framework. |
| binary | Library | lief | Library to Instrument Executable Formats. |
| binary | Library | miasm | Reverse engineering framework in Python. |
| binary | Library | unicorn | Multi-architecture CPU emulator framework. |
| binary | Library | virtualsocket | A nice library to interact with binaries. |
| crypto | Library | cryptanalib3 | The surviving core of featherduster cryptanalysis tool, updated for python3. |
| crypto | Library | python-paddingoracle | Padding oracle attack automation. |
Top Related Projects
CTFs as you need them
A curated list of CTF frameworks, libraries, resources and softwares
CTF framework and exploit development library
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot