unifuzz(1)

πŸ’– unifuzz(1) β€” the Unicode chaos generator, bestie edition πŸ’–

okay so this is unifuzz, a General Commands Manual page, and it's genuinely one of my faves because it exists purely to stress-test your Unicode handling. iconic behavior tbh. πŸŽ€


✨ NAME ✨

unifuzz β€” emit strings designed to test Unicode handling πŸ’…


🌸 SYNOPSIS 🌸

unifuzz ([option flags])

πŸ¦‹ DESCRIPTION πŸ¦‹

so what does unifuzz actually do, you ask? it emits strings designed to test the ability of programs intended to accept Unicode input to handle unexpected input. it's giving chaos on purpose, and we love her for it. πŸ”₯

the stuff it throws at you includes:

  • characters from all Unicode ranges
  • Private Use characters
  • surrogates
  • undefined characters
  • non-characters
  • control characters
  • exotic space characters
  • sequences violating normalization rules
  • unexpected sequences (e.g. a base character from one range followed by a combining character from another range)
  • long sequences of combining characters

and if that wasn't enough drama for one program, it can also generate very long lines, strings containing embedded nulls, and ill-formed UTF-8. 😭


πŸ’… COMMAND LINE FLAGS πŸ’…

  • -b β€” restrict the output to the Basic Multilingual Plane (Plane 0). keeping it local, no plane-hopping. ✈️
  • -g β€” do not emit specific characters.
  • -h β€” print usage information. the "help me bestie" button. 🫢
  • -l β€” emit very long lines. long. LONG. it's giving CVS receipt. 🧾
  • -n β€” emit string with embedded nulls. sneaky little \0 gremlins. πŸ™ˆ
  • -q β€” be quiet. omit commentary. no yapping, just output. 🀫
  • -r <number> β€” set the number of random characters to emit.
  • -S β€” scan ranges β€” emit a character from each range. one from every aisle, a lil sampler platter. πŸ“
  • -s <seed> β€” set the seed for the random number generator.
  • -u β€” emit ill-formed UTF-8. yes it's cursed. yes it's the point. πŸ’€
  • -v β€” print version information.

so here's the tea on the randomness β˜•: the sequence of random characters is determined by a pseudorandom number generator, so the same sequence can be obtained by setting the seed to the same value. if not set on the command line, a seed is chosen based on the time of execution. the seed used is included in the output in a line of the form "Seed = NNNNNN" immediately preceding the random character sequence.

⚠️ lowkey important: note that in order to obtain the same sequence it is necessary to keep the same setting for restriction of output to the BMP. change the -b vibe and the whole sequence changes, no cap. 🌈

πŸ“š REFERENCES πŸ“š

Unicode Standard, version 5.0


πŸ‘‘ AUTHOR πŸ‘‘

Bill Poser billposer@alum.mit.edu


πŸ’œ LICENSE πŸ’œ

GNU General Public License


okay and that's the whole page, bestie!! this was unifuzz(1) from the General Commands Manual, dated April, 2008 β€” go forth and break your Unicode parser, respectfully. periodt. πŸ’–βœ¨πŸŽ€πŸ¦‹