This is a collection of setup scripts to create an install of 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. To use, do:
# set up the path
/path/to/ctf-tools/manage-tools setup
source ~/.bashrc
# list the available tools
manage-tools list
# install gdb, allowing it to try to sudo install dependencies
manage-tools -s install gdb
# install pwntools, but don't let it sudo install dependencies
manage-tools install pwntools
# uninstall gdb
manage-tools uninstall gdb
# uninstall all tools
manage-tools uninstall all
Where possible, the tools keep the installs very self-contained (i.e., in to tool/ directory), and most uninstalls are just calls to git clean
(NOTE, this is NOT careful; everything under the tool directory, including whatever you were working on, is blown away during an uninstall).
To support python dependencies, however, make sure to create a virtualenv before installing and using tools (i.e., mkvirtualenv ctf
).
Installers for the following tools are included:
Category | Tool | Description |
---|---|---|
binary | afl | State-of-the-art fuzzer. |
binary | checksec | Check binary hardening settings. |
binary | crosstool-ng | Cross-compilers and cross-architecture tools. |
binary | gdb | Up-to-date gdb with python2 bindings. |
binary | peda | Enhanced environment for gdb. |
binary | preeny | A collection of helpful preloads (compiled for many architectures!). |
binary | villoc | Visualization of heap operations. |
binary | qemu | Latest version of qemu! |
binary | pwntools | Useful CTF utilities. |
binary | python-pin | Python bindings for pin. |
binary | radare2 | Some crazy thing crowell likes. |
binary | shellnoob | Shellcode writing helper. |
binary | taintgrind | A valgrind taint analysis tool. |
binary | qira | Parallel, timeless debugger. |
binary | xrop | Gadget finder. |
forensics | binwalk | Firmware (and arbitrary file) analysis tool. |
forensics | firmware-mod-kit | Tools for firmware packing/unpacking. |
forensics | testdisk | Testdisk and photorec for file recovery. |
crypto | cribdrag | Interactive crib dragging tool (for crypto). |
crypto | hashpump | A tool for performing hash length extension attaacks. |
crypto | hashpump-partialhash | Hashpump, supporting partially-unknown hashes. |
crypto | hash-identifier | Simple hash algorithm identifier. |
crypto | littleblackbox | Database of private SSL/SSH keys for embedded devices. |
crypto | pemcrack | SSL PEM file cracker. |
crypto | reveng | CRC finder. |
crypto | sslsplit | SSL/TLS MITM. |
crypto | python-paddingoracle | XOR analysis tool. |
crypto | xortool | XOR analysis tool. |
web | dirs3arch | Web path scanner. |
web | sqlmap | SQL injection automation engine. |
To add a tool (say, named toolname), do the following:
- Create a
toolname
directory. - Create an
install
script. - (optional) if special uninstall steps are reuired, create an
uninstall
script.
The install script will be run with $PWD
being toolname
. It should install the tool into this directory, in as contained a manner as possible.
Ideally, full uninstallation should be possible with a git clean
.
The install script should create a bin
directory and put its executables there.
These executables will be automatically linked into the main bin
directory for the repo.
They could be launched from any directory, so don't make assumptions about the location of $0
!