pwntools - CTF toolkit
Pwntools is a CTF framework and exploit development library. Written in Python, it is designed for rapid prototyping and development, and intended to make exploit writing as simple as possible.
from pwn import *
context(arch = 'i386', os = 'linux')
r = remote('exploitme.example.com', 31337)
# EXPLOIT CODE GOES HERE
r.send(asm(shellcraft.sh()))
r.interactive()
Documentation
Our documentation is available at docs.pwntools.com
A series of tutorials is also available online
To get you started, we've provided some example solutions for past CTF challenges in our write-ups repository.
Installation
Pwntools is best supported on 64-bit Ubuntu LTS releases (18.04, 20.04, 22.04, and 24.04). Most functionality should work on any Posix-like distribution (Debian, Arch, FreeBSD, OSX, etc.).
Python3 is suggested, but Pwntools still works with Python 2.7. Most of the functionality of pwntools is self-contained and Python-only. You should be able to get running quickly with
sudo apt-get update
sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools
However, some of the features (assembling/disassembling foreign architectures) require non-Python dependencies. For more information, see the complete installation instructions here.
Contribution
See CONTRIBUTING.md
Contact and Community
If you have any questions not worthy of a bug report, join the Discord server at https://discord.gg/96VA2zvjCB
Release files for pwntools 4.15.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pwntools-4.15.0.tar.gz | 5.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pwntools-4.15.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 18.5 MB
Release files / pwntools-4.15.0.tar.gz
| Download URL | pwntools-4.15.0.tar.gz |
|---|---|
| Size | 5.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d99a917298c1ca7241b51bba9ad2212f2af441ef66488059b2426508e9a2a776
|
|
BLAKE2b-256 checksum How to use checksums |
f25c9ae3d94c98b0b038ffd7f09ebdac506d346fe1b964999f71c96c8a904efd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2025.
Transparency logRelease files / pwntools-4.15.0-py2.py3-none-any.whl
| Download URL | pwntools-4.15.0-py2.py3-none-any.whl |
|---|---|
| Size | 12.9 MB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
f5508729b310ef1e959ad324306a0964cb6f2b04a34247484e446f0343eefc5c
|
|
BLAKE2b-256 checksum How to use checksums |
8703b5aab57706d61c65aaf6ed181727e7621c7cf32109b22245ac04f1c76094
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2025.
Transparency log