Doom via DNS : Lancer le shooter classique grâce aux enregistrements DNS
Le développeur Adam Rice a mis en œuvre l'exécution de la version shareware de Doom exclusivement via des enregistrements DNS TXT dans Cloudflare. Le jeu est compressé en 1964 fragments, chargés via des requêtes DNS publiques, et s'exécute dans PowerShell 7 sans écrire le fichier WAD sur disque. Les DLL du moteur de jeu .NET sont chargées directement en mémoire. Le projet contourne les limitations de stockage de fichiers en utilisant DNS comme transport pour les données binaires.
Installation et lancement
Pour le lancer, vous avez besoin de PowerShell 7 et d'un jeton API Cloudflare avec les permissions pour modifier les zones DNS.
- Installez PowerShell 7 :
winget install Microsoft.PowerShell - Configurez les identifiants Cloudflare : utilisez le module TXTRecords et la commande
Set-CFCredential. - Lancez le jeu :
\.\Start-DoomOverDNS.ps1 -PrimaryZone 'example.com'
Le script charge automatiquement les données via Resolve-DNSName. Une zone Cloudflare gratuite contient 185 fragments ; Pro/Business/Enterprise jusqu'à 3400. Le fichier WAD nécessite ~1199 fragments.
# Exemple de lancement avec plusieurs zones pour un compte gratuit
.\Start-DoomOverDNS.ps1 -Zones @('zone1.com', 'zone2.com', 'zone3.com')
Stockage des données dans les zones DNS
Le projet divise le WAD compressé en enregistrements TXT. Pour les comptes gratuits, plusieurs domaines sont nécessaires — le module distribue les fragments automatiquement. Dans une zone Pro, tout le jeu tient.
Reprise du téléchargement :
- La commande
Publish-TXTStripe -Resumevérifie les hachages des fragments. - Continue à partir du dernier bloc valide, évitant la retransmission.
Les limites des enregistrements TXT (RFC 1035) sont ignorées : DNS est utilisé comme stockage distribué avec mise en cache globale sur les nœuds edge de Cloudflare.
| Type de zone | Fragments | Suffisant pour Doom |
|-----------|-----------|-----------------|
| Gratuit | 185 | Non (nécessite 7+ zones) |
| Pro | 3400 | Oui (jeu complet) |
Détails techniques de la compression et de la décompression
Le fichier WAD est compressé pour minimiser les tailles des enregistrements TXT. Le script PowerShell décompresse les données à la volée pendant l'exécution. Pas de stockage local — toutes les opérations en mémoire.
Composants clés du module TXTRecords :
Publish-TXTStripe: publication des fragments avec support de reprise.Set-CFCredential: configuration du jeton API.- Intégration avec
Resolve-DNSNamepour les requêtes publiques.
Le projet démontre les capacités de DNS pour transmettre des données binaires arbitraires, contournant les limitations typiques du protocole.
Points clés
- Doom s'exécute sans fichiers sur disque : WAD et DLLs chargés en mémoire depuis DNS TXT.
- Nécessite ~1199 fragments pour le WAD ; zones Cloudflare gratuites — 185 fragments.
- Supporte la reprise du téléchargement par hachages de fragments.
- Utilise PowerShell 7 et requêtes DNS publiques sans serveur personnalisé.
- Scalable pour les comptes Pro : une zone pour le jeu complet.
— Editorial Team
Aucun commentaire pour le moment.