# Doom Over DNS: uruchomienie klasycznego shootera za pomocą rekordów DNS
Deweloper Adam Rice zrealizował uruchomienie wersji shareware gry Doom wyłącznie za pomocą rekordów DNS TXT w Cloudflare. Gra jest skompresowana do 1964 fragmentów, ładowana za pomocą publicznych zapytań DNS i uruchamiana w PowerShell 7 bez zapisywania pliku WAD na dysk. DLL silnika gry .NET są ładowane bezpośrednio do pamięci. Projekt omija ograniczenia przechowywania plików, używając DNS jako transportu dla danych binarnych.
Instalacja i uruchomienie
Do uruchomienia wymagane jest PowerShell 7 oraz token API Cloudflare z prawami edycji stref DNS.
- Zainstaluj PowerShell 7:
winget install Microsoft.PowerShell - Skonfiguruj dane uwierzytelniające Cloudflare: użyj modułu TXTRecords i polecenia
Set-CFCredential. - Uruchom grę:
\.\Start-DoomOverDNS.ps1 -PrimaryZone 'example.com'
Skrypt automatycznie pobiera dane za pomocą Resolve-DNSName. W darmowej strefie Cloudflare mieści się 185 fragmentów, w Pro/Business/Enterprise — do 3400. Plik WAD wymaga ~1199 fragmentów.
# Przykład uruchomienia z wieloma strefami dla darmowego konta
.\Start-DoomOverDNS.ps1 -Zones @('zone1.com', 'zone2.com', 'zone3.com')
Rozmieszczanie danych w strefach DNS
Projekt dzieli skompresowany WAD na rekordy TXT. Dla darmowych kont potrzebne są kilka domen — moduł rozdziela fragmenty automatycznie. W strefie Pro cała gra mieści się w całości.
Wznawianie pobierania:
- Polecenie
Publish-TXTStripe -Resumesprawdza hashe fragmentów. - Kontynuuje od ostatniego poprawnego bloku, unikając ponownego przesyłania.
Ograniczenia rekordów TXT (RFC 1035) są ignorowane: DNS jest używany jako rozproszone khranilische z globalnym buforowaniem na węzłach edge Cloudflare.
| Typ strefy | Fragmenty | Wystarczy dla Doom |
|----------|-----------|---------------------|
| Free | 185 | Nie (potrzeba 7+ stref) |
| Pro | 3400 | Tak (pełna gra) |
Szczegóły techniczne kompresji i dekompresji
Plik WAD jest kompresowany w celu minimalizacji rozmiaru rekordów TXT. Skrypt PowerShell dekompresuje dane na bieżąco podczas wykonywania. Brak lokalnego przechowywania — wszystkie operacje w pamięci.
Kluczowe komponenty modułu TXTRecords:
Publish-TXTStripe: publikacja fragmentów z obsługą wznawiania.Set-CFCredential: konfiguracja tokena API.- Integracja z
Resolve-DNSNamedla publicznych zapytań.
Projekt demonstruje możliwości DNS do przesyłania dowolnych danych binarnych, omijając typowe ograniczenia protokołu.
Co ważne
- Doom uruchamia się bez plików na dysku: WAD i DLL są ładowane do pamięci z DNS TXT.
- Wymaga ~1199 fragmentów dla WAD; darmowe strefy Cloudflare — 185 fragmentów.
- Obsługa wznawiania pobierania na podstawie hashy fragmentów.
- Używa PowerShell 7 i publicznych zapytań DNS bez niestandardowego serwera.
- Skaluje się na konta Pro: jedna strefa na pełną grę.
— Editorial Team
Brak komentarzy.