コード例 #1
0
 void DecryptFileBytes(byte[] eraBytes)
 {
     using (var era_in_ms = new System.IO.MemoryStream(eraBytes, writable: false))
         using (var era_out_ms = new System.IO.MemoryStream(eraBytes, writable: true))
             using (var era_reader = new IO.EndianReader(era_in_ms, Shell.EndianFormat.Big))
                 using (var era_writer = new IO.EndianWriter(era_out_ms, Shell.EndianFormat.Big))
                 {
                     // "Halo Wars Alpha 093106 Feb 21 2009" was released pre-decrypted, so try and detect if the file is already decrypted first
                     if (!EraFileHeader.VerifyIsEraAndDecrypted(era_reader))
                     {
                         CryptStream(era_reader, era_writer,
                                     Security.Cryptography.CryptographyTransformType.Decrypt);
                     }
                 }
 }
コード例 #2
0
        bool ReadEraFromStream()
        {
            bool result = true;

            result = EraFileHeader.VerifyIsEraAndDecrypted(mEraStream.Reader);
            if (!result)
            {
                if (VerboseOutput != null)
                {
                    VerboseOutput.WriteLine("\tFailed: File is either not decrypted, corrupt, or not even an ERA");
                }
            }
            else
            {
                mEraStream.VirtualAddressTranslationInitialize(Shell.ProcessorSize.x32);

                mEraFile          = new EraFile();
                mEraFile.FileName = mSourceFile;
                mEraFile.Serialize(mEraStream);
                mEraFile.ReadPostprocess(mEraStream);
            }

            return(result);
        }
コード例 #3
0
 public int CalculateHeaderAndFileChunksSize()
 {
     return
         (EraFileHeader.CalculateHeaderSize() +
          EraFileEntryChunk.CalculateFileChunksSize(mFiles.Count));
 }