Hacking Sigpatches for Atmosphere (Hekate, fss0, fusee & package3)

  • Thread starter Thread starter ShadowOne333
  • Start date Start date
  • Views Views 5,230,772
  • Replies Replies 7,342
  • Likes Likes 266
I do not use sigpatches whatsoever. They aren't even on my card and I removed the sigpatch line from my hekate_ipl,ini. Only sys-patch and everything works fine.
Ay that works for me man 🤷🏻‍♂️ Neato! I just assume that when you update your console firmware, it's just kind of a "try it and see" if sys-patch still works?
 
  • Like
Reactions: Blythe93
Oh.... Well correct me if I'm wrong here, but I thought that if you have a working build of sys-patch, then there's zero reason to even need sigpatches right? Or no? 🤔
is up to you to read AT LEAST the OP, and make the decision, you also can read the last 2 pages and get more information.
 
is up to you to read AT LEAST the OP, and make the decision, you also can read the last 2 pages and get more information.
Well I kinda knew this already before posting, but sometimes after 186 pages of discussion, things change I assumed. But nah not in this case, pretty spot on.
 
Fellow tempers The most recent version of IPS Patch Creator is out, IPS Patch Creator 1.5.8, with support for ANY FIRMWARE and Atmosphère is here:

https://gbatemp.net/download/ips-patch-creator-1-5-8.38703/

This new version even allows you to create the keyset from a folder containing any Firmware version files.
 
******************************************************************
IMPORTANT
******************************************************************

With the help of:






A NEW SET OF SIGPATCHES FOR 18.1.0 has been created some changed and some where added. PLEASE TAKE NOTE AND UPGRADE YOURS (Note V2 was added to the end of the new file)
thank you so much. i was going crazy that my nro forwarders, tinfoil, and patched youtube wouldn't launch but everything else would.
 
  • Like
Reactions: impeeza
This new version even allows you to create the keyset from a folder containing any Firmware version files.
Are you sure in this?

I see that "IPS Patch creator" has hardcoded master_key_00, mariko_bek, mariko_kek keys that it exports to tmpkeys.txt and after that call hactoolnet.exe -t keygen to generate all other master keys using hardcoded in hactoolnet master_key_sources

So, 1) it do contain copyrighted materials 2) update for hardcoded sources needed to work on new firmware
Post automatically merged:

My bad. Missed part where it reads mariko_master_kek_source from fw files.
 
Last edited by duckbill007,
Are you sure in this?

I see that "IPS Patch creator" has hardcoded master_key_00, mariko_bek, mariko_kek keys that it exports to tmpkeys.txt and after that call hactoolnet.exe -t keygen to generate all other master keys using hardcoded in hactoolnet master_key_sources

So, 1) it do contain copyrighted materials 2) update for hardcoded sources needed to work on new firmware
Post automatically merged:

My bad. Missed part where it reads mariko_master_kek_source from fw files.
Yes, you have to provide the firmware files.

And also remember this process CAN NOT extract you console private keys...
 
Last edited by impeeza,
  • Like
Reactions: josete2k
No. Ips patch creator has them hardcoded. Just look at source code.
Post automatically merged:

Functions mk0(), mkk() and mkb() just writes to keyfile predefined hardcoded keys.
 
Last edited by duckbill007,
  • Like
Reactions: impeeza
No. Ips patch creator has them hardcoded. Just look at source code.
Post automatically merged:

Functions mk0(), mkk() and mkb() just writes to keyfile predefined hardcoded keys.
No they are not, they are generated on the fly, git repo is open to the public and you can see the code yourself. Keys are generated from user input only and not embedded in the code.

MK0 code generated like this:

Code:
 private void mk0()
        {
            keygenerator = Keygen();
            if (keygenerator.Length != 4)
            {
                keygenerator = "0000";
            }
            byte[] w = Encoding.ASCII.GetBytes(keygenerator);
            try
            {
                int zero = w[0] - 49;
                int one =  w[1] - 49;
                int two = w[2] - 49;
                int three = w[3] - 49;

                byte[] x = new byte[4] { ((byte)zero), ((byte)one), ((byte)two), ((byte)three) };
                int key1 = x[2] * 97; int key2 = x[2] * 101; int key3 = x[2] * 87 + 1; int key4 = x[2] * 120;
                int key5 = x[2] * 68 + 1; int key6 = x[2] * 92 + 1; int key7 = x[2] * 87; int key8 = x[2] * 106 + 1;
                int key9 = x[2] * 43; int key10 = x[2] * 74; int key11 = x[2] * 67 + 1; int key12 = x[2] * 48;
                int key13 = x[2] * 42 + 1; int key14 = x[2] * 19 + 1; int key15 = x[2] * 14; int key16 = x[2] * 62 + 1;
                string keystring = (key1.ToString("X2") + key2.ToString("X2") + key3.ToString("X2") + key4.ToString("X2") + key5.ToString("X2") + key6.ToString("X2") + key7.ToString("X2") + key8.ToString("X2"));
                string keystring2 = (key9.ToString("X2") + key10.ToString("X2") + key11.ToString("X2") + key12.ToString("X2") + key13.ToString("X2") + key14.ToString("X2") + key15.ToString("X2") + key16.ToString("X2"));
                Clipboard.Clear();
                //clear array
                Array.Clear(w, 0, w.Length);
                Array.Clear(x, 0, x.Length);
                var plainTextBytes = System.Text.Encoding.UTF8.GetBytes("master_key_00 = " + keystring + keystring2);
                string clip = System.Convert.ToBase64String(plainTextBytes);
                Clipboard.SetText(clip);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error is: " + ex.Message);
            }
        }

Depends on user input string to calculate keys.
 
Last edited by miniminx,
  • Love
Reactions: impeeza
If you get binary from provided link, you'll get following code:
private void mk0()
{
try
{
byte[] numArray = new byte[4]
{
(byte) 0,
(byte) 1,
(byte) 2,
(byte) 3
};
int num1 = (int) numArray[2] * 97;
int num2 = (int) numArray[2] * 101;
int num3 = (int) numArray[2] * 87 + 1;
int num4 = (int) numArray[2] * 120;
int num5 = (int) numArray[2] * 68 + 1;
int num6 = (int) numArray[2] * 92 + 1;
int num7 = (int) numArray[2] * 87;
int num8 = (int) numArray[2] * 106 + 1;
int num9 = (int) numArray[2] * 43;
int num10 = (int) numArray[2] * 74;
int num11 = (int) numArray[2] * 67 + 1;
int num12 = (int) numArray[2] * 48;
int num13 = (int) numArray[2] * 42 + 1;
int num14 = (int) numArray[2] * 19 + 1;
int num15 = (int) numArray[2] * 14;
int num16 = (int) numArray[2] * 62 + 1;
string str1 = num1.ToString("X2") + num2.ToString("X2") + num3.ToString("X2") + num4.ToString("X2") + num5.ToString("X2") + num6.ToString("X2") + num7.ToString("X2") + num8.ToString("X2");
string str2 = num9.ToString("X2") + num10.ToString("X2") + num11.ToString("X2") + num12.ToString("X2") + num13.ToString("X2") + num14.ToString("X2") + num15.ToString("X2") + num16.ToString("X2");
Clipboard.Clear();
Clipboard.SetText("master_key_00 = " + str1 + str2);
}
catch (Exception ex)
{
int num = (int) MessageBox.Show("Error is: " + ex.Message);
}
}
Post automatically merged:

If you look at source code then function Keygen allows user to enter onlyt "1234":
if (value.All(Char.IsDigit) && value.Length == 4 && value == "1234")
{
return value;
}
else
{
MessageBox.Show("Try Entering 1234","Opps",MessageBoxButtons.OK,MessageBoxIcon.Information);
}

So, it is a hardcoded value.
 
Last edited by duckbill007,
  • Like
Reactions: ghjfdtg
Yeah, that looks literally like a self contained keygen. If you do these calculations by hand you get the key.
 
If you get binary from provided link, you'll get following code:
private void mk0()
{
try
{
byte[] numArray = new byte[4]
{
(byte) 0,
(byte) 1,
(byte) 2,
(byte) 3
};
int num1 = (int) numArray[2] * 97;
int num2 = (int) numArray[2] * 101;
int num3 = (int) numArray[2] * 87 + 1;
int num4 = (int) numArray[2] * 120;
int num5 = (int) numArray[2] * 68 + 1;
int num6 = (int) numArray[2] * 92 + 1;
int num7 = (int) numArray[2] * 87;
int num8 = (int) numArray[2] * 106 + 1;
int num9 = (int) numArray[2] * 43;
int num10 = (int) numArray[2] * 74;
int num11 = (int) numArray[2] * 67 + 1;
int num12 = (int) numArray[2] * 48;
int num13 = (int) numArray[2] * 42 + 1;
int num14 = (int) numArray[2] * 19 + 1;
int num15 = (int) numArray[2] * 14;
int num16 = (int) numArray[2] * 62 + 1;
string str1 = num1.ToString("X2") + num2.ToString("X2") + num3.ToString("X2") + num4.ToString("X2") + num5.ToString("X2") + num6.ToString("X2") + num7.ToString("X2") + num8.ToString("X2");
string str2 = num9.ToString("X2") + num10.ToString("X2") + num11.ToString("X2") + num12.ToString("X2") + num13.ToString("X2") + num14.ToString("X2") + num15.ToString("X2") + num16.ToString("X2");
Clipboard.Clear();
Clipboard.SetText("master_key_00 = " + str1 + str2);
}
catch (Exception ex)
{
int num = (int) MessageBox.Show("Error is: " + ex.Message);
}
}
Post automatically merged:

If you look at source code then function Keygen allows user to enter onlyt "1234":
if (value.All(Char.IsDigit) && value.Length == 4 && value == "1234")
{
return value;
}
else
{
MessageBox.Show("Try Entering 1234","Opps",MessageBoxButtons.OK,MessageBoxIcon.Information);
}

So, it is a hardcoded value.

Yeah, that looks literally like a self contained keygen. If you do these calculations by hand you get the key.
But the keys ARE NOT INCLUDED ON THE CODE, Big N CAN ONLY COPYRIGHT CODE no math expressions, also no one bit of original Big N code is included SO IS UP TO YOU IF YOU LIKE TO USE OR NOT. As no copyrighted material is included ninjas can not DCMA the source.
 
It's not as simple as that. I doubt a keygen would hold up in court. "CSS flags" on the other hand are proven to work.

edit:
https://en.wikipedia.org/wiki/Illegal_number
Yes the ninja are mages to interpreter what they can consider DCMA-ble but your example is clear is illegal THE NUMBER no a math function which MAY generate the number, you need to give to the function a SPECIFIC input to get the number if you feed the equation with another input the number is not generated SO THE MATH FUNCTION IS NOT ILLEGAL.

But all of you can choose do not use the program, also please STOP HIJACKING this thread, there is another thread about IPS Patch Creator, you can continue your diatribe there.
 
  • Like
Reactions: oggi

Site & Scene News

Popular threads in this forum