SNOWDROP(1)

πŸ’– SNOWDROP πŸ’– (that's section 1 of the General Commands Manual, bestie)

okay so. pull up a chair. we're talking about snowdrop β€” a steganographic text watermarking and watermark recovery system, and yes it's as cool as it sounds. it lives in your terminal as snowdrop and ships as three whole programs. three. icons only.


✨ NAME ✨

sd-eng, sd-engf, sd-c β€” text watermarking and watermark recovery. that's the whole vibe. πŸ¦‹


πŸŽ€ SYNOPSIS πŸŽ€

sd-eng [-6] -i origfile newfile "Recipient" ["Comment"]

sd-eng [-6] -e origfile newfile

sd-eng [-6] -l

literally just those three shapes. memorize them, they're not hard, i believe in you πŸ’…


🌸 DESCRIPTION 🌸

so snowdrop is a steganographic text watermarking and watermark recovery system. which is a fancy way of saying: it hides a secret little signature inside your text and then can dig it back out later. no cap.

it's made up of three programs:

  • sd-eng β€” watermarks normal English text. the everyday queen πŸ‘‘
  • sd-engf β€” watermarks fine quality English text. it gives you higher quality output but encodes less information. tradeoffs, bestie, it's giving ✨aesthetic over data✨
  • sd-c β€” watermarks C code. yes, your source files. yes, it's unhinged and i love it πŸ’€

all three programs operate similarly β€” same parameters, same usage. the watermark gets encoded in using a whole bunch of techniques, like:

  • whitespace reformatting
  • inserting typos
  • word substitutions
  • punctuation changes
  • and for C code specifically: logic reordering, variable name mangling, etc.

the watermark itself is an md5sum, and here's the part that ate: it's retrievable from as little as 5 or 10 lines of the watermarked document. five. lines. 😭 even big changes to a medium sized document shouldn't obscure the watermark, because it's stored redundantly in multiple independent channels. it's everywhere. it's in the walls. 🫢

the three usage modes are:

  1. adding a watermark
  2. checking for the presence of a watermark
  3. listing the contents of your database of watermarks
⚠️ heads up bestie, this one's important: to later check a watermark, you must retain a copy of the original, un-watermarked file. no original, no recovery. periodt.

πŸ’… OPTIONS πŸ’…

  • -i β€” inject a watermark into a file. you gotta hand it the original file, the filename to output the watermarked version to, info about who you intend the watermarked file for, and an optional comment. it's a whole little handshake 🀝
  • -e β€” extract a watermark from a file. it needs the original file and the new file that you suspect bears the watermark. two files, one truth πŸ”
  • -l β€” lists the contents of the watermark database. and plot twist: each of the three programs will have a different list. three programs, three databases, three little worlds 🌈
  • -6 β€” enable 64 bit watermarking. the default is a weak 32 bit watermark. so like… upgrade if you care about yourself πŸ’€

🧚 ENVIRONMENT 🧚

  • SD_SYNONYMS β€” you can point this variable at a customized synonyms file so snowdrop uses your words instead of its words. make it yours, personalize the vibe 🌸

πŸ“ FILES πŸ“

  • ~/.snowdrop/database β€” the database of watermarked files. your little archive of secrets, tucked away in your home directory πŸ’œ

πŸ”₯ SEE ALSO πŸ”₯

  • /usr/share/doc/snowdrop/README.gz β€” explains snowdrop in more depth, its limitations, and how to write additional watermarking modules for other types of files. if you wanna go deeper (and you should), this is the read. go read it. i'll wait πŸŽ€

πŸ‘‘ AUTHOR πŸ‘‘

Michal Zalewski <lcamtuf@coredump.cx> β€” the icon who made all of this happen. we stan 🫢


okay that's the whole page!! πŸ’– this was SNOWDROP(1), straight out of the General Commands Manual (section 1, obviously β€” it's a command, bestie), and ngl there's no version number or date stamped on this one, so consider this your official ✨no-version-no-date✨ sign-off. go watermark something. slay. πŸ’…βœ¨πŸ¦‹

πŸ“¦ where this page comes from