From 9e1ffe1a88776e83e7c72b48e5d98d7edd749e37 Mon Sep 17 00:00:00 2001 From: hex Date: Wed, 30 Apr 2025 23:16:12 +0200 Subject: [PATCH] Add MITM instructions and ck list. --- .obsidian/app.json | 4 +++- .obsidian/workspace.json | 38 +++++++++++++++++++++++++++++++++++--- Common Keywords.md | 6 ++++++ README.md | 6 +++--- mitm/Instructions.md | 12 ++++++++++++ 5 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 Common Keywords.md create mode 100644 mitm/Instructions.md diff --git a/.obsidian/app.json b/.obsidian/app.json index 9e26dfe..dc96940 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -1 +1,3 @@ -{} \ No newline at end of file +{ + "showInlineTitle": false +} \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 420a70e..c7a7d86 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -20,8 +20,37 @@ "icon": "lucide-file", "title": "README" } + }, + { + "id": "abedcd299b78ac65", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "mitm/Instructions.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "Instructions" + } + }, + { + "id": "19771929f635aa5d", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "mitm/Instructions.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "Instructions" + } } - ] + ], + "currentTab": 2 } ], "direction": "vertical" @@ -179,8 +208,11 @@ "obsidian-git:Open Git source control": false } }, - "active": "a564c534c1623b0c", + "active": "19771929f635aa5d", "lastOpenFiles": [ - "README.md" + "Common Keywords.md", + "mitm/Instructions.md", + "README.md", + "mitm" ] } \ No newline at end of file diff --git a/Common Keywords.md b/Common Keywords.md new file mode 100644 index 0000000..3695ebb --- /dev/null +++ b/Common Keywords.md @@ -0,0 +1,6 @@ +# Common Keywords + +| Keyword | Definition | +| ------- | ------------------------------------- | +| CTR | A generic code-name used for the 3DS. | +| MiTM | Man-in-The-Middle | diff --git a/README.md b/README.md index b36ff97..d16bc10 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -### An attempt to reverse-engineer the 3DS eShop. -meow :3 -test123 \ No newline at end of file +# Reversing the 3DS e-Shop + +This is an attempt to document my (and others) findings on the eShop, its workings & a proof-of-concept replacement store (which could hopefully be used as a kind of Universal-Updater replacement) \ No newline at end of file diff --git a/mitm/Instructions.md b/mitm/Instructions.md new file mode 100644 index 0000000..f5955bc --- /dev/null +++ b/mitm/Instructions.md @@ -0,0 +1,12 @@ +# MiTM Instructions +This should work on anything, not just the e-Shop. +1. Get NoSSL IPS patch, either through dumping the SSL system module and patching it, or by [retrieving a pre-made one.](https://github.com/PretendoNetwork/mitmproxy-nintendo/raw/refs/heads/master/ssl-patches/0004013000002F02.ips) +2. Copy the previously-retrieved patch to ``/luma/sysmodules/0004013000002F02.ips`` on your 3ds' SD card +3. Set up some kind of proxy (e.g. [mitmproxy](https://mitmproxy.org/)) and use the following settings/variables: + * `client_certs`: path to CTR cert (can be downloaded [here](https://github.com/PretendoNetwork/mitmproxy-nintendo/raw/refs/heads/master/client-certificates/CTR-common.pem)) + * `tls_version_client_min: UNBOUNDED` + * `ssl_insecure: true` + 4. Configure your 3DS to use mitmproxy's HTTP(S) proxy. + * IP: private IPv4 address of proxy host. + * Port: 8080 +5. Start capturing! If you prefer a web interface instead, use mitmweb which is shipped with mitmproxy. \ No newline at end of file