Skip to content

Instantly share code, notes, and snippets.

000 - Route 1:
All Weather (Lv. 2-5):
- Skwovet 40%
- Blipbug 30%
- Caterpie 15%
- Grubbin 10%
- Hoothoot 05%
001 - Route 2:
This file has been truncated, but you can view the full file.
Fuck Centro
======
001 - Bulbasaur B#164 (Stage: 1)
======
Base Stats: 45.49.49.65.65.45 (BST: 318)
EV Yield: 0.0.0.1.0.0
Gender Ratio: 31
Catch Rate: 45
z_wr0301_SymbolEncountPokemonGimmickSpawner_WR03_Common: (probably on Slippery Slope)
Location: (23828.3, 7721.5, 51077.1)
Normal: Mamoswine Lv.65 (A0FFFB5BFC2B229D)
Overcast: Swablu Lv.60 (A0FFF45BFC2B16B8)
Raining: Swablu Lv.60 (A0FFF45BFC2B16B8)
Thunderstorm: Swablu Lv.60 (A0FFF45BFC2B16B8)
Intense Sun: Snorlax Lv.65 (A103685BFC2E11AB)
Snowing: Amaura Lv.60 (A0FFF85BFC2B1D84)
Snowstorm: Mamoswine Lv.65 (A0FFFB5BFC2B229D)
Sandstorm: Mamoswine Lv.65 (A0FFFB5BFC2B229D)
@SciresM
SciresM / Sighax.md
Last active October 13, 2023 14:06

This is being hosted here, until the reddit post I made gets approved.

I saw, in the recent reddit thread about sighax, a lot of information being posted that's factually incorrect. I'd like to go ahead and clarify how sighax works, and how it's different from arm9loaderhax, while also clearing up some misconceptions I'm seeing (I really dislike misinformation).

What is sighax?

Sighax is an exploit taking advantage of a flaw in the arm9 bootrom, causing the signatures (which those of you less technically oriented may think of as "proofs of authenticity" that normally only Nintendo can generate) for arbitrary firmwares to be read as valid. On a normal boot, if one modifies the header for the firmware partition stored in NAND, the signatur

@SciresM
SciresM / Signatures.txt
Last active October 13, 2023 14:04
"Perfect" sighax signatures for every Boot9 modulus.
Retail NAND FIRM:
Perfect Signature:
B6724531C448657A2A2EE306457E350A10D544B42859B0E5B0BED27534CCCC2A4D47EDEA60A7DD99939950A6357B1E35DFC7FAC773B7E12E7C1481234AF141B31CF08E9F62293AA6BAAE246C15095F8B78402A684D852C680549FA5B3F14D9E838A2FB9C09A15ABB40DCA25E40A3DDC1F58E79CEC901974363A946E99B4346E8A372B6CD55A707E1EAB9BEC0200B5BA0B661236A8708D704517F43C6C38EE9560111E1405E5E8ED356C49C4FF6823D1219AFAEEB3DF3C36B62BBA88FC15BA8648F9333FD9FC092B8146C3D908F73155D48BE89D72612E18E4AA8EB9B7FD2A5F7328C4ECBFB0083833CBD5C983A25CEB8B941CC68EB017CE87F5D793ACA09ACF7
Exponentiated Message:
0002B31331C710412333A587890F9CF0B6A86E71C8A78F96B76082903B3E54EA9AB935978BBF2493BB829E9A5A6060B0C7811881176BCF9FE8B1C5C5E0A95327DB8B52EC178A884AD9CF28DB8BBF2922C05FD034AC81BD231AEB0CBEF6F7DE6F3A30812B9F9A83BF33251891BFA18FA38A64C6FF5F77DBE11C3780C23EA9F6D00F9C01D6FC8A878591D36C4F64ACA6B8D11BBEB21476103C6E86FF2196D465BA4DB78F81F1D3BCCA186BDDD56739A12DD36122F3F5B3DD518DDAC4FA29395EA4CD9DFD80AF8A399990F4FDD3CD6B07EC2122437CCFC3B62B1D1493A7DBB442003
import sys
def is_diff(i_a, i_b):
if sorted(i_a.keys()) != sorted(i_b.keys()):
return False
for k in sorted(i_a.keys()):
if k in ['lr', 'vt', 'func']:
continue
if i_a[k] != i_b[k]:
return True
@SciresM
SciresM / ida_fireemblem_symbols.py
Last active July 15, 2023 18:29
Get full symbols for your Fire Emblem If/Fates IDB
import idaapi
import idautils
import idc
import struct
def do_rename(eaaddr, name):
idc.MakeCode(eaaddr)
idc.MakeFunction(eaaddr)
idc.MakeNameEx(eaaddr, name, idc.SN_NOWARN)

Sometimes you need a 2048-bit RSA keypair for testing various things.

If you, like myself, have a child's sense of humor, I offer the following for your general use:

P = 19
Q = 1696986749729493925354392349339746171297507422986462747526968361144447230710192316397327889522451749459854070558277878297255552508603806832852079596337539247651161831569525505882103311631577368514276343192042634740927726070847704397913856975832811679847928433261678072951551065705680482548543833651752439700272736498378724153330763357721354498194000536297732323628263256733931353143625854828275237159155585342783077681713929284136658773985266864804093157854331138230313706015557050002740810464618031715670281442110238274404626065924786185264268216336867948322976979393032640085259926883014490947373494538254895109731

N = 0xFF69696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696
@SciresM
SciresM / __patcher.py
Last active December 5, 2022 08:58
quick and dirty pokemon masters patcher
from struct import unpack as up, pack as pk
import arm64, os, sys
TEXT_START_OFFSET = 0x507300
TEXT_END_OFFSET = 0x32FEBF0
RWDATA_START = 0x3A9F000
ENCTABLE_START = 0x3F2C238
ENCTABLE_END = 0x3F957B8
@SciresM
SciresM / CMAC.py
Last active September 9, 2022 04:55
Script to decrypt/re-encrypt (resign) Splatoon 2 save files.
# -*- coding: utf-8 -*-
#
# Hash/CMAC.py - Implements the CMAC algorithm
#
# ===================================================================
# The contents of this file are dedicated to the public domain. To
# the extent that dedication to the public domain is not available,
# everyone is granted a worldwide, perpetual, royalty-free,
# non-exclusive license to exercise all rights associated with the
# contents of this file for any purpose whatsoever.