DOOM Over DNS

(github.com)

268 points by Venn13 days ago

36 comments

  • ktpsns14 hours ago
    To clarify, a good title would be &quot;Loading Doom entirely from DNS records&quot;<p>Neither one plays Doom over DNS nor is the first paragraph in the README correct, because DNS is only abused for storage, not for computing&#x2F;processing&#x2F;executing instructions:<p>&gt; At some point, a reasonable person asked &quot;DNS resolves names to IP addresses, what else can it do?&quot; The answer, apparently, is run DOOM.
    • drob51814 hours ago
      Yup. A better title might be “Author discovers data can be stored in DNS TXT records which were created to store data.”
      • deathanatos11 hours ago
        Data can be stored in A records, too, just less efficiently.<p>(Or AAAA, or CNAME, or…)
      • sta1n4 hours ago
        [dead]
    • akdev1l14 hours ago
      Also we could probably achieve this by using dnsfs and regular doom install<p><a href="https:&#x2F;&#x2F;blog.benjojo.co.uk&#x2F;post&#x2F;dns-filesystem-true-cloud-storage-dnsfs" rel="nofollow">https:&#x2F;&#x2F;blog.benjojo.co.uk&#x2F;post&#x2F;dns-filesystem-true-cloud-st...</a>
    • b11214 hours ago
      You make me wonder if it is possible. All you need to do is to programmatically change bits, and you have compute. Some cache monkeying or somethong.<p>Of course, I imagine it would be incredibly slow.
      • testaccount2813 hours ago
        &gt; All you need to do is to programmatically change bits, and you have compute.<p>all you need is to rapidly push off one foot and land on the other, and you have running.
  • umvi10 hours ago
    &gt; Cloudflare will serve them globally, for free, cached at the edge, to anyone who asks. They are not a file storage system. They were not designed to be a file storage system. Nobody at the IETF was thinking about them being used as a file storage system when they wrote RFC 1035. And yet here we are.<p>Yeah these types of hacker stories kind of bug me. They are sort of in the same vein as &quot;you can eat for free by going to McDonald&#x27;s and eating a pint of ketchup without ordering anything&quot; or &quot;How I drank and showered for a year using public water fountains&quot; . Or put another way &quot;just because you can doesn&#x27;t mean you should&quot;. Trustless societies kind of suck and forcing society to lower trust by abusing trust kind of makes things incrementally suckier (&quot;trust&quot; here being &quot;it&#x27;s on the honor system to not abuse DNS to serve static content&quot;).
    • Wowfunhappy10 hours ago
      Look, if this was a project on using DNS to replace Dropbox or something, I&#x27;d agree with you.<p>But the demo version of Doom just isn&#x27;t that large; Cloudflare will host much larger files than that for free via Cloudflare Pages&#x2F;Workers. This project is clearly meant as a fun proof of concept, not some novel way to host 3 MB for free.
      • montyanne10 hours ago
        I’ve heard rumors that DNS records are also sometimes used in some steganography-type communications. Great way of passing small messages in a ubiquitous and innocuous system, unlikely to be blocked or raise eyebrows by accessing.
        • emmelaich8 hours ago
          A popular use of DNS is for malware to communicate their status. They do this by requesting e.g. &quot;i_am_in_$RANDOM_NUMBER&quot;.badplace.ru.cn.cx.
        • anthk30 minutes ago
          With iodine you can tunnel TCP&#x2F;IP over DNS. Really slow but usable for text web sites, gopher, gemini, irc...<p>gopher -&gt; gopher:&#x2F;&#x2F;magical.fish, gopher:&#x2F;&#x2F;sdf.org...<p>gemini -&gt; gemini:&#x2F;&#x2F;gemi.dev, it has geminipedia, a web to gemini converter reading sites over gemini at great speeds.<p>irc -&gt; servers from <a href="https:&#x2F;&#x2F;bitlbee.org" rel="nofollow">https:&#x2F;&#x2F;bitlbee.org</a> will allow upon connecting to a registered IRC account to several protocols in the server. For instance, XMPP users will appear as IRC users and groupchat can be created as IRC channels. Ditto with Mastodon, Discord...<p>mail&#x2F;usenet -&gt; well, except for big attachments and news binaries (free NNTP servers will just serve text) once you used something like mbsync&#x2F;msmtp to store your IMAP mail locally and send email ondemand (and ditto with Usenet with slrnpull doing the same exact same task for pushing your writtings and pulling down new articles) everything would just work slower, but usable enough as it can be just batch-uploaded&#x2F;downloaded overnight.<p>Iodine it&#x27;s really great for open but paid wifi services behind portals, such as some hotels, airports...<p>It won&#x27;t give you broadband speeds but you can at least chat with people, read some blogs or news at <a href="https:&#x2F;&#x2F;lite.cnn.com" rel="nofollow">https:&#x2F;&#x2F;lite.cnn.com</a> or <a href="https:&#x2F;&#x2F;text.npr.org" rel="nofollow">https:&#x2F;&#x2F;text.npr.org</a> or get some classic from Gutenberg. That&#x27;s better than nothing.
          • roygbiv212 minutes ago
            I&#x27;ve never had great luck getting iodine running anywhere. The one and only success I&#x27;ve had was on an aircraft where, after numerous attempts at different things, the best I could do is connect to an SMTP server and send an email manually.
        • harrall6 hours ago
          If you consider information theory, when something has states, you can store data in any system that has multiple states, which means you can store data in any system.<p>The placement of coffee cups on a table can be used to encode data.<p>At that point, only your audience needs to know that data is there.
        • oooyay9 hours ago
          I mean, kind of, but they&#x27;re able to be cached easily and inexpensively in a way that kind of defies the intrinsic values behind steganography.
          • emmelaich8 hours ago
            Not cache-able if no one has seen them before.
      • israrkhan7 hours ago
        it can be used as a novel way to host files.<p>Airplanes and many other captive portals will allow DNS traffic, but restrict everything else. Such things can be used to get free internet in such environments. It is indeed an abuse of protocol, and future protocols are going to make life difficult for everyone to prevent such abuse.
  • LetsGetTechnicl14 hours ago
    This novel form of data storage reminds of me of this classic YouTube video, Harder Drive: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=JcJSW7Rprio" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=JcJSW7Rprio</a>
    • Waterluvian11 hours ago
      Harder Drives is such a great watch. It&#x27;s also the source of a personal epiphany over the idea that you can store data in the space between you and a reflective surface or retransmittor or whatnot.
      • anitil10 hours ago
        It reminds me of the mercury delay lines - <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Delay-line_memory" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Delay-line_memory</a>
        • mister_mort9 hours ago
          &quot;I have one memory system remaining. Delay-line.&quot;<p><a href="https:&#x2F;&#x2F;vgel.me&#x2F;fiction&#x2F;gyre&#x2F;" rel="nofollow">https:&#x2F;&#x2F;vgel.me&#x2F;fiction&#x2F;gyre&#x2F;</a>
          • ricdl1 hour ago
            very cool story
  • ttul9 hours ago
    My old late friend Dan Kaminsky famously wrote the Perl module &quot;Ozyman DNS&quot;, which allowed you to tunnel ssh session over the DNS, thus evading certain firewalls such as those controlling access to public WiFi. Modern public WiFi setups filter the DNS too, rendering this technique moot, but I remember using &quot;Ozyman DNS&quot; to get WiFi access on the Caltrain and that was highly satisfying.<p><a href="https:&#x2F;&#x2F;boingboing.net&#x2F;2004&#x2F;06&#x2F;21&#x2F;tunneling-ssh-over-d.html" rel="nofollow">https:&#x2F;&#x2F;boingboing.net&#x2F;2004&#x2F;06&#x2F;21&#x2F;tunneling-ssh-over-d.html</a>
  • yanhangyhy57 minutes ago
    Perhaps one day in the future, DOOM will become one of the symbols of human civilization—both in contrast to robots and in contrast to extraterrestrials.
  • kgeist13 hours ago
    I once had this silly idea to create distributed storage of arbitrary data by exploiting a range of completely unrelated sites. Say, when you want to upload your file to the System, it may store one encrypted chunk as an image on a free image hosting site, another chunk as an encoded blog post on a random forum about farming (or in the user profile?), another chunk as a youtube video, etc. Imagine having something like hundreds or thousands of such &quot;backends&quot;. Every chunk would be stored in 3 places for high durability of course. Free storage, hidden in plain sight :) Although, I didn&#x27;t think through how to store the index reliably, and, because a moderator on a random farmers&#x27; site may delete our record(s), there needs to be a system which continously validates the integrity and reuploads the chunks.<p>Maybe such a silly project already exists?
    • sillysaurusx10 hours ago
      You might enjoy reading through the original Google FS papers. I forget what they’re called but it addresses the durability problems.<p>Ah, I couldn’t remember the name because it’s literally named Google File System. <a href="https:&#x2F;&#x2F;static.googleusercontent.com&#x2F;media&#x2F;research.google.com&#x2F;en&#x2F;&#x2F;archive&#x2F;gfs-sosp2003.pdf" rel="nofollow">https:&#x2F;&#x2F;static.googleusercontent.com&#x2F;media&#x2F;research.google.c...</a><p>I seem to remember bigtable also being interesting.<p>More than that, you might enjoy MIT’s distributed systems course. It’s all freely available online. I went through it for fun a decade ago or so, and it’s worthwhile for reasoning through hard problems like this.<p>People have definitely (ab)used YouTube as a filesystem though. And that’s probably your best bet for durability and performance.
    • crimsonnoodle586 hours ago
      I had the same idea!<p>Another silly (compression-based) idea I had was to:<p>- Index say google images, or something else with a large amount of URL -&gt; data<p>- Find patterns in the indexed data that match patterns in your data, such that storing the URL and an offset into the data (or something more complex) would be smaller than the data chunk you are trying to compress<p>- Repeat for all chunks<p>- After you&#x27;re done you can run it again and again. Infinite compression!<p>Yes the user has to download WAY more data that what they are trying to extract, and you&#x27;d need an insanely large index to be able to compress, but hey it was an idea.
      • slow_typist1 hour ago
        There is a range header in the http specification for resuming downloads at a certain part of the file. Since http is stateless, you can download precisely what you need right away.
    • noman-land11 hours ago
      I&#x27;ve had this exact idea. Would need to be error encoded to account for chubks disappearing. There would be a rot rate as sites die or change.
    • emmelaich8 hours ago
      You could write some custom backends for <a href="https:&#x2F;&#x2F;irmin.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;irmin.org&#x2F;</a> I guess.<p>&gt; <i>Irmin is an OCaml library for building mergeable, branchable distributed data stores.</i>
    • naultic11 hours ago
      lol now I wanna build this. It&#x27;s like the dark web but without user or in this case, site consent. This could be a fun few weekend project
  • nasretdinov14 hours ago
    Waiting for Doom over <a href="https:&#x2F;&#x2F;github.com&#x2F;yarrick&#x2F;pingfs" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;yarrick&#x2F;pingfs</a> next
    • wizardforhire13 hours ago
      ^ This is amazing!<p>Thanks for the share!
      • lidder8610 hours ago
        SDo its Friday why not ask Claude do something dumb! <a href="http:&#x2F;&#x2F;github.com&#x2F;elmobp&#x2F;ping-doom" rel="nofollow">http:&#x2F;&#x2F;github.com&#x2F;elmobp&#x2F;ping-doom</a> Doom over pure icmp you need root though the other one it spat out was doom over git
  • lxgr13 hours ago
    A database storing data? Now I’ve seen everything!
  • tombert15 hours ago
    Gotta admit that it didn&#x27;t occur to me that &quot;can it run DOOM?&quot; would stretch all the way to DNS.<p>At this point I am wondering if people will somehow port DOOM over to the MONIAC.
    • FartyMcFarter14 hours ago
      You were right to assume that in this case. DNS is not running doom here, it&#x27;s just storing it.
      • hrmtst938371 hour ago
        Calling that &quot;just storing it&quot; is cute. DNS was barely designed to survive humans spelling a hostname wrong, and once someone starts stuffing megabytes of chaos into TXT records, every broken resovler and weird cache path turns it into a bootleg S3 bucket with extra failure modes.
      • tombert12 hours ago
        That&#x27;s fair. I guess &quot;can it store DOOM?&quot; is still an interesting question though.
        • antonvs12 hours ago
          Is it? DNS has an explicit mechanism for storing data.
          • tombert11 hours ago
            Ok well it was new to me ok!
    • bigwheels15 hours ago
      Which is more ambitious, targeting the MONIAC platform or ENIAC?<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;ENIAC" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;ENIAC</a><p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Phillips_Machine" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Phillips_Machine</a> (MONIAC)<p>I&#x27;d say both are looking increasingly doable.
    • sssilver14 hours ago
      “Run” is doing a lot of heavy lifting at this point.
      • mistyvales14 hours ago
        I remember the pregnancy test Doom. Wasn&#x27;t it &quot;running&quot; on the display only?
        • deathanatos11 hours ago
          Yes, I think it was, but that was also b&#x2F;c, IIRC, the pregnancy tester had a CPU, too. A CPU can actually run things.<p>DNS … cannot, and that&#x27;s why the person upthread is criticizing the use of the word &quot;run&quot; here. DNS ran nothing.
          • anthk28 minutes ago
            No it wasn&#x27;t, it just was the display. My commented example in this thread states that in every device your are running Zork I-III or any z-machine v3 compatible game it&#x27;s actually hosting the interpreter and the game itself, from the Game Boy to an smartphone, a PC, an old PDA...
        • bananaboy6 hours ago
          They replaced both the display and the microcontroller with something like an Adafruir Trinket.
        • teddyh8 hours ago
          It wasn’t even the test’s original display, IIRC; they just re-used the housing and inserted a fancier display.
    • TZubiri14 hours ago
      Coming up: playing doom on Ping-as-Storage
      • aboardRat46 hours ago
        It&#x27;s ready, nothing to enjoy.<p>ICMP packets can be arbitrary length, and there are plenty of tcp-over-icmp tunnels.
  • aboardRat46 hours ago
    &gt;They are not a file storage system. They were not designed to be a file storage system. Nobody at the IETF was thinking about them being used as a file storage system when they wrote RFC 1035. And yet here we are.<p>That&#x27;s plain wrong. DNS was specifically designed to store arbitrary data, cf. the Hesiod name class.
  • kaitari14 hours ago
    I never stop being impressed by these &quot;&lt;something-crazy&gt; running Doom&quot; posts. AFAIC, whenever we get to Mars, we won&#x27;t truly have arrived until someone is playing Doom on Mars, and without wasting valuable resources by doing so. Running Doom, the canonical measurement of truly mastering a thing&#x27;s capabilities.
    • lthi74711 hours ago
      I am still waiting someone to port Doom on CSS
      • gnabgib11 hours ago
        Someone delivered that 2 years ago: <a href="https:&#x2F;&#x2F;codepen.io&#x2F;cobra_winfrey&#x2F;pen&#x2F;oNOMRav" rel="nofollow">https:&#x2F;&#x2F;codepen.io&#x2F;cobra_winfrey&#x2F;pen&#x2F;oNOMRav</a>
        • cwnyth11 hours ago
          Oddly, it doesn&#x27;t work on my browser (Firefox on Gnome).
  • hun314 hours ago
    Finally, a DOOM download that bypasses captive portals
  • Sajarin11 hours ago
    There&#x27;s a writeup here:<p><a href="https:&#x2F;&#x2F;blog.rice.is&#x2F;post&#x2F;doom-over-dns&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.rice.is&#x2F;post&#x2F;doom-over-dns&#x2F;</a>
  • hhh14 hours ago
    very cool, i did something similar but turning the doom frame running on a server into ascii (with colour) and then a small shim to give inputs via subdomains<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=GoPWuJR6Npc" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=GoPWuJR6Npc</a><p>without the colour i did it in a worse way for bad apple<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=AJ2Q12vYojY" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=AJ2Q12vYojY</a>
  • thestackfox13 hours ago
    Respect. But also ... WHY????<p>Now let&#x27;s do<p>(1) A DNS file drop: Split small files into TXT records and rebuild them client-side. Useless for big files, perfect for config blobs, tiny payloads, and cursed demos. Also someone can write an S3-compatible client.<p>(2) Redis DNS:<p>- GET foo.cache.example.com -&gt; TXT record returns value chunks<p>- TTL is the eviction policy<p>- Cache invalidation becomes even more of a hate crime.
  • ge9612 hours ago
    Tangent, harder drives by suckerpinch
  • vivzkestrel3 hours ago
    any of you did doom inside meta glasses?
  • ozgurozkan9997 hours ago
    This feels so unnecessary but very cool.
  • nullbyte80813 hours ago
    Malware could still use DNS records for storage and access to bootstrapped payloads correct?
    • thesuitonym13 hours ago
      Yes, but it&#x27;s not a problem, any more than downloading any arbitrary text is. You&#x27;d still have to have something execute the binary.
      • k_roy9 hours ago
        If anything, this would be more of a way to act as a command and control server
    • k4rnaj1k13 hours ago
      [dead]
  • cobbzilla3 hours ago
    what is the frame rate?
  • didip10 hours ago
    What is the serialization format? Base64?
    • invalidator9 hours ago
      Yes. Details here:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;resumex&#x2F;doom-over-dns&#x2F;tree&#x2F;main&#x2F;TXTRecords" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;resumex&#x2F;doom-over-dns&#x2F;tree&#x2F;main&#x2F;TXTRecord...</a>
  • nimbius11 hours ago
    blech...too much windows. bring me the Linux version and i might care ;)
  • vicapow12 hours ago
    that SVG wow how?!
  • jjlane10 hours ago
    thanks for doing god’s work my friend.
  • jjlane10 hours ago
    thank you for doing god’s work my friend.
  • paulddraper9 hours ago
    &quot;Author discovers that DNS stores data, and that data could be DLLs.&quot;<p>Okay?
  • spirodonfl5 hours ago
    I covered another use case for this last year:<p><a href="https:&#x2F;&#x2F;youtu.be&#x2F;mjSdHHJySDk" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;mjSdHHJySDk</a>
  • anthk10 hours ago
    Another fake Doom run, like the predictor one. This doesn&#x27;t actually run Doom. Sorry. Meanwhile, other esoteric platforms actually <i>run</i>the software.<p>There&#x27;s the Infocom ZMachine with Zork I-III, Tristam Island, Calypso (Z machine v3 games) and many more which can be run starting from a PostScript file to a pen, a simple FPGA machine, an Amiga, the original Game Boy and who knows what.<p>If you can port a libre interpreter, you can run it. Old PDA&#x27;s, Smartphones, JS browsers, Windows 95 machines with Winfrotz, DOS, Raspberry Pies with GNU&#x2F;Linux, Riscos... There are emulators even written in Perl, Python, Lua, tons of them. It&#x27;s text based output and the Z machine format it&#x27;s documented.<p>I think some Activision games had the the Zork game embedded on their engine as an Easter Egg. As it&#x27;s an &#x27;easy&#x27; task for any programmer embedding it under a fake ingame computer woudn&#x27;t have been a daunting task.<p>Maybe I can adapt the PostScript one to Eforth under the Subleq VM, PS&#x27; syntax maps slightly ok to EForth...<p>With Asterisks and some old modules you can even play it over a VOIP client and listen to the output with Flite&#x2F;Festival&#x2F;Espeak-nG or any compatible TTS software, such as PicoTTS. The voice input it&#x27;s done with CMU Sphinx.<p>Something Doom can&#x27;t do at all.
  • sta1n7 hours ago
    [dead]
  • chodecaller5 hours ago
    [flagged]
  • kuberwastaken12 hours ago
    This is so peak
  • quotemstr4 hours ago
    We&#x27;ve known for years that we tunnel IP over DNS [1]. We know, of course, that we can load or play DOOM over IP. Suddenly, combining the two things we already know how to do is supposed to garner attention and plaudits?<p>[1] <a href="https:&#x2F;&#x2F;code.kryo.se&#x2F;iodine&#x2F;" rel="nofollow">https:&#x2F;&#x2F;code.kryo.se&#x2F;iodine&#x2F;</a>
  • cat-turner14 hours ago
    Super cool. Never thought of this. Would this be useful for seeding LLMs?
    • FartyMcFarter14 hours ago
      This is a data storage system, so I guess yes, data is useful to train LLMs?<p>Why does everything get turned into an LLM discussion?
      • michaelsshaw10 hours ago
        Does this LLM discussion support LLMs?
  • ethin12 hours ago
    I read this title, did a double-take, then had to go look at the git hub because it still didn&#x27;t click for me. Because this sounds absolutely amazing, and absurd, and weird, all at the same time. Like..... Wow? Talk about turning protocols into pretzels...
    • Sohcahtoa8211 hours ago
      &gt; had to go look at the git hub because it still didn&#x27;t click for me<p>Obviously it still didn&#x27;t click for you or you&#x27;re lying about looking at the GitHub, because if you did, you&#x27;d have learned that it&#x27;s not using DNS to <i>run</i> DOOM, only to <i>store</i> it. Which...shouldn&#x27;t really be a surprise to anybody who knows that DNS TXT records exist.
      • ethin11 hours ago
        And obviously your forgetting that doing this is from my perspective a very novel idea and I didn&#x27;t consider a TXT record as a data storage system. Good grief.