$ cd ../
DNS Probe — bash

user@devops:~$ cat README.md

DNS Probe

# Description

DNS Probe is a DNS resolver and packet analyzer written from scratch in C++23 with zero external dependencies. It implements the RFC 1035 wire format: name encoding with compression (0xC0 pointers), headers, questions and resource records (A, AAAA, CNAME, MX, NS, SOA, PTR, TXT) with bounds-checked parsing. It includes its own UDP transport with timeout, retries and RTT measurement, a default resolver read from /etc/resolv.conf, reverse lookup via -x, multiple domains per invocation, offline decoding of hex responses with --parse, and a self-test (--selftest) with 10 cases including a real response captured from 8.8.8.8. Standard exit codes (0=answers, 1=NXDOMAIN/no records, 2=error) for script integration. Built with GCC 14 using only the C++23 standard library and POSIX sockets.

# Key features

$ DNS wire format (RFC 1035) implemented from scratch in pure C++23

$ Name compression with 0xC0 pointers and bounds-checked parsing

$ Record types: A, AAAA, MX, NS, CNAME, SOA, PTR and TXT

$ Own UDP transport with timeout, retries and RTT measurement

$ Reverse lookup with -x (PTR over in-addr.arpa)

$ Offline decoding of hex responses with --parse

$ Self-test with 10 cases including a real 8.8.8.8 response

$ Zero dependencies: direct g++ build without CMake

# Gallery

Desktop view
DNS Probe - Desktop view
Mobile view
DNS Probe - Mobile view

# Technologies used

C++23