Ejemplo n.º 1
0
 public void setBlockCrypt(byte[] input, int index)
 {
     //Encrypt
     byte[] encrypt = new byte[getBlockLength(index)];
     encrypt = PKX5.cryptoArray(input, blocks[index].crypto.start, blocks[index].crypto.length, blocks[index].crypto.seed);
     setBlock(encrypt, index);
 }
Ejemplo n.º 2
0
        public DreamRadar()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();

            drkey = new DRKEY(MainForm.save.getBlock(drkeyblock));
            dra   = new DRA(MainForm.save.dslinkA_get());
            drb   = new DRB(PKX5.cryptoXor32Array(MainForm.save.dslinkB_get(), 0, 0x7C, 0x7C));           //Get 3DS link data decrypted

            if (dra.received == false)
            {
                MessageBox.Show("Warning! There's unreceived data in the savegame!");
                dra.key = drb.EncKey ^ drkey.FLAGS;              //This makes editing the data possible without messing up the current encryption
            }

            if (drb.illegal == true)
            {
                allmode.Checked = true;
                set_all_list();
            }
            else
            {
                legitmode.Checked = true;
                set_legal_list();
            }

            load_data();

            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
        }
Ejemplo n.º 3
0
 void Saveexit_butClick(object sender, EventArgs e)
 {
     set_data();
     MainForm.save.setBlock(drkey.Data, 72);
     MainForm.save.dslinkA_set(dra.Data);
     MainForm.save.dslinkB_set(PKX5.cryptoXor32Array(drb.Data, 0, 0x7C, 0x7C));
     this.Close();
 }
Ejemplo n.º 4
0
        void Clean_butClick(object sender, EventArgs e)         //Right now this button is disabled as we know how to edit all the data
        {
            drkey.reinit();
            dra.reinit();
            drb.reinit();

            MainForm.save.setBlock(drkey.Data, 72);
            MainForm.save.dslinkA_set(dra.Data);
            MainForm.save.dslinkB_set(PKX5.cryptoXor32Array(drb.Data, 0, 0x7C, 0x7C));
            this.Close();
        }
Ejemplo n.º 5
0
        public byte[] getBlockDec(int index)
        {
            byte[] decrypt = new byte[getBlockLength(index)];

            int blocksnum    = 0;
            int backupoffset = 0;

            if (B2W2)
            {
                blocksnum    = CrcTableBW2;
                backupoffset = SIZE2;
            }
            else if (BW)
            {
                blocksnum    = CrcTableBW;
                backupoffset = SIZE1;
            }
            else
            {
                return(null);
            }

            if (index < blocksnum)
            {
                //MessageBox.Show(decrypt.Length.ToString());
                //MessageBox.Show((blocks[index].Length-4).ToString());
                decrypt = PKX5.cryptoArray(Data.Skip(blocks[index].Offset).Take(blocks[index + 1].Offset - blocks[index].Offset).ToArray(), blocks[index].crypto.start, blocks[index].crypto.length, blocks[index].crypto.seed);
                //MessageBox.Show((blocks[index].Length-4).ToString());
                return(decrypt);
            }
            else if (index == 73)
            {
                return(Data.Skip(blocks[index].Offset).Take(backupoffset - blocks[index].Offset).ToArray());
            }
            else
            {
                return(null);
            }
        }