← Back to search

io.github.daedalus/mcp-pwntools

daedalus Scanned 18d ago

MCP server exposing pwntools 4.15.0 functionality for binary exploitation

B
87.1 / 100

Versions

0.1.0latest
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 40

p8
annotations: none low

Pack an integer into 1 byte. Args: n: Integer to pack (0-255). Returns: Hex string of packed bytes. Example: >>> p8(0x41) '41'

n int
p16
annotations: none low

Pack an integer into 2 bytes. Args: n: Integer to pack (0-65535). endian: 'little' or 'big'. Returns: Hex string of packed bytes. Example: >>> p16(0x4142, endian='little') '4241'

n int endian str
p32
annotations: none low

Pack an integer into 4 bytes. Args: n: Integer to pack. endian: 'little' or 'big'. Returns: Hex string of packed bytes. Example: >>> p32(0x41424344, endian='little') '44434241'

n int endian str
p64
annotations: none low

Pack an integer into 8 bytes. Args: n: Integer to pack. endian: 'little' or 'big'. Returns: Hex string of packed bytes. Example: >>> p64(0x4142434445464748, endian='little') '4847464544434241'

n int endian str
u8
annotations: none low

Unpack 1 byte to integer. Args: data: Hex string of 1 byte. Returns: Unpacked integer. Example: >>> u8('41') 65

data str
u16
annotations: none low

Unpack 2 bytes to integer. Args: data: Hex string of 2 bytes. endian: 'little' or 'big'. Returns: Unpacked integer. Example: >>> u16('4241', endian='little') 16706

data str endian str
u32
annotations: none low

Unpack 4 bytes to integer. Args: data: Hex string of 4 bytes. endian: 'little' or 'big'. Returns: Unpacked integer. Example: >>> u32('44434241', endian='little') 1094795857

data str endian str
u64
annotations: none low

Unpack 8 bytes to integer. Args: data: Hex string of 8 bytes. endian: 'little' or 'big'. Returns: Unpacked integer. Example: >>> u64('4847464544434241', endian='little') 3203391512993874777

data str endian str
asm
annotations: none low

Assemble code to bytes. Args: code: Assembly code. arch: Architecture (i386, amd64, arm, mips, etc.). Uses context if not specified. os: OS (linux, freebsd, etc.). Uses context if not specified. Returns: Hex string of assembled bytes. Example: >>> asm('nop') '90'

os str arch str code str
disasm
annotations: none low

Disassemble bytes to code. Args: data: Hex string to disassemble. arch: Architecture. Uses context if not specified. bits: Bits (32, 64). Uses context if not specified. Returns: Disassembled code. Example: >>> disasm('90') ' 0: 90 nop'

arch str bits int data str
shellcraft
annotations: none low

Generate shellcode. Args: shellcode_type: Type of shellcode (e.g., 'amd64.linux.sh', 'i386.linux.bind', 'setreuid'). arg1: Optional first argument. arg2: Optional second argument. Returns: Assembly code for the shellcode. Example: >>> shellcraft('amd64.linux.sh') ' ...'

arg1 str arg2 str shellcode_type str
shellcraft_setreuid
annotations: none low

Generate setreuid shellcode. Args: uid: UID to set. euid: Effective UID to set. Returns: Assembly code for setreuid. Example: >>> shellcraft_setreuid(0, 0)

uid int euid int
shellcraft_dupsh
annotations: none low

Generate dup shellcode with execve. Args: fd: File descriptor to dup. Returns: Assembly code. Example: >>> shellcraft_dupsh(4)

fd int
hexdump
annotations: none low

Hexdump utility. Args: data: Hex string to dump. begin: Offset to start from. Returns: Formatted hexdump string. Example: >>> hexdump('41424344')

data str begin int
cyclic
annotations: none low

Generate cyclic pattern. Args: length: Length of pattern. n: Alphabet size (default 256). Returns: Cyclic pattern as hex string. Example: >>> cyclic(20) '61616162616163616164616165616166'

n int length int
cyclic_find
annotations: none low

Find offset in cyclic pattern. Args: pattern: Hex string of pattern to find. Returns: Offset of pattern in cyclic. Example: >>> cyclic_find('66616661') 120

pattern str
fit
annotations: none low

Fit data into buffer. Args: data: Dictionary mapping offsets to values. length: Total length of buffer. filler: Hex string for filler bytes. Returns: Fitted buffer as hex string. Example: >>> fit({0: '41424344', 8: '45464748'}) '414243450000000045464748'

data dict filler str length int
enhex
annotations: none low

Encode bytes to hex string. Args: data: Hex string to encode. Returns: Hex string. Example: >>> enhex('41424344') '41424344'

data str
unhex
annotations: none low

Decode hex string to bytes. Args: data: Hex string to decode. Returns: Bytes as hex string. Example: >>> unhex('41424344') '41424344'

data str
flat
annotations: none low

Flatten arguments into bytes. Args: args: List of arguments to flatten (integers or hex strings). endian: Endianness (default from context). sign: Signedness (default from context). Returns: Flattened bytes as hex string. Example: >>> flat([0x41424344, '68656c6c6f']) '44434241000000000000000068656c6c6f'

args list sign bool endian str
context_set
annotations: none low

Set pwntools context. Args: arch: Architecture (i386, amd64, arm, mips, etc.). os: OS (linux, freebsd, etc.). endian: Endianness (little, big). word_size: Word size in bits (32, 64). log_level: Logging level (debug, info, warning, error). Returns: Current context settings. Example: >>> context_set(arch='amd64', os='linux', log_level='debug')

os str arch str endian str log_level str word_size int
context_get
annotations: none low

Get current pwntools context. Returns: Current context settings. Example: >>> context_get() {'arch': 'amd64', 'os': 'linux', ...}

elf_load
annotations: none low

Load an ELF file. Args: path: Path to ELF file. Returns: Dictionary with ELF info (address, symbols, plt, got, etc.). Example: >>> elf_load('/bin/ls') {'address': '0x400000', 'symbols': {...}, ...}

path str
elf_asm
annotations: none low

Assemble code at a specific address in an ELF. Args: path: Path to ELF file. address: Address (hex string like '0x400000'). code: Assembly code. Returns: Success message. Example: >>> elf_asm('/bin/cat', '0x401000', 'ret') 'Assembly applied successfully'

code str path str address str
elf_read
annotations: none low

Read bytes from an ELF at address. Args: path: Path to ELF file. address: Address (hex string like '0x400000'). length: Number of bytes to read. Returns: Bytes as hex string. Example: >>> elf_read('/bin/cat', '0x400000', 16)

path str length int address str
elf_write
annotations: none low

Write bytes to an ELF at address. Args: path: Path to ELF file. address: Address (hex string like '0x400000'). data: Hex string to write. Returns: Success message. Example: >>> elf_write('/bin/cat', '0x401000', '90') 'Write successful'

data str path str address str
process_create
annotations: none low

Create and interact with a process. Args: argv: Command and arguments as list. env: Environment variables dict. stdin: Stdin redirect (PIPE, STDOUT, etc.). stdout: Stdout redirect. stderr: Stderr redirect. timeout: Timeout in seconds. Returns: Process info dict. Example: >>> process_create(['/bin/sh']) {'pid': 1234, 'proc': {...}, 'unique': '...'}

env dict argv list stdin int stderr int stdout int timeout int
remote_connect
annotations: none low

Connect to a remote host. Args: host: Hostname or IP. port: Port number. timeout: Timeout in seconds. Returns: Connection info dict. Example: >>> remote_connect('example.com', 80) {'host': 'example.com', 'port': 80, 'connected': True}

host str port int timeout int
listen
annotations: none low

Create a listening socket. Args: port: Port to listen on (0 for random). bindaddr: Address to bind to. Returns: Listener info dict. Example: >>> listen(8080) {'port': 8080, 'lport': 8080, ...}

port int bindaddr str
tube_send
annotations: none low

Send data through a tube. Note: This is a placeholder - actual tube handling requires state management. Args: data: Hex string to send. tube_type: Type of tube to create. Returns: Status message.

_data str _tube_type str
rop_load
annotations: none low

Load ELF for ROP. Args: path: Path to ELF file. Returns: ROP info dict. Example: >>> rop_load('/bin/ls') {'path': '/bin/ls', 'elf': {...}, 'gadgets_count': ...}

path str
rop_call
annotations: none low

Generate ROP call. Note: Requires an active ROP object. Args: runtime: Runtime/ELF path. func: Function name to call. args: Arguments for the call. Returns: ROP chain as hex string.

_args list _func str _runtime str
dynelf_resolve
annotations: none low

Dynamic ELF resolution. Note: Requires active memory leak. Args: leak_func: Memory leak function. elf_path: Optional ELF path. Returns: Resolution status.

_elf_path str _leak_func str
fmtstr_payload
annotations: none low

Generate format string payload. Args: offset: Offset to format string. writes: Dict of {address: value} to write. nbytes: Number of bytes. Returns: Format string payload as hex string. Example: >>> fmtstr_payload(6, {0x8048000: 0x41424344})

nbytes int offset int writes dict
fmtstr_split
annotations: none low

Split format string writes. Args: writes: Dict of {address: value} to write. nbytes: Number of bytes. Returns: List of format string parts. Example: >>> fmtstr_split({0x8048000: 0x41424344})

nbytes int writes dict
log_debug
annotations: none low

Log debug message. Args: msg: Message to _log. Returns: Success message.

msg str
log_info
annotations: none low

Log info message. Args: msg: Message to _log. Returns: Success message.

msg str
log_success
annotations: none low

Log success message. Args: msg: Message to _log. Returns: Success message.

msg str
log_warn
annotations: none low

Log warning message. Args: msg: Message to _log. Returns: Success message.

msg str
log_error
annotations: none low

Log error message. Args: msg: Message to _log. Returns: Success message.

msg str

Permissions 1

filesystem low
Server uses filesystem capabilities via: os, shutil, tempfile

Scan Findings 86

low
Tool 'p8' has no annotations annotation_checker · 100%
low
Tool 'p16' has no annotations annotation_checker · 100%
low
Tool 'p32' has no annotations annotation_checker · 100%
low
Tool 'p64' has no annotations annotation_checker · 100%
low
Tool 'u8' has no annotations annotation_checker · 100%
low
Tool 'u16' has no annotations annotation_checker · 100%
low
Tool 'u32' has no annotations annotation_checker · 100%
low
Tool 'u64' has no annotations annotation_checker · 100%
low
Tool 'asm' has no annotations annotation_checker · 100%
low
Tool 'disasm' has no annotations annotation_checker · 100%
low
Tool 'shellcraft' has no annotations annotation_checker · 100%
low
Tool 'shellcraft_setreuid' has no annotations annotation_checker · 100%
low
Tool 'shellcraft_dupsh' has no annotations annotation_checker · 100%
low
Tool 'hexdump' has no annotations annotation_checker · 100%
low
Tool 'cyclic' has no annotations annotation_checker · 100%
low
Tool 'cyclic_find' has no annotations annotation_checker · 100%
low
Tool 'fit' has no annotations annotation_checker · 100%
low
Tool 'enhex' has no annotations annotation_checker · 100%
low
Tool 'unhex' has no annotations annotation_checker · 100%
low
Tool 'flat' has no annotations annotation_checker · 100%
low
Tool 'context_set' has no annotations annotation_checker · 100%
low
Tool 'context_get' has no annotations annotation_checker · 100%
low
Tool 'elf_load' has no annotations annotation_checker · 100%
low
Tool 'elf_asm' has no annotations annotation_checker · 100%
low
Tool 'elf_read' has no annotations annotation_checker · 100%
low
Tool 'elf_write' has no annotations annotation_checker · 100%
low
Tool 'process_create' has no annotations annotation_checker · 100%
low
Tool 'remote_connect' has no annotations annotation_checker · 100%
low
Tool 'listen' has no annotations annotation_checker · 100%
low
Tool 'tube_send' has no annotations annotation_checker · 100%
low
Tool 'rop_load' has no annotations annotation_checker · 100%
low
Tool 'rop_call' has no annotations annotation_checker · 100%
low
Tool 'dynelf_resolve' has no annotations annotation_checker · 100%
low
Tool 'fmtstr_payload' has no annotations annotation_checker · 100%
low
Tool 'fmtstr_split' has no annotations annotation_checker · 100%
low
Tool 'log_debug' has no annotations annotation_checker · 100%
low
Tool 'log_info' has no annotations annotation_checker · 100%
low
Tool 'log_success' has no annotations annotation_checker · 100%
low
Tool 'log_warn' has no annotations annotation_checker · 100%
low
Tool 'log_error' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: p8 manifest_parser · 90%
info
Tool: p16 manifest_parser · 90%
info
Tool: p32 manifest_parser · 90%
info
Tool: p64 manifest_parser · 90%
info
Tool: u8 manifest_parser · 90%
info
Tool: u16 manifest_parser · 90%
info
Tool: u32 manifest_parser · 90%
info
Tool: u64 manifest_parser · 90%
info
Tool: asm manifest_parser · 90%
info
Tool: disasm manifest_parser · 90%
info
Tool: shellcraft manifest_parser · 90%
info
Tool: shellcraft_setreuid manifest_parser · 90%
info
Tool: shellcraft_dupsh manifest_parser · 90%
info
Tool: hexdump manifest_parser · 90%
info
Tool: cyclic manifest_parser · 90%
info
Tool: cyclic_find manifest_parser · 90%
info
Tool: fit manifest_parser · 90%
info
Tool: enhex manifest_parser · 90%
info
Tool: unhex manifest_parser · 90%
info
Tool: flat manifest_parser · 90%
info
Tool: context_set manifest_parser · 90%
info
Tool: context_get manifest_parser · 90%
info
Tool: elf_load manifest_parser · 90%
info
Tool: elf_asm manifest_parser · 90%
info
Tool: elf_read manifest_parser · 90%
info
Tool: elf_write manifest_parser · 90%
info
Tool: process_create manifest_parser · 90%
info
Tool: remote_connect manifest_parser · 90%
info
Tool: listen manifest_parser · 90%
info
Tool: tube_send manifest_parser · 90%
info
Tool: rop_load manifest_parser · 90%
info
Tool: rop_call manifest_parser · 90%
info
Tool: dynelf_resolve manifest_parser · 90%
info
Tool: fmtstr_payload manifest_parser · 90%
info
Tool: fmtstr_split manifest_parser · 90%
info
Tool: log_debug manifest_parser · 90%
info
Tool: log_info manifest_parser · 90%
info
Tool: log_success manifest_parser · 90%
info
Tool: log_warn manifest_parser · 90%
info
Tool: log_error manifest_parser · 90%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Permission: filesystem access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%