public static byte[] Inflate(byte[] data) { byte[] buffer = data; byte[] decompressed = new byte[buffer.Length - 8]; Buffer.BlockCopy(buffer, 8, decompressed, 0, decompressed.Length); buffer = PS2Zip.ZlibCodecDecompress(decompressed); return(buffer); }
// Non original, borrowed public byte[] DecryptBlock(BinaryStream bs, long offset, int length) { bs.ByteConverter = ByteConverter.Little; bs.BaseStream.Seek(offset, SeekOrigin.Begin); using (var decompressStream = new MemoryStream()) { using (var decompressionStream = new DeflateStream(new MemoryStream(bs.ReadBytes(length)), CompressionMode.Decompress)) { decompressionStream.CopyTo(decompressStream); return(PS2Zip.XorEncript(decompressStream.ToArray(), Volume.DataCryptKey)); } } }