Blog

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

1:1