From fe96b9e2415ef2104c0a4fc417992e3cef3eae38 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Tue, 2 Jan 2024 14:35:11 -0500 Subject: [PATCH 1/9] docs: added skeleton for network dumps docs --- docs/en_US/network-dumps.md | 69 ++++++++++++++++++++++++++ src/routes/docs.js | 2 +- views/partials/docs-sidebar.handlebars | 1 + 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 docs/en_US/network-dumps.md diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md new file mode 100644 index 0000000..846184f --- /dev/null +++ b/docs/en_US/network-dumps.md @@ -0,0 +1,69 @@ +# Network Dumps +One of the best ways to support the project is to help in gathering network dumps of games. These network dumps can be used by developers to help understand how the servers operate in a live environment. This kind of data greatly simplifies development of the servers, as it removes a large amount of guesswork and reverse engineering. + +In order to make this easier, we have developed a suite of internal tools to capture and read network traffic, as well as make use of several "off the shelf" tools. This document will go into detail about how to capture these packets yourself, and how you can submit them to us for use in research and development. This document will be fairly long, please read it completely before submitting any dumps. + +## Table of Contents +1. [Security Warning](#security-warning) +2. [Submissions](#submissions) +3. [Game Packets](#game-packets) + - [Wii U (HokakuCafe)](#wii-u-hokakucafe) + - [3DS (HokakuCTR)](#3ds-hokakuctr) + - [All (WireShark)](#all-wireshark) +4. [HTTP Packets](#http-packets) + - [Fiddler](#fiddler-windows-free) + - [Charles](#charles-cross-platform-50) + - [Mitmproxy](#mitmproxy-cross-platform-free) + +# Security Warning +## Network dumps will oftentimes have sensitive information, including emails, passwords, usernames, IP addresses, etc. Because of this, ensure you only provide network dumps to trusted individuals. When submitting network dumps to Pretendo Network developers your dumps are uploaded and stored in a private channel. This channel can only be accessed by a small number of people, not even all developers have access. + +# Submissions +There are multiple ways to submit network dumps. You may either contact a developer directly, or upload your network dumps to any channel in the Discord server. If uploaded to Discord, the Bandwidth bot will automatically detect the dumps and reupload them to our private channel, deleting the original message for security purposes. + +When submitting we ask that you do the following: + +1. Only submit dumps for one game at a time, to keep the files organized. Sending multiple dumps of multiple games makes it difficult to know which dumps go to which game, +2. Perform only small actions if possible. Each session should be focussed on as few aspects of the game as possible to minimize "noise" (unrelated packets) which makes it difficult to decipher what is actually going on. For example, rather than uploading a session of playing random courses on Super Mario Maker it would be more helpful if the session was focussed on one part of the game, such as 100 Mario Challenge, starring a course, etc. That way it's clear exactly what the packets are doing in game. +3. When submitting, please provide a detailed description of what was done in the session. For example "Loaded course world and played a random course, starred the course and played a recommended course". This will add further context as to what the packets are doing in the dumps. + +# Game Packets +Game packet dumps are the packets sent during a session to a game server. These packets are typically encrypted, so additional data will need to be submitted in order for us to decrypt them. There are several ways to dump these packets and the data needed to decrypt them. + +### Wii U (HokakuCafe) +The easiest way to dump game server packets from a Wii U is to use [HokakuCafe](https://github.com/PretendoNetwork/HokakuCafe). This is an Aroma setup module which patches IOSU to write all network frames to a `.pcap` file on the SD card. + +To use HokakuCafe download the [latest release](https://github.com/PretendoNetwork/HokakuCafe/releases/latest) setup module (`30_hokaku_cafe.rpx`). Place this file on the SD card at `wiiu/environments/[ENVIRONMENT]/modules/setup` and insert it back into the Wii U. Start your Wii U once, turn it off, and open the newly created `HokakuCafe/config.ini` file on the SD card. Set `Mode` to `ALL`. At the time of writing, HokakuCafe has a bug where it will not dump all packets unless `Mode` is set to `ALL`. Insert the SD card back into the Wii U and all network traffic flowing through your console should be written to a PCAP. + +The PCAP files are written to the `HokakuCafe` folder on the SD card, named as the date and time the session was started. HokakuCafe will also dump a BIN file, named `nexServiceToken-AAAAAAAAAA-BBBBBBBB.bin`. This file contains the data needed to decrypt the session packets, and MUST also be submitted. Otherwise the PCAP packets cannot be decrypted, and are of no use. + +### 3DS (HokakuCTR) +The easiest way to dump game server packets from a 3DS is to use [HokakuCTR](https://github.com/PretendoNetwork/HokakuCTR). Like HokakuCafe this homebrew attempts to dump game traffic directly from the console. However unlike HokakuCafe, it does not dump all system traffic and may not work in all games. If HokakuCTR does not work in your game, see the last solution. + +To use HokakuCTR, ensure you are updated to the latest Luma release. The latest Luma release now supports 3GX plugins. Download the [latest release](https://github.com/PretendoNetwork/HokakuCTR/releases/latest). Place this file on the SD card at `luma/plugins` and rename it `default.3dx`. + +When launching a game you will see 1 of 2 notifications on screen. You will either see `Not Ready` or `Ready`. If you see `Not Ready`, your game is not compatible. If you see `Ready`, your game is compatible. If you see nothing, either your game is not compatible or the plugin is not installed. If your game is compatible, it will start dumping game traffic to a PCAP file once the game has connected to the server. You will know the game has connected to the server when you see either `Detected NEX buffer type: V0` or `Detected NEX buffer type: V1` on screen. Until one of these notifications is shown, the PCAP will have no data. + +The PCAP is written to the SD card located at `HokakuCTR/[GAME NAME]`. HokakuCTR dumps are already decrypted, no additional data is required to decrypt them. They may be submitted as-is. + +### All (WireShark) +If neither solution above works, the only option you have is to capture the traffic manually off the console. This is easiest done with WireShark and a hosted wifi access point. Create a hosted wifi access point on your PC which has WireShark installed and select that access points interface in WireShark. Connect the console to this hosted access point, and you should begin to see all the network traffic from your console in WireShark. In order to both create a hosted access point and keep your PC online, you must have 2 ways of connecting to the internet on the PC. This is easiest done by using a USB wifi adapter to host the access point, and using ethernet to remain online. Not all USB wifi adapters support hosting access points. Ensure the one you use does. [This adapter](https://www.amazon.com/dp/B07C9TYDR4) is relatively cheap and supports hosting access points. + +Just like with HokakuCafe, traffic dumped with WireShark will be encrypted. In order to decrypt the traffic, your NEX account username and password must also be submitted. Your NEX account has no relation to any other account, such as your NNID, and cannot be used to gain any information about you. It can, however, allow someone to log into game servers as you. Ensure you only provide these details to trusted individuals. + +- 3DS - To dump your NEX username and password from a 3DS download and run [this homebrew application](https://9net.org/~stary/get_3ds_pid_password.3dsx). This will create a file on your SD card named `nex-keys.txt` with your NEX username and password. Copy and paste the contents of this file into the message of your submission. +- Wii U - To dump your NEX username and password from a Wii U connect to your Wii U with an FTP client. Navigate to `/storage_mlc/usr/save/system/act` and download all the folders inside this folder. Check the `account.dat` file in each folder and look for your NNID username in the `AccountId` field. Once found, in the same `account.dat` file locate both the `PrincipalId` and `NfsPassword` fields. Copy their values and paste them into the message of your submission. + +# HTTP Packets +Some games use HTTP requests for some features. Additionally, non-game titles will often use HTTP requests for their services. The above methods will not always capture HTTP requests in a way that is usable, if at all. SpotPass data is also downloaded via HTTP requests. For this, an HTTP proxy server is required. There are several options for HTTP proxy servers, which all depend on your operating system, skill level, and, for one, your budget + +TODO - We have a NoSSL patch for the Wii U, but no builds are uploaded anywhere. Where should we upload this? Discord won't work anymore because of the expiring download link update. 3DS NoSSL patch by Billy https://github.com/SciresM/3DS-SSL-Patch/pull/2 + +### Fiddler (Windows, free) +TODO - Fiddler docs + +### Charles (Cross platform, $50) +TODO - Charles docs + +### Mitmproxy (Cross platform, free) +TODO - Mitmproxy docs diff --git a/src/routes/docs.js b/src/routes/docs.js index 58fef96..e507436 100644 --- a/src/routes/docs.js +++ b/src/routes/docs.js @@ -66,7 +66,7 @@ router.get('/:subpath/:page', async (request, response, next) => { } else { return next(); } - + renderData.missingInLocale = locale !== MDLocale; response.render('docs/docs', renderData); diff --git a/views/partials/docs-sidebar.handlebars b/views/partials/docs-sidebar.handlebars index 138615d..4737508 100644 --- a/views/partials/docs-sidebar.handlebars +++ b/views/partials/docs-sidebar.handlebars @@ -13,6 +13,7 @@ Cemu Citra Miiverse + Submit network dumps
From 8e98e4398c35786f21f51dbcc068f59e81f47a45 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Tue, 2 Jan 2024 22:43:19 -0500 Subject: [PATCH 2/9] 3dx -> 3dsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Daniel López Guimaraes <112760654+DaniElectra@users.noreply.github.com> --- docs/en_US/network-dumps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md index 846184f..5ca786f 100644 --- a/docs/en_US/network-dumps.md +++ b/docs/en_US/network-dumps.md @@ -40,7 +40,7 @@ The PCAP files are written to the `HokakuCafe` folder on the SD card, named as t ### 3DS (HokakuCTR) The easiest way to dump game server packets from a 3DS is to use [HokakuCTR](https://github.com/PretendoNetwork/HokakuCTR). Like HokakuCafe this homebrew attempts to dump game traffic directly from the console. However unlike HokakuCafe, it does not dump all system traffic and may not work in all games. If HokakuCTR does not work in your game, see the last solution. -To use HokakuCTR, ensure you are updated to the latest Luma release. The latest Luma release now supports 3GX plugins. Download the [latest release](https://github.com/PretendoNetwork/HokakuCTR/releases/latest). Place this file on the SD card at `luma/plugins` and rename it `default.3dx`. +To use HokakuCTR, ensure you are updated to the latest Luma release. The latest Luma release now supports 3GX plugins. Download the [latest release](https://github.com/PretendoNetwork/HokakuCTR/releases/latest). Place this file on the SD card at `luma/plugins` and rename it `default.3dsx`. When launching a game you will see 1 of 2 notifications on screen. You will either see `Not Ready` or `Ready`. If you see `Not Ready`, your game is not compatible. If you see `Ready`, your game is compatible. If you see nothing, either your game is not compatible or the plugin is not installed. If your game is compatible, it will start dumping game traffic to a PCAP file once the game has connected to the server. You will know the game has connected to the server when you see either `Detected NEX buffer type: V0` or `Detected NEX buffer type: V1` on screen. Until one of these notifications is shown, the PCAP will have no data. From bab3c0e0aee3e966bf88313af7bb11458061f434 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Tue, 2 Jan 2024 22:43:54 -0500 Subject: [PATCH 3/9] Spelling updates for AP docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Daniel López Guimaraes <112760654+DaniElectra@users.noreply.github.com> --- docs/en_US/network-dumps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md index 5ca786f..ae7251c 100644 --- a/docs/en_US/network-dumps.md +++ b/docs/en_US/network-dumps.md @@ -47,7 +47,7 @@ When launching a game you will see 1 of 2 notifications on screen. You will eith The PCAP is written to the SD card located at `HokakuCTR/[GAME NAME]`. HokakuCTR dumps are already decrypted, no additional data is required to decrypt them. They may be submitted as-is. ### All (WireShark) -If neither solution above works, the only option you have is to capture the traffic manually off the console. This is easiest done with WireShark and a hosted wifi access point. Create a hosted wifi access point on your PC which has WireShark installed and select that access points interface in WireShark. Connect the console to this hosted access point, and you should begin to see all the network traffic from your console in WireShark. In order to both create a hosted access point and keep your PC online, you must have 2 ways of connecting to the internet on the PC. This is easiest done by using a USB wifi adapter to host the access point, and using ethernet to remain online. Not all USB wifi adapters support hosting access points. Ensure the one you use does. [This adapter](https://www.amazon.com/dp/B07C9TYDR4) is relatively cheap and supports hosting access points. +If neither solution above works, the only option you have is to capture the traffic manually off the console. This is easiest done with WireShark and a hosted Wi-Fi access point. Create a hosted wifi access point on your PC which has WireShark installed and select that access point's interface in WireShark. Connect the console to this hosted access point, and you should begin to see all the network traffic from your console in WireShark. In order to both create a hosted access point and keep your PC online, you must have 2 ways of connecting to the internet on the PC. This is easiest done by using a USB Wi-Fi adapter to host the access point, and using ethernet to remain online. Not all USB Wi-Fi adapters support hosting access points. Ensure the one you use does. [This adapter](https://www.amazon.com/dp/B07C9TYDR4) is relatively cheap and supports hosting access points. Just like with HokakuCafe, traffic dumped with WireShark will be encrypted. In order to decrypt the traffic, your NEX account username and password must also be submitted. Your NEX account has no relation to any other account, such as your NNID, and cannot be used to gain any information about you. It can, however, allow someone to log into game servers as you. Ensure you only provide these details to trusted individuals. From eb7c7eca1f7c168c830ae9a9b3b7baed54de2625 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 3 Jan 2024 00:42:33 -0500 Subject: [PATCH 4/9] docs: update security warning --- docs/en_US/network-dumps.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md index ae7251c..bbaa97b 100644 --- a/docs/en_US/network-dumps.md +++ b/docs/en_US/network-dumps.md @@ -4,19 +4,20 @@ One of the best ways to support the project is to help in gathering network dump In order to make this easier, we have developed a suite of internal tools to capture and read network traffic, as well as make use of several "off the shelf" tools. This document will go into detail about how to capture these packets yourself, and how you can submit them to us for use in research and development. This document will be fairly long, please read it completely before submitting any dumps. ## Table of Contents -1. [Security Warning](#security-warning) -2. [Submissions](#submissions) -3. [Game Packets](#game-packets) +1. [Submissions](#submissions) +2. [Game Packets](#game-packets) - [Wii U (HokakuCafe)](#wii-u-hokakucafe) - [3DS (HokakuCTR)](#3ds-hokakuctr) - [All (WireShark)](#all-wireshark) -4. [HTTP Packets](#http-packets) +3. [HTTP Packets](#http-packets) - [Fiddler](#fiddler-windows-free) - [Charles](#charles-cross-platform-50) - [Mitmproxy](#mitmproxy-cross-platform-free) -# Security Warning -## Network dumps will oftentimes have sensitive information, including emails, passwords, usernames, IP addresses, etc. Because of this, ensure you only provide network dumps to trusted individuals. When submitting network dumps to Pretendo Network developers your dumps are uploaded and stored in a private channel. This channel can only be accessed by a small number of people, not even all developers have access. +
+

Security Warning

+ Network dumps will oftentimes have sensitive information, including emails, passwords, usernames, IP addresses, etc. Because of this, ensure you only provide network dumps to trusted individuals. When submitting network dumps to Pretendo Network developers your dumps are uploaded and stored in a private channel. This channel can only be accessed by a small number of people, not even all developers have access. +
# Submissions There are multiple ways to submit network dumps. You may either contact a developer directly, or upload your network dumps to any channel in the Discord server. If uploaded to Discord, the Bandwidth bot will automatically detect the dumps and reupload them to our private channel, deleting the original message for security purposes. From 3ee279b6786c486307a46462a51e920562124d61 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 3 Jan 2024 00:44:11 -0500 Subject: [PATCH 5/9] docs: update HokakuCafe Mode docs --- docs/en_US/network-dumps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md index bbaa97b..97da325 100644 --- a/docs/en_US/network-dumps.md +++ b/docs/en_US/network-dumps.md @@ -34,7 +34,7 @@ Game packet dumps are the packets sent during a session to a game server. These ### Wii U (HokakuCafe) The easiest way to dump game server packets from a Wii U is to use [HokakuCafe](https://github.com/PretendoNetwork/HokakuCafe). This is an Aroma setup module which patches IOSU to write all network frames to a `.pcap` file on the SD card. -To use HokakuCafe download the [latest release](https://github.com/PretendoNetwork/HokakuCafe/releases/latest) setup module (`30_hokaku_cafe.rpx`). Place this file on the SD card at `wiiu/environments/[ENVIRONMENT]/modules/setup` and insert it back into the Wii U. Start your Wii U once, turn it off, and open the newly created `HokakuCafe/config.ini` file on the SD card. Set `Mode` to `ALL`. At the time of writing, HokakuCafe has a bug where it will not dump all packets unless `Mode` is set to `ALL`. Insert the SD card back into the Wii U and all network traffic flowing through your console should be written to a PCAP. +To use HokakuCafe download the [latest release](https://github.com/PretendoNetwork/HokakuCafe/releases/latest) setup module (`30_hokaku_cafe.rpx`). Place this file on the SD card at `wiiu/environments/[ENVIRONMENT]/modules/setup` and insert it back into the Wii U. Start your Wii U once, turn it off, and open the newly created `HokakuCafe/config.ini` file on the SD card. Set `Mode` to either `UDP` or `ALL`. At the time of writing, HokakuCafe has a bug where it will not dump all game packets when `Mode` is set to `PRUDP`. Insert the SD card back into the Wii U and all network traffic flowing through your console should be written to a PCAP. The PCAP files are written to the `HokakuCafe` folder on the SD card, named as the date and time the session was started. HokakuCafe will also dump a BIN file, named `nexServiceToken-AAAAAAAAAA-BBBBBBBB.bin`. This file contains the data needed to decrypt the session packets, and MUST also be submitted. Otherwise the PCAP packets cannot be decrypted, and are of no use. From bad1d45d0a15d1533a06de9bd09e18626df81025 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 3 Jan 2024 15:17:49 -0500 Subject: [PATCH 6/9] docs: add dumps renaming suggestions --- docs/en_US/network-dumps.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md index 97da325..5826cba 100644 --- a/docs/en_US/network-dumps.md +++ b/docs/en_US/network-dumps.md @@ -27,6 +27,7 @@ When submitting we ask that you do the following: 1. Only submit dumps for one game at a time, to keep the files organized. Sending multiple dumps of multiple games makes it difficult to know which dumps go to which game, 2. Perform only small actions if possible. Each session should be focussed on as few aspects of the game as possible to minimize "noise" (unrelated packets) which makes it difficult to decipher what is actually going on. For example, rather than uploading a session of playing random courses on Super Mario Maker it would be more helpful if the session was focussed on one part of the game, such as 100 Mario Challenge, starring a course, etc. That way it's clear exactly what the packets are doing in game. 3. When submitting, please provide a detailed description of what was done in the session. For example "Loaded course world and played a random course, starred the course and played a recommended course". This will add further context as to what the packets are doing in the dumps. +4. When submitting, please rename the dumps to something meaningful. Such as `played-and-starred-course-smm-jpn.pcap` rather than `did-something.pcap` or `12-20-23.pcap`. This does not apply to HokakuCafe BIN files, as they must remain named as they are for the Discord bot to detect them # Game Packets Game packet dumps are the packets sent during a session to a game server. These packets are typically encrypted, so additional data will need to be submitted in order for us to decrypt them. There are several ways to dump these packets and the data needed to decrypt them. From 5ce215ff7cc5c4c1c0338f52d6c34f0ec9110a41 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Wed, 3 Jan 2024 15:28:42 -0500 Subject: [PATCH 7/9] docs: added high priority games list --- docs/en_US/network-dumps.md | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md index 5826cba..a1d7dfa 100644 --- a/docs/en_US/network-dumps.md +++ b/docs/en_US/network-dumps.md @@ -13,6 +13,7 @@ In order to make this easier, we have developed a suite of internal tools to cap - [Fiddler](#fiddler-windows-free) - [Charles](#charles-cross-platform-50) - [Mitmproxy](#mitmproxy-cross-platform-free) +4. [High Priority Games](#high-priority-games)

Security Warning

@@ -69,3 +70,42 @@ TODO - Charles docs ### Mitmproxy (Cross platform, free) TODO - Mitmproxy docs + +# High Priority Games +While all games are important to capture dumps for, this is a list of games we have identified as being high priority. All games on Nintendo Network share a common set of protocols used to implement the games online features, making it easy to use work from one game on many others. However these games have game-specific patches to their protocols, or even entirely custom ones, making this much harder to work with, especially after the official servers go down. Dumps for these games are considered high priority, but they should not be the only games dumped for. All games are important. + +## 3DS +- `Animal Crossing - Happy Home Designer` +- `Daigassou! Band Brothers P (Japan)` +- `Kid Icarus: Uprising` +- `Miitopia` +- `Monster Hunter Generations` +- `Nintendo Badge Arcade` +- `Pokemon Omega Ruby / Alpha Sapphire` +- `Pokemon Rumble World` +- `Pokemon Sun / Moon` +- `Pokemon Ultra Sun / Ultra Moon` +- `Pokemon X / Y` +- `Real Dasshutsu Game x Nintendo 3DS - Chou Hakai Keikaku kara no Dasshutsu (Japan)` +- `Super Mario Maker for Nintendo 3DS` +- `Super Smash Bros for Nintendo 3DS` +- `Yakuman Houou Mahjong (Japan)` + +## Wii U +- `MARIO KART 8` +- `MONSTER HUNTER 3 ULTIMATE Packet Relay...for Nintendo 3DS` +- `MONSTER HUNTER 3(tri-)G HD Ver.` +- `SUPER MARIO 3D WORLD` +- `Splatoon` (All Splatoon games likely have the same patches) +- `Splatoon (Demo)` +- `Splatoon Global Testfire` +- `Splatoon Pre-Launch Review` +- `Splatoon Testfire` +- `Super Mario Maker` +- `Super Smash Bros. for Wii U` +- `Wii KARAOKE U by JOYSOUND` +- `Wii Sports Club` +- `Wii Sports Club Lite` +- `Nintendo×JOYSOUND Wii カラオケ U` +- `Xenoblade Chronicles X` +- `役満 鳳凰` From 04d8c80a47c04c2b3390646058751a8781c43b5b Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Thu, 11 Jan 2024 16:59:14 -0500 Subject: [PATCH 8/9] docs: add mitmproxy-nintendo docs --- docs/en_US/network-dumps.md | 48 ++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md index a1d7dfa..99bc0e4 100644 --- a/docs/en_US/network-dumps.md +++ b/docs/en_US/network-dumps.md @@ -10,9 +10,6 @@ In order to make this easier, we have developed a suite of internal tools to cap - [3DS (HokakuCTR)](#3ds-hokakuctr) - [All (WireShark)](#all-wireshark) 3. [HTTP Packets](#http-packets) - - [Fiddler](#fiddler-windows-free) - - [Charles](#charles-cross-platform-50) - - [Mitmproxy](#mitmproxy-cross-platform-free) 4. [High Priority Games](#high-priority-games)
@@ -58,18 +55,47 @@ Just like with HokakuCafe, traffic dumped with WireShark will be encrypted. In o - Wii U - To dump your NEX username and password from a Wii U connect to your Wii U with an FTP client. Navigate to `/storage_mlc/usr/save/system/act` and download all the folders inside this folder. Check the `account.dat` file in each folder and look for your NNID username in the `AccountId` field. Once found, in the same `account.dat` file locate both the `PrincipalId` and `NfsPassword` fields. Copy their values and paste them into the message of your submission. # HTTP Packets -Some games use HTTP requests for some features. Additionally, non-game titles will often use HTTP requests for their services. The above methods will not always capture HTTP requests in a way that is usable, if at all. SpotPass data is also downloaded via HTTP requests. For this, an HTTP proxy server is required. There are several options for HTTP proxy servers, which all depend on your operating system, skill level, and, for one, your budget +Some games use HTTP requests for some features. Additionally, non-game titles will often use HTTP requests for their services. The above methods will not always capture HTTP requests in a way that is usable, if at all. SpotPass data is also downloaded via HTTP requests. For this, an HTTP proxy server is required. There are several options for HTTP proxy servers, however the simplest way is using our [mitmproxy Docker container](https://github.com/PretendoNetwork/mitmproxy-nintendo). -TODO - We have a NoSSL patch for the Wii U, but no builds are uploaded anywhere. Where should we upload this? Discord won't work anymore because of the expiring download link update. 3DS NoSSL patch by Billy https://github.com/SciresM/3DS-SSL-Patch/pull/2 +Full credit to the upkeep of the repository, and creation of the original Docker container, goes to GitHub user [MatthewL246](https://github.com/MatthewL246). -### Fiddler (Windows, free) -TODO - Fiddler docs +Install Docker for your operating system using the official [setup guide](https://docs.docker.com/get-docker/). Then follow the steps for your console type. -### Charles (Cross platform, $50) -TODO - Charles docs +## 3DS +1. Download [this IPS patch](https://github.com/PretendoNetwork/mitmproxy-nintendo/raw/master/ssl-patches/0004013000002F02.ips). This IPS patch patches the SSL sysmodule to disable SSL verification, allowing the console to connect to the proxy server with TLS connections. +2. Place the patch on your SD card at `SD:/luma/sysmodules/0004013000002F02.ips`. +3. Place the SD card back into your 3DS. +4. Launch into the Luma settings by holding `SELECT` while powering on. +5. Ensure both `Enable loading external FIRMS and modules` and `Enable game patching` are enabled before booting. +6. Launch Nimbus and connect to Nintendo Network. +7. On your computer, create a `3ds-dumps` directory and run the following command in a command prompt: `docker run -it --rm -p 8083:8083 -v ./3ds-dumps:/home/mitmproxy/dumps ghcr.io/pretendonetwork/mitmproxy-nintendo:3ds mitmdump` +8. This command starts the proxy server using Docker, exposing the servers port 8083 on your computers port also on 8083, and links the `/home/mitmproxy/dumps` directory in the container to the `3ds-dumps` directory you just created. +9. On your 3DS, launch into Internet Settings and select your connection. +10. Select `Change Settings > Proxy Settings`. +11. Select `Yes` and then `Detailed Setup`. +12. Enter your computers local IP address into `Proxy Server` and 8083 into `Port`. +13. Select `Ok` then `Save` and run the connection test. Your 3DS should connect to the internet and you should see connections being made in the proxy server +14. See the end of this section for final steps. -### Mitmproxy (Cross platform, free) -TODO - Mitmproxy docs +## Wii U +1. Download [this Aroma setup module](https://github.com/PretendoNetwork/mitmproxy-nintendo/raw/master/ssl-patches/30_nossl.rpx). This patches the SSL sysmodule to disable SSL verification, allowing the console to connect to the proxy server with TLS connections. +2. Place the patch on your SD card at `SD:/wiiu/environments/aroma/modules/setup/30_nossl.rpx`. If there are other patches with the same ID `30`, this is fine. +3. Place the SD card back into your Wii U and turn on the console. +4. Launch into the Aroma settings by pressing `L + DPAD-DOWN + SELECT`. +5. Enter `Inkay > Patching` and toggle `Connect to the Pretendo Network` to ***FALSE***. +6. On your computer, create a `wiiu-dumps` directory and run the following command in a command prompt: `docker run -it --rm -p 8082:8082 -v ./wiiu-dumps:/home/mitmproxy/dumps ghcr.io/pretendonetwork/mitmproxy-nintendo:wiiu mitmdump` +7. This command starts the proxy server using Docker, exposing the servers port 8082 on your computers port also on 8082, and links the `/home/mitmproxy/dumps` directory in the container to the `wiiu-dumps` directory you just created. +8. On your Wii U, launch into `System Settings > Internet > Connect to the Internet > Connections` and select your connection. +9. Select `Change Settings > Proxy Settings`. +10. Select `Set` and `OK`. +11. Enter your computers local IP address into `Proxy Server` and 8082 into `Port`. +12. Select `Confirm`, `Don't Use`, then `Save` and run the connection test. Your Wii U should connect to the internet and you should see connections being made in the proxy server +13. See the end of this section for final steps. + +## Final Steps +Once you have the proxy server running and your console connected to it, use the console as normal. When you are finished capturing a session, press `CTRL` and `C` in the command prompt running the proxy server to end the session. Ending a session will create a `wiiu-dumps/wiiu-latest.har` file or `3ds-dumps/3ds-latest.har` file depending on which console was used for the session. These files will be overwritten at the start of each new session, so they must be backed up or renamed to avoid losing their data. + +For advanced usage of the proxy server, see https://github.com/PretendoNetwork/mitmproxy-nintendo # High Priority Games While all games are important to capture dumps for, this is a list of games we have identified as being high priority. All games on Nintendo Network share a common set of protocols used to implement the games online features, making it easy to use work from one game on many others. However these games have game-specific patches to their protocols, or even entirely custom ones, making this much harder to work with, especially after the official servers go down. Dumps for these games are considered high priority, but they should not be the only games dumped for. All games are important. From b47e4257d2ad962f0fc09c474167b9c34755f61f Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Thu, 11 Jan 2024 18:01:16 -0500 Subject: [PATCH 9/9] docs: add WSL notes for Docker and update commands --- docs/en_US/network-dumps.md | 40 +++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/docs/en_US/network-dumps.md b/docs/en_US/network-dumps.md index 99bc0e4..1f8412b 100644 --- a/docs/en_US/network-dumps.md +++ b/docs/en_US/network-dumps.md @@ -59,7 +59,7 @@ Some games use HTTP requests for some features. Additionally, non-game titles wi Full credit to the upkeep of the repository, and creation of the original Docker container, goes to GitHub user [MatthewL246](https://github.com/MatthewL246). -Install Docker for your operating system using the official [setup guide](https://docs.docker.com/get-docker/). Then follow the steps for your console type. +Install Docker for your operating system using the official [setup guide](https://docs.docker.com/get-docker/). If installing on Windows, you ***MUST*** use the WSL backend option. Then follow the steps for your console type. ## 3DS 1. Download [this IPS patch](https://github.com/PretendoNetwork/mitmproxy-nintendo/raw/master/ssl-patches/0004013000002F02.ips). This IPS patch patches the SSL sysmodule to disable SSL verification, allowing the console to connect to the proxy server with TLS connections. @@ -68,14 +68,17 @@ Install Docker for your operating system using the official [setup guide](https: 4. Launch into the Luma settings by holding `SELECT` while powering on. 5. Ensure both `Enable loading external FIRMS and modules` and `Enable game patching` are enabled before booting. 6. Launch Nimbus and connect to Nintendo Network. -7. On your computer, create a `3ds-dumps` directory and run the following command in a command prompt: `docker run -it --rm -p 8083:8083 -v ./3ds-dumps:/home/mitmproxy/dumps ghcr.io/pretendonetwork/mitmproxy-nintendo:3ds mitmdump` -8. This command starts the proxy server using Docker, exposing the servers port 8083 on your computers port also on 8083, and links the `/home/mitmproxy/dumps` directory in the container to the `3ds-dumps` directory you just created. -9. On your 3DS, launch into Internet Settings and select your connection. -10. Select `Change Settings > Proxy Settings`. -11. Select `Yes` and then `Detailed Setup`. -12. Enter your computers local IP address into `Proxy Server` and 8083 into `Port`. -13. Select `Ok` then `Save` and run the connection test. Your 3DS should connect to the internet and you should see connections being made in the proxy server -14. See the end of this section for final steps. +7. On your computer, open a command prompt and run the following commands: +8. `mkdir 3ds-dumps` +9. `docker run -it --rm -p 8083:8083 -v ./3ds-dumps:/home/mitmproxy/dumps ghcr.io/pretendonetwork/mitmproxy-nintendo:3ds mitmdump` + - If using Windows, run `wsl docker run -it --rm -p 8083:8083 -v ./3ds-dumps:/home/mitmproxy/dumps ghcr.io/pretendonetwork/mitmproxy-nintendo:3ds mitmdump` +10. These commands create a directory to store the sessions dumps, and starts the proxy server using Docker, exposing the servers port 8083 on your computers port also on 8083, and links the `/home/mitmproxy/dumps` directory in the container to the `3ds-dumps` directory you just created. +11. On your 3DS, launch into Internet Settings and select your connection. +12. Select `Change Settings > Proxy Settings`. +13. Select `Yes` and then `Detailed Setup`. +14. Enter your computers local IP address into `Proxy Server` and 8083 into `Port`. +15. Select `Ok` then `Save` and run the connection test. Your 3DS should connect to the internet and you should see connections being made in the proxy server +16. See the end of this section for final steps. ## Wii U 1. Download [this Aroma setup module](https://github.com/PretendoNetwork/mitmproxy-nintendo/raw/master/ssl-patches/30_nossl.rpx). This patches the SSL sysmodule to disable SSL verification, allowing the console to connect to the proxy server with TLS connections. @@ -83,14 +86,17 @@ Install Docker for your operating system using the official [setup guide](https: 3. Place the SD card back into your Wii U and turn on the console. 4. Launch into the Aroma settings by pressing `L + DPAD-DOWN + SELECT`. 5. Enter `Inkay > Patching` and toggle `Connect to the Pretendo Network` to ***FALSE***. -6. On your computer, create a `wiiu-dumps` directory and run the following command in a command prompt: `docker run -it --rm -p 8082:8082 -v ./wiiu-dumps:/home/mitmproxy/dumps ghcr.io/pretendonetwork/mitmproxy-nintendo:wiiu mitmdump` -7. This command starts the proxy server using Docker, exposing the servers port 8082 on your computers port also on 8082, and links the `/home/mitmproxy/dumps` directory in the container to the `wiiu-dumps` directory you just created. -8. On your Wii U, launch into `System Settings > Internet > Connect to the Internet > Connections` and select your connection. -9. Select `Change Settings > Proxy Settings`. -10. Select `Set` and `OK`. -11. Enter your computers local IP address into `Proxy Server` and 8082 into `Port`. -12. Select `Confirm`, `Don't Use`, then `Save` and run the connection test. Your Wii U should connect to the internet and you should see connections being made in the proxy server -13. See the end of this section for final steps. +6. On your computer, open a command prompt and run the following commands: +7. `mkdir wiiu-dumps` +8. `docker run -it --rm -p 8082:8082 -v ./wiiu-dumps:/home/mitmproxy/dumps ghcr.io/pretendonetwork/mitmproxy-nintendo:wiiu mitmdump` + - If using Windows, run `wsl docker run -it --rm -p 8082:8082 -v ./wiiu-dumps:/home/mitmproxy/dumps ghcr.io/pretendonetwork/mitmproxy-nintendo:wiiu mitmdump` +9. These commands create a directory to store the sessions dumps, and starts the proxy server using Docker, exposing the servers port 8082 on your computers port also on 8082, and links the `/home/mitmproxy/dumps` directory in the container to the `wiiu-dumps` directory you just created. +10. On your Wii U, launch into `System Settings > Internet > Connect to the Internet > Connections` and select your connection. +11. Select `Change Settings > Proxy Settings`. +12. Select `Set` and `OK`. +13. Enter your computers local IP address into `Proxy Server` and 8082 into `Port`. +14. Select `Confirm`, `Don't Use`, then `Save` and run the connection test. Your Wii U should connect to the internet and you should see connections being made in the proxy server +15. See the end of this section for final steps. ## Final Steps Once you have the proxy server running and your console connected to it, use the console as normal. When you are finished capturing a session, press `CTRL` and `C` in the command prompt running the proxy server to end the session. Ending a session will create a `wiiu-dumps/wiiu-latest.har` file or `3ds-dumps/3ds-latest.har` file depending on which console was used for the session. These files will be overwritten at the start of each new session, so they must be backed up or renamed to avoid losing their data.