In July 2018, Nintendo released Nintendo 3DS system software 11.8.0. This dealt a major blow to one method of piracy: direct downloads from the eShop. But how was it possible to pirate games directly from the storefront? Let’s find out!
How an eShop purchase works
Software on the 3DS needs a ticket installed to the console before it can be used. This ticket is typically signed with data tied to the specific unit it’s downloaded on, although there are exceptions for system software and pre-installed titles. When you purchase a title on the eShop (including free applications), the server generates this ticket, the console downloads and install it. This ticket also includes an encryption key (known as the “title key”) needed to decrypt the application contents, which is the same for all consoles.1
The next step is to download the software itself. This is hosted on a CDN (content delivery network) separate from the eShop servers. This includes the TMD (title metadata), used to find out what files to download, and then the actual application contents. The contents are encrypted using the key in the ticket, and the console decrypts this layer during the download.
Where it went wrong
The biggest mistake here was not requiring any authorization to download game contents. This was not necessarily a catastrophic failure – since the contents are encrypted, if you don’t have the key, the data is effectively garbage.
But someone, I believe in 2016, realized that if you share the keys around, you can decrypt the contents. A common base ticket can be used, and the game’s Title ID and title key can be inserted. This is enough for a modded console to run software, but it turns out, the eShop kinda sorta treats these games as purchased. It doesn’t appear on the account’s re-downloadable software, but when going to the game page, the re-download button appeared.
The discovery of this oversight quickly led to tools to facilitate downloading games for free from the eShop. They would download and install tickets to the console, and then users could go download the games from the eShop. Soon after that, eShop so-called “replacements” appeared to further streamline piracy. The most famous of these applications was freeShop.
What Nintendo changed to block it
Nintendo’s fix to block eShop piracy was relatively simple: the CDN servers required the ticket be sent in the request to download application contents. The ticket has to be signed, so it would have to come directly from the eShop servers. Enforcement did not start immediately, but it was rolled out in the following month.
This completely cut off downloading unpaid eShop software2, as tickets cannot be correctly signed by anyone but Nintendo, and due to personalized tickets containing console-unique data (which could lead to a possible ban), nobody wanted to share theirs. Thus freeShop and applications like it were discontinued, and everyone had to return to old-fashioned piracy.
Follow-up
This system of tickets has technically been in place since the Wii days. This means the same piracy could have happened with the Wii Shop Channel, DSi Shop, and even the Wii U eShop. Yet as far as I know, nobody did this until the 3DS. Why?
Well… I don’t actually know why in the case of Wii and DSi. But my speculation is that games from these digital storefronts were really small; the largest a WiiWare game could be was 40MB. It’s a lot easier to share the games themselves around. Meanwhile, 3DS games can be as large as 4GB, providing an incentive to share only title keys while eShop piracy was still possible.
Notes
Updated on January 26, 2025 to clarify pre-installed titles.
- This is a bit of a simplification. The actual ticket as transmitted over the network has the title key encrypted using a per-console key. But this layer of encryption is removed when it is installed to the console’s ticket database. Most people have never had to deal with this part, and is not exactly relevant to how eShop piracy was enabled. But I’m putting it here for accuracy’s sake. ↩︎
- There are very limited exceptions. Titles that came pre-installed in special bundles included a ticket that was signed for use on all systems, so these could be shared around and still downloaded from the eShop. ↩︎


