id = "pwntools"
name = "pwntools"
homepage = "https://docs.pwntools.com/"
executables = ["pwn"]
[dotfiles]
paths = [
"~/.pwn.conf",
"[configHome]/pwn.conf",
]
secret = []
[commands]
format = 1
label = "pwn command-line tools"
description = "The cyclic pattern tool and checksec. Other pwn subcommands are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["cyclic"]
label = "Cyclic pattern"
description = "Print a cyclic pattern of a given length, or look up an offset in one."
[[commands.subcommand.source]]
id = "src"
kind = "help"
url = "https://github.com/Gallopsled/pwntools/blob/dev/pwnlib/commandline/cyclic.py"
revision = "2026-10-27"
evidence = """
'cyclic',
help = "Cyclic pattern creator/finder",
'-a', '--alphabet',
help = 'The alphabet to use in the cyclic pattern (defaults to all lower case letters)',
'-n', '--length',
help = 'Size of the unique subsequences (defaults to 4).'
'-l', '-o', '--offset', '--lookup',
help = 'Do a lookup instead printing the alphabet',
'count',
help='Number of characters to print'
"""
[[commands.subcommand.field]]
id = "count"
label = "Length"
description = "Number of characters to print."
type = "integer"
position = 0
sources = ["src"]
[[commands.subcommand.field]]
id = "lookup"
label = "Look up value"
description = "Find the offset of a value (e.g. 0x61616168 or an ASCII subpattern) instead of printing the pattern."
type = "string"
option = ["--lookup", "-l"]
sources = ["src"]
[[commands.subcommand.field]]
id = "length"
label = "Subsequence size"
description = "Size of the unique subsequences (default 4)."
type = "integer"
option = ["--length", "-n"]
sources = ["src"]
[[commands.subcommand.field]]
id = "alphabet"
label = "Alphabet"
description = "Defaults to all lower case letters."
type = "string"
option = ["--alphabet", "-a"]
sources = ["src"]
[[commands.subcommand.task]]
id = "generate"
label = "Generate a pattern"
fields = ["count", "length", "alphabet"]
required = ["count"]
[[commands.subcommand.task]]
id = "find"
label = "Find an offset"
fields = ["lookup", "length", "alphabet"]
required = ["lookup"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["count", "lookup"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["length", "alphabet"]
[[commands.subcommand]]
path = ["checksec"]
label = "Check binary security"
description = "Print the security settings of one or more ELF binaries."
[[commands.subcommand.source]]
id = "src"
kind = "help"
url = "https://github.com/Gallopsled/pwntools/blob/dev/pwnlib/commandline/checksec.py"
revision = "2026-10-27"
evidence = """
'checksec',
help = 'Check binary security settings',
'elf',
help='Files to check'
"""
[[commands.subcommand.field]]
id = "elf"
label = "Binaries"
type = "path"
position = 0
multiple = true
path = { kind = "file", role = "input", must_exist = true }
sources = ["src"]
[[commands.subcommand.task]]
id = "check"
label = "Check binaries"
fields = ["elf"]
required = ["elf"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["elf"]