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. The packages are checked every once in a while, so things should hopefully have a decent chance of working!
The following tools are included. The first table lists tools packaged in this repo (under nix/pkgs/); the second lists tools taken from nixpkgs.
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.
| 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 | elfparser | |
| binary | evilize | |
| 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 | manticore | |
| binary | preeny | |
| binary | pwndbg | |
| binary | pwnsh | |
| binary | qiling | A dynamic binary instrumentation framework. Entry point is qltool. |
| binary | qira | |
| binary | shellnoob | |
| binary | taintgrind | tnt_translate: expr2vbits_Unop). |
| binary | villoc | |
| binary | xrop | |
| forensics | firmware-mod-kit | |
| 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 | ruby1.8 from https://launchpad.net/~brightbox/+archive/ubuntu/ruby-ng to run this. Run with ssh_decoder --help for help, as running it with no arguments causes it to crash. |
| 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 |
| Category | Tool | Description |
|---|---|---|
| binary | elfkickers | A set of utilities for working with ELF files. |
| binary | gdb | Up-to-date gdb with python2 bindings. |
| binary | gef | Enhanced environment for gdb. |
| binary | ghidra | Open-source reverse engineering and decompilation tool. |
| binary | honggfuzz | A general-purpose, easy-to-use fuzzer with interesting analysis options. |
| binary | one_gadget | Magic gadget search for libc. |
| binary | pwninit | Script to automate starting pwning challenges. |
| binary | pwntools | Useful CTF utilities. |
| binary | qemu | Latest version of qemu! |
| binary | rappel | A linux-based assembly REPL. |
| binary | ropper | Another gadget finder. |
| binary | rp++ | Another gadget finder. |
| binary | seccomp-tools | Provides powerful tools for seccomp analysis |
| binary | valgrind | A Dynamic Binary Instrumentation framework with some built-in tools. |
| forensics | pdf-parser | Tool for digging in PDF files |
| forensics | volatility3 | Analyzer for system memory dumps (latest version). |
| crypto | hash-identifier | Simple hash algorithm identifier. |
| crypto | msieve | Msieve is a C library implementing a suite of algorithms to factor large integers. |
| crypto | pkcrack | PkZip encryption cracker. |
| crypto | sslsplit | SSL/TLS MITM. |
| crypto | xortool | XOR analysis tool. |
| web | commix | Command injection and exploitation tool. |
| web | mitmproxy | CLI Web proxy and python library. |
| stego | stegsolve | Image stenography solver. |
| stego | zsteg | detect stegano-hidden data in PNG & BMP. |
| web | tor-browser | Useful when you need to hit a web challenge from different IPs. |
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-toolsA 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 preloadTools install into your Nix profile, and uninstalling removes them cleanly.
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-samplesThe 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/glibc 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-netbsdelfThese 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).
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!
CI builds the tools packaged in this repo and pushes them to a public Cachix cache, so 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).
You can get the tools packaged in this repo in prebuilt containers from dockerhub. For example:
$ echo hi | docker run -i ctftools/taintgrind taintgrind --taint-stdin=yes /bin/catThe images are generated by CI, which installs the tool into a nixos/nix base with nix profile install.
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.
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!
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.
As tools get officially packaged, we switch to just suggesting that you apt install them!
| Category | Source | Tool | Description |
|---|---|---|---|
| binary | apt | aflplusplus | State-of-the-art fuzzer. |
| binary | apt | checksec | Check binary hardening settings. |
| binary | apt | radare2 | Some crazy thing crowell likes. |
| binary | apt | rr | Record and Replay Debugging Framework |
| binary | apt | wcc | The Witchcraft Compiler Collection is a collection of compilation tools to perform binary black magic on the GNU/Linux and other POSIX platforms. |
| forensics | apt | binwalk | Firmware (and arbitrary file) analysis tool. |
| forensics | apt | foremost | File carver. |
| forensics | apt | dislocker | Tool for reading Bitlocker encrypted partitions. |
| forensics | apt | origami-pdf | PDF manipulator. |
| forensics | apt | testdisk | Testdisk and photorec for file recovery. |
| web | apt | dirb | Web path scanner. |
| web | apt | dirsearch | Web path scanner. |
| web | apt | sqlmap | SQL injection automation engine. |
| stego | apt | pngtools | PNG's analysis tool. |
| stego | apt | sonic-visualizer | Audio file visualization. |
| networking | apt | dsniff | Grabs passwords and other data from pcaps/network streams. |
| networking | apt | bettercap | Network shenanigans swiss army knife. |
| misc | apt | z3 | Theorem prover from Microsoft Research. |
| osint | apt | sherlock | Tools for Hunt down social media accounts by username across 400+ social networks . |
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. |
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. |