Blog
Welcome to the Blog.
Nmap Beyond the Basics
2026-01-08
Everyone knows nmap -sV target. But Nmap’s scripting engine (NSE) turns a
port scanner into a full reconnaissance framework.
We look at three scripts that changed how I approach engagements:
http-enum for directory brute-forcing, ssl-heartbleed for quick Heartbleed
checks, and smb-vuln-ms17-010 for EternalBlue detection. Combining these
with --script-args and custom output formats (XML piped into xsltproc)
creates repeatable, auditable scan reports. ... continue
Format String Attacks Demystified
2025-12-14
Format string vulnerabilities happen when user-controlled input ends up as the
first argument to printf(). Instead of printing text, the attacker reads or
writes arbitrary memory.
We demonstrate reading the stack with %08x specifiers, then escalate to an
arbitrary write using %n. The write-what-where primitive turns a seemingly
harmless logging call into full code execution. ... continue
Writing Turbo Pascal in 2025
2025-10-19
Turbo Pascal 7.0 still compiles in under a second on a 486. On DOSBox-X running on modern hardware, it’s instantaneous. The IDE — blue background, yellow text, pull-down menus — is the direct ancestor of the Turbo Vision library that inspired this site’s theme.
I wrote a small unit that reads the RTC via INT 1Ah and formats it as ISO 8601. The entire program, compiled, is 3,248 bytes. Try getting that from a modern toolchain. ... continue
Linux Networking Series, Part 7: Ten Years Later - nftables in Production
2024-10-09
Ten years after nftables entered the Linux landscape, we can finally evaluate it as operators, not just early adopters.
In 2024, nftables has enough production mileage for operator-grade evaluation: distributions default toward nft-based stacks, migration projects have real scar tissue, and incident history is deep enough to separate marketing claims from operational truth. ... continue
Linux Networking Series, Part 6: Outlook to BPF and eBPF
2015-11-19
A decade of Linux networking work with ipchains, iptables, and iproute2 teaches a useful discipline: express policy explicitly, validate behavior with packets, and automate what humans consistently get wrong at 02:00.
By 2015, another shift is clearly visible at the horizon: BPF lineage maturing into eBPF capabilities that promise more programmable networking, richer observability, and tighter integration between policy and runtime behavior. ... continue