'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

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.

As this breakdown explains, the Domain Name System (DNS) turns domain names into IP addresses, acting a bit like a phonebook for the internet.

However, it also supports text records, with fields that are usually used for mundane entries like email authentication data. Each record can hold around 2,000 characters, and they're not validated, which means you can put anything you like inside them.

Apparently. This is all news to me, as I understand the internet as a series of tubes. Props if you got the reference without clicking the link.

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.

(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.

(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?

Читайте на сайте