Skip to content

Commit 8172757

Browse files
Jonathan D.A. Jewellclaude
andcommitted
fix: Restore original README content
The previous RSR standardization commit accidentally replaced the full README content with a minimal template. This restores the original project documentation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 6604d08 commit 8172757

1 file changed

Lines changed: 315 additions & 54 deletions

File tree

README.adoc

Lines changed: 315 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,337 @@
1-
= resource-record-fluctuator
2-
Jonathan D.A. Jewell <jonathan.jewell@gmail.com>
3-
:toc: macro
4-
:icons: font
5-
:source-highlighter: rouge
6-
:experimental:
7-
:url-github: https://github.com/hyperpolymath/resource-record-fluctuator
8-
:url-gitlab: https://gitlab.com/hyperpolymath/resource-record-fluctuator
9-
:url-bitbucket: https://bitbucket.org/hyperpolymath/resource-record-fluctuator
10-
:url-codeberg: https://codeberg.org/hyperpolymath/resource-record-fluctuator
1+
= [quantum (sic)] DNS Fluctuator
112

12-
DNS resource record testing and mutation
3+
DNS record randomization tool for deprecated HINFO and LOC records. Built with Ada for maximum security and type safety.
134

14-
image:https://img.shields.io/badge/RSR-Certified-gold[RSR Certified]
15-
image:https://img.shields.io/badge/License-AGPL%20v3-blue[License]
5+
== 🎯 Purpose
166

17-
toc::[]
7+
Make your server appear to exist in *quantum superposition* - simultaneously as different hardware in multiple locations!
188

19-
== Overview
9+
*Serious Uses:*
10+
- Honeypot obfuscation (make honeypots appear to move)
11+
- Attack response and deception
12+
- Privacy enhancement for public DNS records
13+
- Security research and education
2014

21-
resource-record-fluctuator is part of the link:https://rhodium.sh[Rhodium Standard] (RSR) ecosystem.
15+
*Amusing Uses:*
16+
- "Quantum Server" demonstrations
17+
- Confuse network reconnaissance tools
18+
- DNS record experiments
2219

23-
Domain: *software-development*
20+
*Why deprecated records?* HINFO and LOC are deprecated per RFC 8482, making them perfect for experimental security techniques without affecting production services.
2421

25-
== Installation
22+
== 📁 Project Structure
2623

27-
[source,bash]
28-
----
29-
# Clone from GitHub (primary)
30-
git clone {url-github}
24+
```
25+
resource-record-fluctuator/
26+
├── hinfo_loc_fluctuator_ada/ ⭐ RECOMMENDED - Production Ada implementation
27+
│ ├── src/ Core Ada modules
28+
│ ├── data/ 68 CPUs, 77 OSes, 52 locations
29+
│ ├── docs/ Detailed use cases
30+
│ ├── Makefile Build system
31+
│ └── README.md Complete documentation
32+
33+
├── hinfo_loc_fluctuator/ ⚠️ Reference Elixir prototype (NOT recommended)
34+
│ └── README.md Why Ada was chosen instead
35+
36+
├── CLAUDE.md Context for Claude Code sessions
37+
├── LICENSE MIT License
38+
└── README.md This file
39+
```
3140

32-
# Or from mirrors
33-
git clone {url-gitlab}
34-
git clone {url-codeberg}
35-
----
41+
== 🚀 Quick Start
3642

37-
== RSR Stack
43+
=== For Users (Ada Implementation)
3844

39-
This project follows RSR conventions:
45+
```bash
46+
= Navigate to Ada implementation
47+
cd hinfo_loc_fluctuator_ada
4048

41-
* ✅ ReScript for frontend/logic
42-
* ✅ Deno for JS runtime
43-
* ✅ WASM for performance-critical code
44-
* ✅ Rust/OCaml/Haskell for systems/proofs
45-
* ✅ Guile/Scheme for configuration
46-
* ❌ No TypeScript
47-
* ❌ No Go
48-
* ❌ No npm
49+
= Build
50+
make
4951

50-
== Mirrors
52+
= Run
53+
./bin/hinfo_loc_fluctuator
54+
```
5155

52-
[cols="1,2"]
53-
|===
54-
| Platform | URL
56+
*Demo Credentials:*
57+
- `admin` / any password (full access)
58+
- `user` / any password (read-only)
59+
- `operator` / any password (local modifications)
5560

56-
| GitHub (primary) | {url-github}
57-
| GitLab | {url-gitlab}
58-
| Bitbucket | {url-bitbucket}
59-
| Codeberg | {url-codeberg}
60-
|===
61+
*⚠️ WARNING: Demo credentials only! Change before production use!*
6162

62-
== License
63+
See [hinfo_loc_fluctuator_ada/README.md](hinfo_loc_fluctuator_ada/README.md) for complete documentation.
6364

64-
Licensed under AGPL-3.0-or-later OR LicenseRef-Palimpsest-0.5.
65+
=== For Developers
6566

66-
See link:LICENSE[LICENSE] for details.
67+
```bash
68+
= Build in debug mode
69+
cd hinfo_loc_fluctuator_ada
70+
make debug
6771

68-
== Contributing
72+
= Build with optimizations (safety checks still enabled!)
73+
make release
6974

70-
See link:CONTRIBUTING.adoc[CONTRIBUTING.adoc].
75+
= Run SPARK formal verification (if SPARK installed)
76+
make verify
7177

72-
== Metadata
78+
= See all options
79+
make help
80+
```
7381

74-
* Domain: software-development
75-
* Framework: RSR (Rhodium Standard Repository)
76-
* Dublin Core: link:.well-known/dc.xml[.well-known/dc.xml]
82+
== ✨ Features
83+
84+
=== Core Features ✅
85+
86+
*Original HINFO/LOC Fluctuation:*
87+
- Type-safe HINFO (CPU + OS) and LOC (geographic) records
88+
- Compile-time bounds checking (latitude, longitude, altitude, TTL)
89+
- Random record generation from data pools (68 CPUs, 77 OSes, 52 locations)
90+
- "Quantum Server" mode (simultaneous HINFO + LOC)
91+
92+
*Security & Access Control:*
93+
- Permission system (None → Read-Only → Modify-Local → Modify-Remote → Admin)
94+
- Session management with 30-minute timeout
95+
- Constant-time password comparison (timing attack prevention)
96+
- Replay attack detection
97+
- Comprehensive audit logging
98+
99+
*Infrastructure:*
100+
- BIND-format zone file writer
101+
- Scheduled auto-fluctuation (Ada tasking)
102+
- INI-style configuration files
103+
- Thread-safe logging system
104+
- Interactive TUI with ANSI colors
105+
106+
*Data:*
107+
- 68 CPU types (Intel, AMD, ARM, historical, fictional)
108+
- 77 operating systems (Linux, BSD, Windows, Unix, fictional)
109+
- 52 geographic locations (data centers, exotic locations, fictional)
110+
111+
=== Enterprise Features ✅ 🆕
112+
113+
*⭐ NEW: Comprehensive DNS Security Platform*
114+
115+
The project has been massively expanded into an enterprise-grade DNS security and infrastructure management platform! See [ENTERPRISE_FEATURES.md](hinfo_loc_fluctuator_ada/docs/ENTERPRISE_FEATURES.md) for full details.
116+
117+
*Extended DNS Records (ALL types):*
118+
- Basic: A, AAAA, PTR, NS, CNAME
119+
- Mail: MX, SPF, DKIM, DMARC
120+
- Security: CAA, TLSA (DANE), SSHFP, APL (CIDR access control)
121+
- Service: SRV, NAPTR
122+
- DNSSEC: DS, DNSKEY, NSEC, NSEC3
123+
- IPv4/IPv6 protocol toggle (Dual-Stack, IPv4-Only, IPv6-Only)
124+
- DNS topology: Standard, Split-Horizon, Primary-Primary, Hidden-Primary
125+
- AXFR (zone transfer) with TSIG authentication
126+
127+
*Firewall Integration (firewalld/iptables/nftables/pf):*
128+
- Time-based maintenance windows with IP restrictions
129+
- *Port rotation* (SSH/services on schedule - maintainers calculate offline)
130+
- Service scheduling (MX, RSS, NNTP with time windows)
131+
- Stateful vs stateless firewall rules
132+
- Port knocking support
133+
- IPv4/IPv6 firewall toggle
134+
- Emergency lockdown/recovery modes
135+
136+
*Security Headers & Obfuscation:*
137+
- Server header obfuscation (Hidden, Obfuscated, Diagnostic modes)
138+
- X-Powered-By hiding
139+
- *Diagnostic mode* (expose real stack only to authorized IPs with secret token)
140+
- All security headers: HSTS, CSP (with nonces), X-Frame-Options, Referrer-Policy, Permissions-Policy
141+
- Experimental: COEP, COOP, CORP, Expect-CT, NEL
142+
- Integration with HINFO for consistent fake stack across DNS+HTTP
143+
144+
*Software-Defined Perimeter (Zero-Trust):*
145+
- CSA SDP architecture implementation
146+
- Single Packet Authorization (SPA) with AES-256-GCM encryption
147+
- Zero-trust access control (default deny all)
148+
- Device posture validation (OS, AV, firewall, encryption, patches)
149+
- Continuous authentication and re-verification
150+
- Micro-segmentation for network isolation
151+
- Session management with automatic firewall cleanup
152+
- Trust levels: Untrusted → Device Verified → User Authenticated → Posture Valid → Full Trust
153+
154+
*Protocol Management (Modern alternatives to SNMP):*
155+
- *NETCONF* (RFC 6241) - Recommended secure management
156+
- *RESTCONF* (RFC 8040) - RESTful API over HTTPS
157+
- *gNMI* - Modern gRPC-based management
158+
- Prometheus/OpenMetrics for metrics export
159+
- SNMP v1/v2c/v3 (with security warnings, disabled by default)
160+
- TLS/mTLS for all management protocols
161+
- Rate limiting and SDP integration
162+
163+
*Master Configuration System:*
164+
- Deployment modes: Development, Staging, Production, Honeypot, Research
165+
- Configuration profiles with validation
166+
- YAML/JSON import/export
167+
- Hot configuration reload
168+
- Emergency configurations (lockdown, recovery, minimal-safe)
169+
- Migration tools and compatibility checking
170+
171+
*Key Enterprise Capabilities:*
172+
1. *SSH port rotation*: Port changes on schedule, maintainers calculate offline
173+
2. *Service scheduling*: Accept mail/RSS/NNTP only during specific windows
174+
3. *Zero-trust SDP*: All ports closed, opened only after authentication
175+
4. *Stack obfuscation*: Consistent fake stack across DNS (HINFO) and HTTP headers
176+
5. *Maintainer diagnostics*: Real stack info with secret token for troubleshooting
177+
178+
=== Not Yet Implemented ❌
179+
180+
- DNS UPDATE (RFC 2136) - framework exists, needs wire format encoding
181+
- TSIG authentication (RFC 2845) - placeholder implementation
182+
- Production crypto (bcrypt/Argon2) - currently uses demo hashes
183+
- SPARK formal verification proofs - code structured for it
184+
185+
== 🛡️ Security
186+
187+
=== Why Ada?
188+
189+
Original conversation:
190+
> *User:* "I'm concerned about security since this modifies DNS infrastructure."
191+
> *Response:* "You're absolutely right. Let's use Ada instead."
192+
193+
*Ada Security Advantages:*
194+
- *No buffer overflows* - memory safety by design
195+
- *Compile-time bounds checking* - `type Latitude_Degrees is delta 0.000001 range -90.0 .. 90.0;`
196+
- *Overflow checking* - always enabled, even in release builds (`-gnato`)
197+
- *Stack checking* - prevents stack overflow (`-fstack-check`)
198+
- *Formal verification* - SPARK can mathematically prove correctness
199+
200+
=== Elixir Prototype?
201+
202+
An initial Elixir prototype exists in `hinfo_loc_fluctuator/` but is *NOT recommended*. See [hinfo_loc_fluctuator/README.md](hinfo_loc_fluctuator/README.md) for why Ada was chosen instead.
203+
204+
TL;DR: DNS is critical infrastructure. Ada's compile-time safety > Elixir's runtime convenience.
205+
206+
== 📖 Use Cases
207+
208+
See [hinfo_loc_fluctuator_ada/docs/USE_CASES.md](hinfo_loc_fluctuator_ada/docs/USE_CASES.md) for detailed scenarios:
209+
210+
1. *Honeypot Obfuscation* - Make honeypots appear to physically move
211+
2. *Incident Response* - Confuse attackers during active response
212+
3. *Security Research* - Teach DNS reconnaissance countermeasures
213+
4. *Privacy Enhancement* - Obscure public server locations
214+
5. *Testing* - Simulate multi-region deployments without cost
215+
6. *Demos* - "Quantum Server" presentations
216+
217+
== 🔧 Technical Details
218+
219+
=== DNS Records
220+
221+
*HINFO (Host Information) - RFC 1035:*
222+
- CPU field: Hardware/architecture
223+
- OS field: Operating system
224+
- Deprecated per RFC 8482 (intentional!)
225+
226+
*LOC (Location) - RFC 1876:*
227+
- Latitude/Longitude in decimal degrees
228+
- Altitude above WGS84 ellipsoid
229+
- Size and precision fields
230+
- Deprecated per RFC 8482 (intentional!)
231+
232+
=== Type Safety Example
233+
234+
```ada
235+
-- Compile-time guarantee: latitude CANNOT be out of range
236+
type Latitude_Degrees is delta 0.000001 range -90.0 .. 90.0;
237+
238+
-- Try to create invalid value:
239+
Bad_Lat : Latitude_Degrees := 100.0; -- COMPILE ERROR!
240+
241+
-- This is impossible in Ada - compiler prevents it
242+
-- Elixir/Python/etc. would need runtime check (can be bypassed)
243+
```
244+
245+
=== Build Modes
246+
247+
```bash
248+
make debug # No optimization, debug symbols, assertions
249+
make release # Optimized, but safety checks STILL ENABLED
250+
make prove # SPARK formal verification mode
251+
```
252+
253+
*Security note:* Overflow checking (`-gnato`) and stack checking (`-fstack-check`) are ALWAYS enabled, even in release builds. This is non-negotiable for DNS security.
254+
255+
== 📋 Roadmap
256+
257+
=== ✅ Completed (Phase 1-3)
258+
- Core DNS types and validation
259+
- Authentication and authorization
260+
- Randomization engine with CSV parser
261+
- Interactive TUI
262+
- Zone file writer
263+
- Logging and configuration
264+
- Scheduled fluctuation
265+
- Comprehensive documentation
266+
267+
=== 🚧 In Progress (Phase 4)
268+
- DNS UPDATE wire format encoding
269+
- TSIG authentication implementation
270+
- Production password hashing
271+
272+
=== 📅 Planned (Phase 5)
273+
- SPARK formal verification proofs
274+
- Unit test suite
275+
- Ncurses-based enhanced TUI
276+
- API/webhook triggers
277+
- Security audit
278+
279+
== ⚖️ Legal & Ethical
280+
281+
*Authorized Use Only:*
282+
- Authorized penetration testing
283+
- Your own infrastructure
284+
- Research networks and labs
285+
- Honeypot deployments
286+
- Educational demonstrations
287+
288+
*Do NOT Use For:*
289+
- Unauthorized DNS modification
290+
- Defrauding users about service location
291+
- Violating DNS provider ToS
292+
- Compliance violations (GDPR, HIPAA, etc.)
293+
294+
*Always:*
295+
- Obtain proper authorization
296+
- Document your use
297+
- Comply with local laws
298+
- Consider ethical implications
299+
300+
== 📄 License
301+
302+
MIT License - see [LICENSE](LICENSE) file.
303+
304+
*Additional Security Disclaimer:* This software modifies DNS infrastructure. Use only with proper authorization. Demo credentials and simplified crypto MUST be replaced for production use.
305+
306+
== 🙏 Acknowledgments
307+
308+
- RFCs 1034, 1035, 1876, 2136, 2845, 8482
309+
- Ada community for security-focused design
310+
- GNAT compiler team
311+
- Users who prioritize security over convenience
312+
313+
== 📞 Contact
314+
315+
[Add your contact information or GitHub profile]
316+
317+
---
318+
319+
== Fun Example
320+
321+
```bash
322+
$ dig quantum.example.com HINFO
323+
quantum.example.com. 300 IN HINFO "Intel-Xeon" "Ubuntu-22.04"
324+
325+
= Wait 30 seconds...
326+
327+
$ dig quantum.example.com HINFO
328+
quantum.example.com. 300 IN HINFO "ARM-Cortex-A72" "Alpine-Linux"
329+
330+
= The server exists in quantum superposition! 🐱⚛️
331+
```
332+
333+
*Remember:* Schrödinger's server is both running AND not running until observed. Our server is both Intel AND ARM until queried!
334+
335+
---
336+
337+
*"With great DNS power comes great type safety responsibility."*

0 commit comments

Comments
 (0)