'The most boring protocol on the internet is also, quietly, one of the most abusable': Doom has been broken down into 1,964 DNS text records and can be run via a PowerShell script

9 hours ago 8
Shooting Lost Souls in Doom. (Image credit: id Software)

Doom runs on just about everything. From 100 pounds of mouldy potatoes to a pregnancy test, creators have endeavoured to run everyone's favourite demon-blasting fest on all sorts of hardware—but cramming its code inside DNS text records is a new one on me.

That's what Doom Over DNS does, and it's a remarkable bit of lateral thinking from the mind of Adam Rice. Essentially, the entirety of shareware Doom has been split into 1,964 DNS text records that can be stored across a single Cloudflare zone, which in turn is reassembled by a PowerShell script making public DNS queries. Resulting in... well, Doom, as we've come to know and love it.

With an initial goal of storing an encoded movie collection within that text data (I wonder how many records that would take?) the project was pivoted to first Base64-encode a picture of a duck (why not), with a metadata record that would allow a reassembly script to piece it back together.

Duck test successful, the scope of the project was adjusted. Sure, a small .jpg of a duck is easy enough, but a 1 GB .mp4 file? That'd take roughly 670,000 text records. What's needed is something smaller, something easily compressed... something like Doom.

Screenshot from 1993 Doom showing enemies being shot in a room with skulls

(Image credit: id Software)

After using Claude to re-write some of the game code to run from a memory stream rather than on-disk system files (and cutting the audio to keep the file size down) Doom was then compressed into code chunks that would fit inside multiple text records, which were then contained within a single CloudFlare Pro DNS zone.

The script that runs Doom is a neat little 250 lines of standalone PowerShell code, which is capable of resolving all the DNS queries needed to grab Doom's data in 10-20 seconds. It then reassembles everything in memory, loads the assemblies, and launches the game with nothing written to disk.

Doom Enhanced (1993) screenshot - chaingun firing at two floating cacodemons

(Image credit: Id Software)

"DNS is almost 45 years old and it was designed to map hostnames to IP addresses. It is not a file storage system. It was not designed to be a file storage system", says Rice.

"Nobody at the IETF was thinking about it being used as a file storage system when they wrote RFC 1035. Yet here we are. The most boring protocol on the internet is also, quietly, one of the most abusable."

Well, congratulations. Doom has once again been forced to run on something it should not be run on, and we've all learned something about how the internet works. Or how Doom works. Whatever. It ain't half cool though, ey?

Secretlab Titan Evo gaming chair in Royal colouring, on a white background

Andy built his first gaming PC at the tender age of 12, when IDE cables were a thing and high resolution wasn't—and he hasn't stopped since. Now working as a hardware writer for PC Gamer, Andy spends his time jumping around the world attending product launches and trade shows, all the while reviewing every bit of PC gaming hardware he can get his hands on. You name it, if it's interesting hardware he'll write words about it, with opinions and everything.

You must confirm your public display name before commenting

Please logout and then login again, you will then be prompted to enter your display name.

Read Entire Article