private static List <PackFileEntry> ReadFile(Stream headerFile) { using var headerReader = new BinaryReader(headerFile); var stream = IPackStream.CreateStream(headerReader); string fileString = Encoding.UTF8.GetString(CryptoManager.DecryptFileString(stream, headerReader.BaseStream)); stream.FileList.AddRange(PackFileEntry.CreateFileList(fileString)); stream.FileList.Sort(); // Load the file allocation table and assign each file header to the entry within the list byte[] fileTable = CryptoManager.DecryptFileTable(stream, headerReader.BaseStream); using var tableStream = new MemoryStream(fileTable); using var reader = new BinaryReader(tableStream); stream.InitFileList(reader); return(stream.FileList); }
public M2dReader(string path) { m2dFile = MemoryMappedFile.CreateFromFile(path); // Create an index from the header file using var headerReader = new BinaryReader(System.IO.File.OpenRead(path.Replace(".m2d", ".m2h"))); var stream = IPackStream.CreateStream(headerReader); string fileString = Encoding.UTF8.GetString(CryptoManager.DecryptFileString(stream, headerReader.BaseStream)); stream.FileList.AddRange(PackFileEntry.CreateFileList(fileString)); stream.FileList.Sort(); // Load the file allocation table and assign each file header to the entry within the list byte[] fileTable = CryptoManager.DecryptFileTable(stream, headerReader.BaseStream); using var tableStream = new MemoryStream(fileTable); using var reader = new BinaryReader(tableStream); stream.InitFileList(reader); Files = stream.FileList; }