Tutorial  Updated

How to get Switch Keys for Hactool/XCI Decrypting

This thread is deprecated
For a faster, easier and more up-to-date way of getting keys use Lockpick_RCM by shchmue
If you still want to follow this tutorial and end up with less keys, continue reading the Thread.


WARNING
  • DO NOT GIVE OUT ANY OF YOUR KEYS TO ANYONE! I CANNOT STRESS THAT ENOUGH!
  • DO NOT SHARE YOUR KEYS BETWEEN MULTIPLE SWITCHES THAT YOU DO/DON'T OWN! SOME ARE CONSOLE-UNIQUE
  • DO NOT ASK ME FOR KEYS


LEGEND
  • SBK
    SecureBootKey
  • TSEC
    Tegra Security Co-processor Key
  • eMMC
    Embedded MultiMediaCard (Switch's Onboard Storage)


GOAL
End up with 83+ keys including SBK and TSEC keys. Get Master Key's 0-5. (Master Keys 6 onwards is not done in this tutorial)
Reminder, if you want more up-to-date and much more convenient way to get your Switch's Keys, use Lockpick by shchmue (available in nx-appstore/homebrew store)


Tutorial — (Outdated for Switch's on firmware 6.x or newer)


#1 - Dumping System Keys (Biskeydump)#2 - Dumping Required Files#3 - Hactool Preparation#4 - Dumping KeysFinal WordsTroubleshooting


  1. We need to get your Secure Boot Key (SBK) and Tegra Security Co-processor Key (TSEC) before we can get the main keys.
    These are 100% console unique.

    1. Download and extract biskeydump.bin from biskeydumpvx.zip
      - Follow this tutorial but instead of using CTCaer's Hekate Mod .bin file, use the biskeydump.bin file
      - If the QR Code is Blue, Scan the QR Code with your Phone, Laptop e.t.c
      - If you cant find a device you can scan with, type them out into your PC/Laptop (Its highly recommended to scan the QR Code, as a lot of characters can look like another, O0, Il, rn can look like m, e.t.c)
    2. Once you have the biskeydump of your System, store all the keys you received somewhere safe, I recommend a secure cloud storage aswell as a USB Stick, perhaps even print it.
      - Don't give this to ANYONE, Seriously.

    If you get any errors please go to the Troubleshooting Tab.


    1. Follow this tutorial AGAIN but this time use CTCaer's Hekate Mod.
      - "Tools" -> "Backup..." -> "Backup eMMC BOOT0/1"
      - "Tools" -> "Backup..." -> "Backup eMMC SYS"
      - Back all the way to the first menu, and choose "Power off"
    2. Take the microSD Card out of your Switch and into your PC.
    3. Copy both "BOOT0" and "BCPKG2-1-Normal-Main" from "sd:/backup/xxxxxx/" (xxxxxx is different for everyone) to "hactool" on your Desktop (create the "hactool" folder)
      - Rename them with .bin at the end, "BOOT0.bin", "BCPKG2-1-Normal-Main.bin"

    1. Download and install Python 2.7.x - NOT Python 3.x.x
      When installing, it will ask you what features you want installed, scroll to the bottom and make sure "Add Python to Path" has "Entire Feature Installed to HDD" option chose (No Red X Icon), otherwise the scripts wont find Python and WILL fail
    2. Download and extract hactool TO THE DESKTOP AND NAME THE FOLDER "hactool"
      On Linux/MacOS: clone and build hactool manually
    3. Right-click this (script originally by tesnos6921, patched by shadowninja108, jakibaki and shchmue)
      - Click "Save link as" / "save as"
      - Set "Save as type" to "All Files"
      - Name it "keys.py"
      And finally save it to the hactool folder you placed in the Desktop.
      NOTICE TO GBATEMP STAFF: The "keys" inside this file, are NOT keys, they are SHA digest hashes used to search through files to find text that matches, which would be the keys.

    1. Press WIN(Btn)+R to open "Run", type "cmd" and press Ctrl+Shift then Enter to open Command Prompt as an Administrator
    2. Type (in order) or Copy the following and paste into Command Prompt (Some Windows Versions use Right Click to Paste, some use CTRL+C)
      python -m pip install --upgrade pip
      pip install lz4
      cd Desktop/hactool

      python keys.py SBK_Here_From_Biskeydump TSEC_Here_From_Biskeydump
    3. It should say: "Now you can do hactool --keyset=keys.txt to use them!", if it does, and there's no warning messages, you're good to go! :O
    If you get any errors please go to the Troubleshooting Tab.

  2. You now have a keys.txt file with your console-specific keys inside.
    Rename as needed by any software that requires a different name or file extension, it doesn't matter.
    Though I highly recommend renaming it to prod.keys as this filename for Key file's is becoming a popular choice with other software
    There may be more keys, as the Switch's lifecycle goes on, more and more keys will be needed as the firmwares grow and grow.
    • The Hactool warning:
      Code:
      [WARN] prod.keys does not exist.
      can be safely ignored.
      - if you want to place your "keys.txt" file their, put "keys.txt" on your Desktop and run the following with Administrator Command Prompt (Step #4.1 for instructions):
      Code:
      mkdir -p %USERPROFILE%\.switch
      move "%USERPROFILE%\Desktop\keys.txt" "%USERPROFILE%\.switch\prod.keys"

  3. #1 ISSUES:
    • Code:
      Red QR Code Outline
      - The reasons this can occur is quite a rarity, all I can say is to keep rebooting and trying again.
      - If there's a new version of biskeydump out, try using the newer biskeydump.bin
    • Code:
      QR Code not being scanned by your Reader
      - Align your QR Code Readers alignment overlay with the Blue Square's Corners/Edges, NOT the QR Code's Corners/Edges.
      - Clean your camera lens
      - Be in a bright room

    #4 ISSUES:
    • Code:
      File "keys.py", line ...
      print message
      ^
      SyntaxError: Missing parentheses in call to 'print'. Did you mean print(message)?
      - You didn't place SBK and TSEC in the 4th line of the Command in Step #4.2
      - You installed Python 3.x.x when you must use 2.7.x, uninstall python, logout of windows (important it removes python from PATH) and follow Step #3.2 then move back to #4.1
    • Code:
      import lz4.block
      File "C:\Python27\lib\site-packages\lz4\__init__.py", line 17, in <module>
      from ._version import ( # noqa: F401
      ImportError: DLL load failed: The specified module could not be found.
      - The 2nd line of the Command in Step #4.2 failed without you noticing. Try running the 1st line to upgrade pip and if that goes successfully run the 2nd line to install lz4 and see if it successfully installs.
 
Last edited by shchmue,

Cencil

Well-Known Member
Member
Joined
Aug 24, 2016
Messages
292
Trophies
0
XP
1,122
Country
Canada
There is no way around the error when trying to dump keys on a 6.2.0 switch?? Gotta be another way to get the keys on 6.2.0 to be able to install NSPs and XCI's by now...6.2.0 is cracked :/
 

Blootor

New Member
Newbie
Joined
Dec 9, 2018
Messages
2
Trophies
0
Age
44
XP
51
Country
Spain
There is no way around the error when trying to dump keys on a 6.2.0 switch?? Gotta be another way to get the keys on 6.2.0 to be able to install NSPs and XCI's by now...6.2.0 is cracked :/

There is a way around it, I did it yesterday. You need to use ChoiDujourNX to downgrade your firmware to 6.1.0, then you can get your keys. Upgrade back to 6.2.0 after.
 

Draxzelex

Well-Known Member
Member
Joined
Aug 6, 2017
Messages
19,011
Trophies
2
Age
29
Location
New York City
XP
13,379
Country
United States
There is no way around the error when trying to dump keys on a 6.2.0 switch?? Gotta be another way to get the keys on 6.2.0 to be able to install NSPs and XCI's by now...6.2.0 is cracked :/

There is a way around it, I did it yesterday. You need to use ChoiDujourNX to downgrade your firmware to 6.1.0, then you can get your keys. Upgrade back to 6.2.0 after.
Lockpick was released to not only replace kezplez, but can dump keys even on firmware 6.2
 
  • Like
Reactions: datnodude

chardido

Member
Newcomer
Joined
Dec 10, 2018
Messages
19
Trophies
0
Age
30
XP
80
Country
Italy
So I accidentally soft-bricked my Switch (restored earlier rawnand without matching boot files). Now I figured out that there is a possibility to heal it by reinstalling the firmware with another guide (How to install any Switch firmware unofficially), but first I need to get my keys.
I did everything from this guide, but at step 4, the following error occurred:


Using BOOT0.bin to get keys from package1...
Deriving keys...
Decrypting package1...
Using Secure_Monitor.bin to get keys to decrypt package2...
Decrypting package2...
Failed to decrypt PK21! Is correct key present?
Decompressing spl.kip1 and FS.kip1...
Traceback (most recent call last):
File "keys.py", line 409, in <module>
SPL_KIP1_f = open("ini1/spl.kip1", "rb")
IOError: [Errno 2] No such file or directory: 'ini1/spl.kip1'


I have correct SBK and TSEC keys, double checked. It seems that Hactool cannot decrypt package2 for some reason.
When I use the ctcaer/hekate bootloader to dump package1/2, it stucks on package2 as well.

I spent two days trying to figure this out. Can't find anything on the internet. Please help :wacko:

Did you solved? I'm in the same situation :( My keys are correct, just checked
 
Last edited by chardido,

thesjaakspoiler

Well-Known Member
Member
Joined
Nov 20, 2018
Messages
975
Trophies
0
Age
124
XP
1,485
Country
Afghanistan
For one Switch (6.2.0) the keys.py script worked fine but for another Switch (also 6.2.0) also throws this error :
Using BOOT0.bin to get keys from package1...
Could not find keyblob_mac_key_source! Please check the integrity of the data used in the current stage!

I tried to dumping all the secure_boot_key and tsec_key again with biskeydumpv7 but they are exactly the same.
Also tried dumping Boot0+eMMC SYS again but they are aso exactly the same.
No errors during the dumping process.

The only difference I see between the 2 Switches is that 1 was upgraded from 4.1.0 to 6.2.0 and the one giving problem was upgraded from 6.1.0 to 6.2.0.

Is there any way to verify the secure_boot_key , tsec_key and bin files are valid?
 

thesjaakspoiler

Well-Known Member
Member
Joined
Nov 20, 2018
Messages
975
Trophies
0
Age
124
XP
1,485
Country
Afghanistan
To follow up on my endevour to identify what caused the error "Could not find keyblob_mac_key_source!",
I dumped my keys with the homebrew app Lockpick.
Looking at the prod.keys, it turns out my tsec and sbk key were correctly dumped by Hekate.
So that leaves either the BOOT0 dump, keys.py or hactool.
I compiled hactool on another linux box and it threw the same error again.
So that only leaves BOOT0.
But package1.bin and package2.bin are correctly extracted by the keys.py script.
So we're maybe looking at some weird border case....

Anybody any idea to how to check if BOOT0, package1.bin and package2.bin are valid?
I presume they are encrypted differently for each console.

Is there any other tool around to dump BOOT0 besides Hekate?
 

shchmue

Developer
Developer
Joined
Dec 23, 2013
Messages
791
Trophies
1
XP
2,367
Country
United States
I'm not going to update this script anymore as it's super outdated and shouldn't be used. Present, up-to-date recommendations here include Lockpick for homebrew and HACGUI for RCM. At time of writing, Lockpick is the only solution that will get 06-keys if you follow the instructions while on firmware 6.2.0. Equivalent support via HACGUI is on the way, but for now it works on < 6.2.0.
 

chardido

Member
Newcomer
Joined
Dec 10, 2018
Messages
19
Trophies
0
Age
30
XP
80
Country
Italy
I'm not going to update this script anymore as it's super outdated and shouldn't be used. Present, up-to-date recommendations here include Lockpick for homebrew and HACGUI for RCM. At time of writing, Lockpick is the only solution that will get 06-keys if you follow the instructions while on firmware 6.2.0. Equivalent support via HACGUI is on the way, but for now it works on < 6.2.0.

I need the key for 6.2.0, cause my Switch is bricked (blue screen on boot).
I must wait an update of Hacgui or there is another method to retrieve keys from switch?
 

DaveSwitch

Well-Known Member
Newcomer
Joined
Jul 15, 2018
Messages
47
Trophies
0
Age
24
Location
Hyrule Castle
XP
293
Country
Canada
Help pls
 

Attachments

  • Error PYTHON.PNG
    Error PYTHON.PNG
    2.5 KB · Views: 129
  • Like
Reactions: Mambitos

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: @CameronCataclysm...