示例#1
0
        public void FileNameHashing(string dlcRoot, string outRoot)
        {
            var rmpb = Directory.GetFiles(dlcRoot, "ResMapPb.bytes", SearchOption.AllDirectories);

            rmpb.Length.Should().Be(1);

            var fn        = rmpb[0];
            var decoder   = new ResDecoder(EncryptKey._0xC093D547);
            var encrypted = File.ReadAllBytes(fn);
            var result    = decoder.TryDecryptBytes(encrypted, out var decrypted);

            result.Should().BeTrue();

            var decryptedDumpPath = Path.Combine(outRoot, "decrypt.bin");

            File.WriteAllBytes(decryptedDumpPath, decrypted);

            var outDir = Path.Combine(outRoot, "rawProto");

            Directory.CreateDirectory(outDir);

            var decompressed = FileUtil.DecompressZlib(decrypted);
            var path         = Path.Combine(outDir, "PbResMap.pb");

            File.WriteAllBytes(path, decompressed);
        }
        public void DeriveKey(uint salt, byte[] actualDerived)
        {
            var derived = ResDecoder.GenerateDerivedKey(salt);

            derived.SequenceEqual(actualDerived).Should().BeTrue();
        }
        public void DeriveKeyEmptySalt(uint salt)
        {
            var derived = ResDecoder.GenerateDerivedKey(salt);

            derived.SequenceEqual(ResDecoder.MasterKey).Should().BeTrue();
        }