Example #1
0
        public static void checkEncrypted(ref byte[] pkm)
        {
            int format = getPKMDataFormat(pkm);

            switch (format)
            {
            case 1:
            case 3:     // TOneverDO, nobody exports encrypted pk3s
                return;

            case 4:
            case 5:
                if (BitConverter.ToUInt16(pkm, 4) != 0)     // BK4
                {
                    return;
                }
                if (BitConverter.ToUInt32(pkm, 0x64) != 0)
                {
                    pkm = PKX.decryptArray45(pkm);
                }
                return;

            case 6:
            case 7:
                if (BitConverter.ToUInt16(pkm, 0xC8) != 0 && BitConverter.ToUInt16(pkm, 0x58) != 0)
                {
                    pkm = PKX.decryptArray(pkm);
                }
                return;

            default:
                return;     // bad!
            }
        }
Example #2
0
        public static void checkEncrypted(ref byte[] pkm)
        {
            int format = getPKMDataFormat(pkm);

            switch (format)
            {
            case 1:
            case 2:     // no encryption
                return;

            case 3:
                if (pkm.Length == PKX.SIZE_3CSTORED || pkm.Length == PKX.SIZE_3XSTORED)
                {
                    return;     // no encryption for C/XD
                }
                ushort chk = 0;
                for (int i = 0x20; i < PKX.SIZE_3STORED; i += 2)
                {
                    chk += BitConverter.ToUInt16(pkm, i);
                }
                if (chk != BitConverter.ToUInt16(pkm, 0x1C))
                {
                    pkm = PKX.decryptArray3(pkm);
                }
                return;

            case 4:
            case 5:
                if (BitConverter.ToUInt16(pkm, 4) != 0)     // BK4
                {
                    return;
                }
                if (BitConverter.ToUInt32(pkm, 0x64) != 0)
                {
                    pkm = PKX.decryptArray45(pkm);
                }
                return;

            case 6:
            case 7:
                if (BitConverter.ToUInt16(pkm, 0xC8) != 0 && BitConverter.ToUInt16(pkm, 0x58) != 0)
                {
                    pkm = PKX.decryptArray(pkm);
                }
                return;

            default:
                return;     // bad!
            }
        }
Example #3
0
 public override byte[] decryptPKM(byte[] data)
 {
     return(PKX.decryptArray(data));
 }