static byte[] doGZconvert(ref typZipHead objZiphead, ref byte[] bytBuffer) { MemoryStream objMemory = new MemoryStream(); objMemory.Write(new byte[] { 0x1f, 0x8b, 8, 8 }, 0, 4); objMemory.Write(new byte[] { 0, 0, 0, 0 }, 0, 4); objMemory.Write(new byte[] { 2, 0 }, 0, 2); objMemory.Write(bytBuffer, 0, objZiphead.zipFileNameLength); objMemory.WriteByte(0); objMemory.Write(bytBuffer, objZiphead.zipFileNameLength, (int)objZiphead.zipCompressedSize); objMemory.Write(BitConverter.GetBytes(objZiphead.zipCRC), 0, 4); objMemory.Write(BitConverter.GetBytes(objZiphead.zipUncompressedSize), 0, 4); bytBuffer = doGZextract(ref objMemory); return(bytBuffer); }
static byte[] unZip(string filZipname) { BinaryReader reader = new BinaryReader(File.Open(filZipname, FileMode.Open, FileAccess.Read)); typZipHead objZiphead = new typZipHead(); reader.BaseStream.Seek(0x1aL, SeekOrigin.Begin); objZiphead.zipFileNameLength = reader.ReadInt16(); reader.BaseStream.Seek((long)(-80 - objZiphead.zipFileNameLength), SeekOrigin.End); objZiphead.zipCRC = reader.ReadInt32(); objZiphead.zipCompressedSize = reader.ReadInt32(); objZiphead.zipUncompressedSize = reader.ReadInt32(); reader.BaseStream.Seek(30L, SeekOrigin.Begin); byte[] bytBuffer = new byte[(objZiphead.zipFileNameLength + ((int)objZiphead.zipCompressedSize)) + 1]; int num2 = bytBuffer.Length - 1; for (int i = 0; i <= num2; i++) { bytBuffer[i] = reader.ReadByte(); } bytBuffer = doGZconvert(ref objZiphead, ref bytBuffer); reader.Close(); return(bytBuffer); }