sfuzz(1)

πŸ“¦ version 0.7.1, in fedora 43, fedora 44

✨ sfuzz β€” the Simple Fuzzer ✨

okay bestie, sit down, hydrate, and let me tell you about sfuzz(1) πŸ’– β€” like, yes, it's a manual page from the General Commands Manual section, but it's also kind of a whole vibe.


πŸŽ€ NAME πŸŽ€

sfuzz β€” the Simple Fuzzer. that's it. that's the name. she's simple, she's a fuzzer, she's iconic. πŸ’…


🌸 SYNOPSIS 🌸

sfuzz [-ORTUVXdelnqrsu] [-D key=val]...
            [-b testid] [-t timeout] [-L filename]
            -f config [-S host] [-p port]
sfuzz -h
sfuzz -V

no cap, that first line is a LOT of letters and they're all real. the other two are the "just tell me stuff and dip" modes πŸ¦‹


πŸ’œ DESCRIPTION πŸ’œ

so sfuzz is a generic application input permutation generator. which is a fancy way of saying: she takes your config file, she takes your command-line options, and she cooks up huge permutations of patterned data and feeds them into a program's input. that's the whole job. πŸ“

and here's the part that matters: sfuzz's behavior is deterministic, and config file driven. deterministic means she does the same thing every time, which is lowkey the best quality a fuzzer can have, because it makes it easy to reproduce bugs and record the steps to reproduce. you find a bug, you write down what you did, you do it again, same bug. slay. ✨


πŸ¦‹ USAGE πŸ¦‹

here's how she actually operates, bestie: sfuzz parses the file you specified, along with your arguments, and then connects to a network port, sends the data, and listens for a response. πŸ‘‘

the relevant behavior gets reported in standard output and standard error, and optionally into a log file you specified. so you've got receipts in like, three places if you want them. 🌈


πŸ‘‘ OPTIONS πŸ‘‘

one bullet per option, no skips, no merges, we respect every single flag in this house πŸ’–

  • -b Test ID β€” begin fuzzing at a particular permutation (that's the test-case ID). sfuzz will skip tests until it gets to the test you specified. it's giving "start me at chapter 7, i don't need the preamble." πŸ“–
  • -D key=value β€” define a key:value pair. and you can repeat this any number of times. go off, stack them keys. πŸ”‘
  • -d β€” use Unix Datagram sockets. ⚠️ > NOTE: support for this is experimental. it's giving "she's trying her best, be gentle." πŸ™ˆ
  • -e β€” stop fuzzing when an error is detected. without this option, sfuzz will keep on trying and executing test cases anyway. this one's useful when certain types of errors get triggered and you'd rather she hit the brakes. πŸ›‘
  • -f filename β€” the configuration file, which contains the file format to use. this is the main character of the flags, honestly. she's required. πŸ‘‘
  • -h β€” prints help and exits. bye bestie, love you, read the help. 🫢
  • -L filename β€” log to the specified file. if filename doesn't exist, it will be created. otherwise, it will be truncated. 😭 so like, careful, she will absolutely wipe what was there.
  • -l β€” only include 'literal' fuzz strings. no sequences. lowercase l for "literals only," periodt. ✨
  • -n β€” create a new log file ending with .id where id is the test id executed. so every test gets its own lil diary entry. πŸ““
  • -O β€” log to standard output. capital O. not to be confused with her lowercase sister. πŸ’…
  • -p port β€” connect to the port specified at port. πŸ”Œ
  • -q β€” quiet mode (not much information printed to standard out). she's in her silent era. 🀫
  • -R β€” leak connections. capital R. she said "i'm not closing that, and i'm not sorry." πŸ’€
  • -r β€” trim newlines when sending data. goodbye \n, we hardly knew ye. βœ‚οΈ
  • -S hostname β€” the hostname sfuzz will connect to. this can be an IPv4 address, an IPv6 address, or a hostname to be resolved via dns. she contains multitudes. 🌐
  • -s β€” only include 'sequence' fuzz strings. no literals. the exact opposite of -l, and yes, they are one letter apart. iykyk. πŸ™ƒ
  • -T β€” use TCP sockets to connect. reliable queen. πŸ‘‘
  • -t time in ms β€” wait time between test cases, in milli-seconds. give her a lil breather between tests. ⏳
  • -U β€” use UDP sockets to 'connect' (send data). yes, the quotes around 'connect' are doing heavy lifting there, and yes, that's exactly what the page says. πŸ“¨
  • -u β€” use Unix stream sockets to connect. lowercase u this time, bestie, don't mix them up. 🧚
  • -V β€” print version and exit. capital V for Version, capital energy. ⭐
  • -v β€” set output to be VERBOSE. lowercase v for "very chatty." πŸ—£οΈ
  • -X β€” print responses as ascii-hex. for when you want to see the raw bytes in their little hex fit. πŸ”₯

πŸ’€ DIAGNOSTICS πŸ’€

exit status is zero on normal exit, and -1 if there was an error detected. that's the whole vibe check: 0 = we're good, -1 = something went sideways. 😭


🌈 EXAMPLES 🌈

see the README file for examples. that's it. that's the section. she's being mysterious. πŸ¦‹


πŸ™ˆ BUGS πŸ™ˆ

sfuzz strives to be error free. 😀 but if you think you've found a bug, please report it to sfuzz-devel@googlegroups.com. no gatekeeping, just tell her. 🫢


πŸ“œ HISTORY πŸ“œ

sfuzz started in 2009 as a small ascii only fuzzer generator in the same style as easy-fuzz. since then she has acquired several useful functions, including block based fuzzing and some analysis routines. a true glow-up arc. πŸ‘‘


πŸ‘Έ AUTHOR πŸ‘Έ

Copyright Β© 2009-2016 Aaron Conole <apconole@yahoo.com>.

sfuzz and this manual are free software. they come without any warranty, to the extent permitted by applicable law. you can redistribute them and/or modify them under the terms of the 3-Clause BSD license. see LICENSING for more details.

sfuzz's site can be found at http://github.com/orgcandman/Simple-Fuzzer 🌐


and that's the whole page, bestie!! πŸŽ€ this one's from sfuzz, dated 2016-02-17, and it lives in section 1 of the manual β€” so if you ever forget any of it, just yell for sfuzz(1) and she'll come running. love u, go fuzz responsibly πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from