A breezy, slightly tongue‑in‑cheek look at why setting pointers to NULL right after free (and a few related memory‑management niceties) can save you from nasty use‑after‑free bugs, memory leaks, and the occasional midnight debugging panic.
The sequel to the null‑termination saga, now tackling strcat, strncat, strlcat, and friends—plus a quick table to keep your concatenations from turning into catastrophes.
A light‑hearted reminder that every character buffer deserves a '\0'—otherwise you’re inviting buffer overflows, stray reads, and a lot of debugging grief.
In this delightfully “bad” dive into password hygiene, we scrape millions of leaked passwords for the first dictionary word they contain. The top ten words (love, baby, password…) barely scratch 5% of the total, and a whopping 21k words appear only once. We also compare happy vs. angry vocab. Turns out love trumps f**k by a healthy margin. The takeaway? Stick to random passphrases; dictionary words are a playground for attackers and a source of endless amusement for analysts.
In this delightfully “bad” foray into malware hunting, we ask whether the sheer amount of printable text inside a binary can betray its nefarious nature. By hashing (oops, counting) strings of lengths 2‑6 bytes in ~500 malicious samples versus 200 tidy Windows libraries, we compute “strings‑per‑KB”. The results are modest but tasty: at a 4‑byte cutoff, benign binaries sport roughly 22 % more strings per kilobyte than their shady cousins—a hint that packed or encrypted malware keeps its chatter to a whisper. Short 2‑byte fragments are just random noise, while 5‑ and 6‑byte strings level out, possibly thanks to debug messages. Bottom line? String density offers a cheeky heuristic, but it’s no silver bullet—still fun to poke at, especially when you love sprinkling a dash of Python over binary mysteries.