Beispiel #1
0
    //read binary data
    public void readBinary(string tableName)
    {
        ClearData();

        TextAsset binaryStream = null;

// #if UNITY_EDITOR
//      if (Constants.USE_ASSETBUNDLE)
//      {
//          binaryStream = ResourceLibrary.instance.Load(AssetBundleManager.EBundleType.eDat, tableName) as TextAsset;
//      }
//      else
//      {
//          binaryStream = (TextAsset)UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/Resources/dat/"+tableName+".bytes", typeof(TextAsset));
//      }
// #else
//      binaryStream = ResourceLibrary.instance.Load(AssetBundleManager.EBundleType.eDat, tableName) as TextAsset;
// #endif


        binaryStream = Resources.Load("table/" + tableName + "") as TextAsset;

        if (binaryStream == null)
        {
            Debug.Log("Error reading table:" + tableName);
            return;
        }

        // 暂时关闭hash检查
        // if (!HashTable.Contains(~ComputeHash(binaryStream.bytes)))
        // {
        //     Application.Quit();
        // }

        byte[] bytes = TEA.decode(binaryStream.bytes);

        MemoryStream ms = new MemoryStream(bytes);
        BinaryReader br = new BinaryReader(ms, Encoding.Unicode);

        int columns = 0, rows = 0;

        rows    = br.ReadInt32();
        columns = br.ReadInt32();

        _nRows    = rows;
        _nColumns = columns;

        if (_nRows == 0 || _nColumns == 0)
        {
            Debug.Log("Error reading tablesize Rows is " + _nRows.ToString() + " and _nColumns is " + _nColumns.ToString() + ".");
        }
        _data = new string[_nRows, _nColumns];
        for (int i = 0; i < rows; i++)
        {
            for (int j = 0; j < columns; j++)
            {
                _data[i, j] = br.ReadString();
            }
        }
    }
Beispiel #2
0
            public C2SAskLogin(ByteBuffer buffer, Connection connection, sbyte[] key = null) : base(3, connection)
            {
                key = new sbyte[] { 00, 00, 00, 00 };
                //TODO implement dynamic key;
                _unk1 = buffer.ReadBlock(4);
                //get username without trailing zeros
                var uname = buffer.ReadBlock(50);

                for (int i = 0; i < uname.Length; i++)
                {
                    if (uname[i] == 0)
                    {
                        byte[] help = new byte[i];
                        Array.Copy(uname, help, i);
                        Username = Encoding.ASCII.GetString(help);
                        break;
                    }
                }

                _unk2        = buffer.ReadBlock(1);
                _encPassword = buffer.ReadBlock(16);
                var decPWBytes = TEA.passwordDecodeSBytes(ByteUtils.ToSbytes(_encPassword), key);

                DecPassword = Encoding.ASCII.GetString(ByteUtils.ToByteArray(decPWBytes));
                _unk3       = buffer.ReadBlock(8);
            }
        public void TEAEcnryption(FileInfo file, FormModel model)
        {
            bool threadSuccesfull = false;
            var  timeStarted      = DateTime.Now;

            try
            {
                //OutputFileName
                string outputFileName = FileNameCreator.CreateFileEncryptedName(
                    model.Folders.OutputFolder,
                    file.Name,
                    model.AlgorithmName);

                //Log
                loggerController.Add(" ! File enc: " + file.Name + ", Alg: " + model.AlgorithmName);

                //Read a file char by char, and encrypt it
                using (FileStream fsw = new FileStream(outputFileName, FileMode.Create))
                {
                    using (BinaryWriter bw = new BinaryWriter(fsw, new ASCIIEncoding()))
                    {
                        //Writing the extension
                        char[] extension       = file.Extension.Substring(1, file.Extension.Length - 1).ToCharArray();
                        char   extensionLength = (char)extension.Length;
                        bw.Write(extensionLength);
                        for (var k = 0; k < extension.Length; k++)
                        {
                            bw.Write(extension[k]);
                        }

                        //Reading and encrypting files
                        var readedValue    = File.ReadAllBytes(file.FullName);
                        var encryptedValue = TEA.Encrypt(readedValue);
                        bw.Write(encryptedValue);

                        if (LoadedFilesController._END_OF_ENC_DEC_THREADS)
                        {
                            bw.Dispose();
                            fsw.Dispose();
                            File.Delete(outputFileName);
                            Thread.CurrentThread.Abort();
                        }
                    }
                }
                threadSuccesfull = true;
                Thread.Sleep(250);
            }
            catch (Exception ex)
            {
                loggerController.Add(" ? Enc exception: " + ex.Message);
                threadSuccesfull = false;
            }
            finally
            {
                this.ThreadEnds(file, threadSuccesfull, timeStarted);
            }
        }
Beispiel #4
0
        static void Main(string[] args)
        {
            byte[]         plain = Encoding.ASCII.GetBytes("Never gonna give you up never gonna get you down");
            byte[]         key   = "abcd12344321dcbadeadbeef12345678".ToByteArray();
            TEA            tea   = new TEA();
            TEA            tcc   = new TEA(0xcccccccc);
            EncryptionMode cbc   = new EncryptionMode(
                sizeof(uint) * 2,
                (p, i, k) => tea.Encryptor(p, i, k, 0),
                (c, i, k) => tea.Decryptor(c, i, k, 0)
                );
            EncryptionMode cbccc = new EncryptionMode(
                sizeof(uint) * 2,
                (p, i, k) => tcc.Encryptor(p, i, k, 0),
                (c, i, k) => tcc.Decryptor(c, i, k, 0)
                );
            var fc  = cbc.EncryptCBC(out byte[] fciv, plain, key);
            var fcc = cbccc.EncryptCBC(out byte[] fcciv, plain, key);
            var ic  = tea.EncryptCBC(out byte[] iciv, plain, key);
            var icc = tcc.EncryptCBC(out byte[] icciv, plain, key);

            Console.WriteLine($"函数式密文: {fc.ToHexString()}");
            Console.WriteLine($"iv: {fciv.ToHexString()}\n");
            Console.WriteLine($"函数式改C密文: {fcc.ToHexString()}");
            Console.WriteLine($"iv: {fcciv.ToHexString()}\n");
            Console.WriteLine($"接口密文: {ic.ToHexString()}");
            Console.WriteLine($"iv: {iciv.ToHexString()}\n");
            Console.WriteLine($"接口改C密文: {icc.ToHexString()}");
            Console.WriteLine($"iv: {icciv.ToHexString()}\n");
            var dfc  = cbc.DecryptCBC(fciv, fc, key);
            var dfcc = cbccc.DecryptCBC(fcciv, fcc, key);
            var dic  = tea.DecryptCBC(iciv, ic, key);
            var dicc = tcc.DecryptCBC(icciv, icc, key);

            Console.WriteLine($"函数式明文: {dfc.ToHexString()}");
            Console.WriteLine($"iv: {fciv.ToHexString()}\n");
            Console.WriteLine($"函数式改C明文: {dfcc.ToHexString()}");
            Console.WriteLine($"iv: {fcciv.ToHexString()}\n\n");
            Console.WriteLine($"接口明文: {dic.ToHexString()}");
            Console.WriteLine($"iv: {iciv.ToHexString()}\n");
            Console.WriteLine($"接口改C明文: {dicc.ToHexString()}");
            Console.WriteLine($"iv: {icciv.ToHexString()}\n");

            Console.WriteLine($"函数式_text: {Encoding.ASCII.GetString(dfc)}");
            Console.WriteLine($"函数式改C_text: {Encoding.ASCII.GetString(dfcc)}");
            Console.WriteLine($"接口_text: {Encoding.ASCII.GetString(dic)}");
            Console.WriteLine($"接口改C_text: {Encoding.ASCII.GetString(dicc)}");
            Console.ReadKey();
        }
Beispiel #5
0
    void Start()
    {
        Assert.IsNotNull(gameSceneRender);
        var buffer = new BufferDispatcher <IGameSceneMessage>();

        gameSceneRender.Setup(buffer);
        var inputSubscription = new GameObject(nameof(InputSubscription)).AddComponent <InputSubscription>();
        var tea = new TEA <GameSceneState, IGameSceneMessage>(
            gameSceneRender.CreateState(),
            gameSceneRender);

        buffer.SetDispatcher(tea);

        inputSubscription.dispatcher = tea.Wrap((ChangedInput msg) => new OnInput {
            state = msg.state
        });
    }
        public void TEABMPDecryption(FileInfo file, FormModel model)
        {
            bool threadSuccesfull = false;
            var  timeStarted      = DateTime.Now;

            try
            {
                if (!file.Extension.Contains("bmp"))
                {
                    throw new Exception("File is not bmp!");
                }
                //OutputFileName
                string outputFileName = "";

                //Log
                loggerController.Add(" ! File dec: " + file.Name + ", Alg: " + model.AlgorithmName);

                //OutputFileName
                outputFileName = FileNameCreator.CreateFileDecryptedName(
                    model.Folders.OutputFolder,
                    file.Name,
                    ".bmp");

                using (FileStream fsw = new FileStream(outputFileName, FileMode.Create))
                {
                    using (BinaryWriter bw = new BinaryWriter(fsw, new ASCIIEncoding()))
                    {
                        //Reading and encrypting files
                        var readedValue = File.ReadAllBytes(file.FullName);

                        long   pos    = readedValue[10] + 256 * (readedValue[11] + 256 * (readedValue[12] + 256 * readedValue[13]));
                        byte[] header = new byte[pos];
                        for (int i = 0; i < header.Length; i++)
                        {
                            header[i] = readedValue[i];
                        }

                        byte[] data = readedValue.Skip(header.Length).ToArray();

                        var decryptedValue = TEA.Decrypt(data);
                        decryptedValue = header.Concat(decryptedValue).ToArray();
                        bw.Write(decryptedValue);

                        if (LoadedFilesController._END_OF_ENC_DEC_THREADS)
                        {
                            bw.Dispose();
                            fsw.Dispose();
                            File.Delete(outputFileName);
                            Thread.CurrentThread.Abort();
                        }
                    }
                }
                threadSuccesfull = true;
                Thread.Sleep(250);
            }
            catch (Exception ex)
            {
                loggerController.Add(" ? Dec exception: " + ex.Message);
                threadSuccesfull = false;
            }
            finally
            {
                this.ThreadEnds(file, threadSuccesfull, timeStarted);
            }
        }
        public void TEADecryption(FileInfo file, FormModel model)
        {
            bool threadSuccesfull = false;
            var  timeStarted      = DateTime.Now;

            try
            {
                //OutputFileName
                string outputFileName = "";

                //Log
                loggerController.Add(" ! File dec: " + file.Name + ", Alg: " + model.AlgorithmName);

                //Read a file char by char, and decrypt it
                //Reading the extension
                var readedValues    = File.ReadAllBytes(file.FullName);
                int lenght          = 0;
                var extensionLength = (int)readedValues[0];
                lenght++;
                char[] extension = new char[extensionLength];
                int    j         = 0;
                for (var i = 1; i <= extensionLength; i++)
                {
                    extension[j] = (char)readedValues[i];
                    j++;
                    lenght++;
                }

                var finalExtesnion = "." + new string(extension);

                //OutputFileName
                outputFileName = FileNameCreator.CreateFileDecryptedName(
                    model.Folders.OutputFolder,
                    file.Name,
                    finalExtesnion);

                using (FileStream fsw = new FileStream(outputFileName, FileMode.Create))
                {
                    using (BinaryWriter bw = new BinaryWriter(fsw, new ASCIIEncoding()))
                    {
                        //DEC
                        byte[] newValue = new byte[readedValues.Length - lenght];
                        int    k        = 0;
                        for (int i = lenght; i < readedValues.Length; i++)
                        {
                            newValue[k] = readedValues[i];
                            k++;
                        }
                        var decryptedValue = TEA.Decrypt(newValue);
                        bw.Write(decryptedValue);

                        if (LoadedFilesController._END_OF_ENC_DEC_THREADS)
                        {
                            bw.Dispose();
                            fsw.Dispose();
                            File.Delete(outputFileName);
                            Thread.CurrentThread.Abort();
                        }
                    }
                }
                threadSuccesfull = true;
                Thread.Sleep(250);
            }
            catch (Exception ex)
            {
                loggerController.Add(" ? Dec exception: " + ex.Message);
                threadSuccesfull = false;
            }
            finally
            {
                this.ThreadEnds(file, threadSuccesfull, timeStarted);
            }
        }