[Release] HACToolGUI - A very simple GUI for HACTool

Updated to Version 0.3a - urgent bug fix because I accidentally completely broke the program.

New:
Official Discord support server!
Source code now available!



Well, in honour of Master_Key_01 and Master_Key_02's release, I present to you...
HACToolGUI!

m0GW3mg.png


It does everything you need to extract XCI, NCA and RomFS files, support for other formats coming soon.

:switch: Features:
Simple to use and easy to understand GUI
Built-in keylist manager (Bring your own keys)
Uses HACTool to extract XCI, NCA and RomFS files
Supports all keys
Choose to dump as plaintext NCA, RomFS or to extract the files to a folder
Tiny filesize; around 120KB decompressed
Portable, no installation required

:switch: Dependencies:
Requires the latest release of hactool.exe and all its .dll files in the same directory.
Get it from here.

SI3CDlT.png

XWmJZx6.png

rjxr1FA.png
Complete v0.3 change list:

  • Added PFS0 support! (Used in .nsp)
  • Automatically fills in the textboxes with keydata from keys.dat when key manager is opened. (Also added a manual option)
  • Drag-and-drop file support added for all extraction types
  • Key manager button added to main screen
  • Internet access no longer required for use; now you can check for updates by clicking the option
  • Remembers last selected NCA extraction option
  • Remembers previous directory used
  • NCA extraction is disabled unless keys are filled and a key file is present
  • Checks for incorrectly formatted keys.dat
  • Quotes no longer required in directory names


Coming soon:
  • Name change
  • The hactool files will not be required, the code will be built into the program
  • Key verification
  • Key derivation, the usual stuff, but will also generate the master_key, package1_key and various others from a supplied keyblob, provided you have the wrapper key for the specific keyblob and the console-unique SBK and TSEC keys
  • Bulk file extraction
  • Support for all other hactool formats, including Rights ID-encrypted NCAs and SD card files
  • Built-in CDN downloader, provide a private key and cert, then add the Title ID, it will get the latest version of the meta file, decrypt the NCA, read the cnmt, get the NCAID of each file and download the NCA of them from the Atum server (provided you have the keys)
  • Various file type extractors (BFSAR, BFRES, BFGRP, SARC, SZS, Yaz0, etc.)
  • Background music (optional)
  • Themes (optional)
  • More easter eggs
 

Attachments

  • HACToolGUI_v0_3a.zip
    88.4 KB · Views: 14,291
Last edited by SimonMKWii,

bobthecooldad

New Member
Newbie
Joined
Mar 9, 2018
Messages
1
Trophies
0
Age
27
XP
70
Country
United Kingdom
Would it be possible to add multiple files (I know someone asked earlier).
I made a rough idea in python (only language i know) However if i run it it will get access denied with the cmd console. (it doesnt run the .cnmt files as it removes it from the list)
github.co m/bobthecooldad/Hac-tool-loader (wont let me post links as i am to new)
 

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,297
Country
United States
Maybe SciresM does not like that they touch their codes for modifications and facilitate piracy. In any case, everyone expects not only to extract Files from the Switch, but to inject them and run the code without the need for certification, and that is only possible with CFW.

No, I don't care about that shit.

GUIs are highly accessible to tech illiterate people -- inevitably when I update hactool with new stuff or if I ever break compatibility with argument names (as I've done a few times) this GUI will cause tech illiterate people to bug me for help.

Hence why this GUI's existence is unfortunate.

(It's my opinion, frankly, that if you're technically literate enough to muck around with game's internals, you should be technically literate enough to use a command line.)
 
Last edited by SciresM,

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,297
Country
United States
Oh, ugh, @SimonMKWii if this absolutely must exist remove the ".istorage" crap -- that extension was a mistake due to lack of documentation at the time and has since been fixed in Yuzu/other relevant places to properly be .romfs.

Perpetuating the "istorage" mistake is awful.
 

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
No, I don't care about that shit.

GUIs are highly accessible to tech illiterate people -- inevitably when I update hactool with new stuff or if I ever break compatibility with argument names (as I've done a few times) this GUI will cause tech illiterate people to bug me for help.

Hence why this GUI's existence is unfortunate.

(It's my opinion, frankly, that if you're technically literate enough to muck around with game's internals, you should be technically literate enough to use a command line.)
Oh, ugh, @SimonMKWii if this absolutely must exist remove the ".istorage" crap -- that extension was a mistake due to lack of documentation at the time and has since been fixed in Yuzu/other relevant places to properly be .romfs.

Perpetuating the "istorage" mistake is awful.
I'm going to be adding online update capabilities to version 0.2, this will check for both a GUI revision and any new hactool release revisions.
Also, if anyone bugs you for help with my GUI, I will happily take the blame. I might add a manual to the GUI, if so, the first page would state (in no uncertain terms) to direct all questions to me, not to SciresM.
I'll also make it very clear that you had absolutely no part in this GUI's creation.

Regarding the .istorage thing, yeah, I'll fix it ASAP.
Too many people perpetuated the .istorage thing after BBB's fuckup, so I felt like I needed to refer to the RomFS files with the most widely-used term.
I'll update it so hactool outputs the file with the .romfs extension, per your request.

Thanks for the feedback!
 

FoxofGrey

Well-Known Member
Newcomer
Joined
Jul 1, 2016
Messages
92
Trophies
0
XP
396
Country
United States
I'm going to be adding online update capabilities to version 0.2, this will check for both a GUI revision and any new hactool release revisions.
Also, if anyone bugs you for help with my GUI, I will happily take the blame. I might add a manual to the GUI, if so, the first page would state (in no uncertain terms) to direct all questions to me, not to SciresM.
I'll also make it very clear that you had absolutely no part in this GUI's creation.

Regarding the .istorage thing, yeah, I'll fix it ASAP.
Too many people perpetuated the .istorage thing after BBB's fuckup, so I felt like I needed to refer to the RomFS files with the most widely-used term.
I'll update it so hactool outputs the file with the .romfs extension, per your request.

Thanks for the feedback!
While I'm thankful that you're considerate to how to adapt your program to SciresM's progression, there is one main problem that a GUI for a tool made for Reverse Engineering creates: incompetence.

I'm talking about the perpetuation that all of this reverse engineering can be done using a GUI. When, in reality, most, if not all of this work, is done through the terminal.

And sure, GUIs can be helpful regarding Operating Systems, programs that were made for tech illiterate individuals, and just convenience for the rest. But, if we don't want the United States (or even other countries) to see Reverse Engineering as nothing more as a bunch of skids DDoSing minecraft servers and people who want to pirate all of their programs, then the integrity of such programs like hactool should remain as terminal programs.
 

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
While I'm thankful that you're considerate to how to adapt your program to SciresM's progression, there is one main problem that a GUI for a tool made for Reverse Engineering creates: incompetence.

I'm talking about the perpetuation that all of this reverse engineering can be done using a GUI. When, in reality, most, if not all of this work, is done through the terminal.

And sure, GUIs can be helpful regarding Operating Systems, programs that were made for tech illiterate individuals, and just convenience for the rest. But, if we don't want the United States (or even other countries) to see Reverse Engineering as nothing more as a bunch of skids DDoSing minecraft servers and people who want to pirate all of their programs, then the integrity of such programs like hactool should remain as terminal programs.
I don't understand. Hactool was developed using knowledge achieved via RE, but there's pretty much nothing about the tool that "does" RE directly.
Saying it is made for RE would be factually incorrect.
The only function that is technically RE is its built-in key derivation.

Also, my GUI only does functions that hactool can do, and to lump it altogether as "enabling piracy" as implied in your post, it would be heavily insulting.
If a person decides to pirate the dump, that's on them entirely. I don't support it, but why treat everyone as pirates? It will also harm the people who dump their games legitimately.
Not only that, but saying it creates incompetence would be insulting to both my GUI and SciresM's tool.
 
Last edited by SimonMKWii,

FoxofGrey

Well-Known Member
Newcomer
Joined
Jul 1, 2016
Messages
92
Trophies
0
XP
396
Country
United States
I don't understand. Hactool was developed using knowledge achieved via RE, but there's pretty much nothing about the tool that "does" RE directly.
Saying it is made for RE would be factually incorrect.
The only function that is technically RE is its built-in key derivation.

Also, my GUI only does functions that hactool can do, and to lump it altogether as "enabling piracy" as implied in your post, it would be heavily insulting.
If a person decides to pirate the dump, that's on them entirely. I don't support it, but why treat everyone as pirates? It will also harm the people who dump their games legitimately.
Not only that, but saying it creates incompetence would be insulting to both my GUI and SciresM's tool.

>but there's pretty much nothing about the tool that "does" RE directly. The only function that is technically RE is its built-in key derivation.
Hactool's purpose was to data mine Switch games and other Switch applications. THAT is considered reverse engineering. At least that's what I gathered from SciresM's history.

>Also, my GUI only does functions that hactool can do, and to lump it altogether as "enabling piracy" as implied in your post, it would be heavily insulting.
There is a concept known as UX, or user experience. It can be the difference between the majority knowing about your program or only a select few. And with the amount of knowledge still not known about Switch hacking currently for the public will cause more people to beg these developers and making them wanting to continue updating these tools less.

>If a person decides to pirate the dump, that's on them entirely. I don't support it, but why treat everyone as pirates? It will also harm the people who dump their games legitimately.
What reason is there to dump games at the current moment? There is neither any emulation that is able to run these dumps, nor any way to load these backups onto the Switch. Thus, as I stated, there are more risks to releasing a GUI version of this application than pros.

>Not only that, but saying it creates incompetence would be insulting to both my GUI and SciresM's tool.
I said YOUR GUI tool creates incompetence within the community, not SciresM's tool. Like I've said, the only reason he came out with this tool is to help other developers understand the inner workings of applications and games.
 

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
>but there's pretty much nothing about the tool that "does" RE directly. The only function that is technically RE is its built-in key derivation.
Hactool's purpose was to data mine Switch games and other Switch applications. THAT is considered reverse engineering. At least that's what I gathered from SciresM's history.

>Also, my GUI only does functions that hactool can do, and to lump it altogether as "enabling piracy" as implied in your post, it would be heavily insulting.
There is a concept known as UX, or user experience. It can be the difference between the majority knowing about your program or only a select few. And with the amount of knowledge still not known about Switch hacking currently for the public will cause more people to beg these developers and making them wanting to continue updating these tools less.

>If a person decides to pirate the dump, that's on them entirely. I don't support it, but why treat everyone as pirates? It will also harm the people who dump their games legitimately.
What reason is there to dump games at the current moment? There is neither any emulation that is able to run these dumps, nor any way to load these backups onto the Switch. Thus, as I stated, there are more risks to releasing a GUI version of this application than pros.

>Not only that, but saying it creates incompetence would be insulting to both my GUI and SciresM's tool.
I said YOUR GUI tool creates incompetence within the community, not SciresM's tool. Like I've said, the only reason he came out with this tool is to help other developers understand the inner workings of applications and games.
No, hactool doesn't datamine Switch applications. It simply extracts files from within Nintendo's archive formats. The datamining is up to the person who wants to do something with these files.

You're implying that SciresM's program doesn't have good user experience, also, most of the Switch hacking knowledge is very much public.

Yes there is, it allows people to research the files. What if they want a game's soundtrack and it wasn't released? What if they want to search for unused content?
There's nothing risky about a GUI program whatsoever. If the pirates wanted it that badly, they would have figured out how to use the command-line tool.

Also, SciresM never stated this tool was strictly for developers. If he only wanted developers to have it, he'd either not make a release build, or just not have the code public.
 

DarthDub

Amateur Hacker
Member
Joined
Jan 26, 2016
Messages
2,834
Trophies
1
Age
34
Location
Your mom's basement.
Website
www.gaiaonline.com
XP
3,635
Country
United States
I'd like to make one suggestion. When output folder is blank, have it refuse to try to extract files. I spent an hour having it extract nothing when it was blank. Nonetheless, I extracted the music files from Xenoblade Chronicles 2 and converted them to mp3 format with ease using Foobar2000! Thanks for this wonderful frontend.
 
  • Like
Reactions: peteruk

SocraticBliss

Well-Known Member
Member
Joined
Jun 3, 2017
Messages
130
Trophies
0
Age
36
XP
273
Country
United States
Hactool's purpose was to data mine Switch games and other Switch applications. THAT is considered reverse engineering. At least that's what I gathered from SciresM's history.

Really? I thought of it more as a file info and extractor tool, like an un-zipper. You can do a lot of things with the files inside, but currently they are not all de-crypted... however, the release of this, we may have tech-noobs pushing both developers (unfairly) to focus on this tool, causing them to not continue development. In that case, I would just ignore them (like most developers).

There is a concept known as UX, or user experience. It can be the difference between the majority knowing about your program or only a select few. And with the amount of knowledge still not known about Switch hacking currently for the public will cause more people to beg these developers and making them wanting to continue updating these tools less.

So, tool accessibility based on tech knowledge? Why not just release the source code in assembly then? This doesn't resolve the underlying issue, as people can just use guides in order to do the same thing with the CLI, right?

Yes, this GUI tool makes it easier/more accessible to do a few of the more desired functions of this tool. However, the end user still has to go out of their way to get the files that they want to extract, and the complete tech illiterate wont know how to do that...

What reason is there to dump games at the current moment? There is neither any emulation that is able to run these dumps, nor any way to load these backups onto the Switch. Thus, as I stated, there are more risks to releasing a GUI version of this application than pros.

First of all, why are you trying to refute your own assertion of the purpose of the application? Data mining for things like soundtracks, if there are cross-platform games that have models that can be incorporated in other games that could be cool, or basically understanding the underlying game code from a learning perspective.
 
  • Like
Reactions: SimonMKWii

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
Really? I thought of it more as a file info and extractor tool, like an un-zipper. You can do a lot of things with the files inside, but currently they are not all de-crypted... however, the release of this, we may have tech-noobs pushing both developers (unfairly) to focus on this tool, causing them to not continue development. In that case, I would just ignore them (like most developers).



So, tool accessibility based on tech knowledge? Why not just release the source code in assembly then? This doesn't resolve the underlying issue, as people can just use guides in order to do the same thing with the CLI, right?

Yes, this GUI tool makes it easier/more accessible to do a few of the more desired functions of this tool. However, the end user still has to go out of their way to get the files that they want to extract, and the complete tech illiterate wont know how to do that...



First of all, why are you trying to refute your own assertion of the purpose of the application? Data mining for things like soundtracks, if there are cross-platform games that have models that can be incorporated in other games that could be cool, or basically understanding the underlying game code from a learning perspective.
Thank you! I'm glad you see this from my point of view.
 

SocraticBliss

Well-Known Member
Member
Joined
Jun 3, 2017
Messages
130
Trophies
0
Age
36
XP
273
Country
United States
Thank you! I'm glad you see this from my point of view.

Don't get too excited! I understand the "why" of you making it, it DOES makes sense, BUT if the original developer doesn't want a GUI to be released for the tool, then I respect their wishes, instead of releasing it anyways...
 
Last edited by SocraticBliss,

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
Don't get too excited! I understand the "why" of you making it, it DOES makes sense, BUT if the original developer doesn't want a GUI to be released for the tool, then I respect their wishes, instead of releasing it anyways...
To be honest, I only saw his post on the original hactool thread after I finished developing the first version.
 

SocraticBliss

Well-Known Member
Member
Joined
Jun 3, 2017
Messages
130
Trophies
0
Age
36
XP
273
Country
United States
To be honest, I only saw his post on the original hactool thread after I finished developing the first version.

And that's understandable, you saw a problem, and wanted to create a solution, nothing wrong with that... just gotta be careful with respecting the developers wishes when it comes publishing/releasing it.
 
  • Like
Reactions: peteruk

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • BakerMan @ BakerMan:
    fucking hell i'm becoming a mini leo with the way i yap aren't i?
    +1
  • impeeza @ impeeza:
    I was unable to create the VM for the debloat windows, but found the video where I learned it:

    https://www.youtube.com/watch?v=mZm6mY3I7J4
    +2
  • BigOnYa @ BigOnYa:
    No you def no leo, and I like your insight. You are a smart Baked cookie.
  • K3Nv2 @ K3Nv2:
    Chicken drumsticks and sweet potato for dinner tonight turned out good
    +1
  • BakerMan @ BakerMan:
    "i promise not to get all political and/or philosophical"
    3 drinks later:
    "so yeah think for yourself and i think the government sucks"
    +1
  • K3Nv2 @ K3Nv2:
    Is @BigOnYa drunk again
  • BakerMan @ BakerMan:
    no, i was poking fun at myself
  • BigOnYa @ BigOnYa:
    Again? I have a IV feeding me so I never come down.
    +2
  • BakerMan @ BakerMan:
    because self deprecating humor is important, as long as it doesn't turn into self hate. because you can't really make fun of anyone if you can't even make fun of yourself
    +2
  • Psionic Roshambo @ Psionic Roshambo:
    Booze enemas are real lol
  • The Real Jdbye @ The Real Jdbye:
    that explains a lot
    +1
  • K3Nv2 @ K3Nv2:
    @BigOnYa, invented the first ever pill that gets you instantly hammered, now filling the streets of Miami
  • BigOnYa @ BigOnYa:
    That was what called a qaaulude, instant drunk, luckily they not around anymore.
    +1
  • K3Nv2 @ K3Nv2:
    Tylenol midday
  • Psionic Roshambo @ Psionic Roshambo:
    Ambian the stuff of dreams lol
  • K3Nv2 @ K3Nv2:
    Nyquill with grape juice
  • realtimesave @ realtimesave:
    wow that didn't work lol
  • realtimesave @ realtimesave:
    tried to paste a pic
  • K3Nv2 @ K3Nv2:
    Stop getting your creamy paste all over
    +2
  • impeeza @ impeeza:
    DO NOT WORK FOR ME :(
  • BigOnYa @ BigOnYa:
    I think he has a wedgie, and is afraid to fix it in public.
    +1
    Psionic Roshambo @ Psionic Roshambo: Thong +1