public void GenerateFiles(String Outdir) { System.IO.Directory.CreateDirectory(Outdir); for (int i = 0; i < FileData.Count; ++i) { RTDPfile r = FileData[i]; uint start = r.Pointer; uint end = r.Pointer + r.Size; uint count = r.Size; string outfilename = r.Name; string outpath = System.IO.Path.Combine(Outdir, outfilename); var fs = new System.IO.FileStream(outpath, System.IO.FileMode.Create); for (int j = 0; j < count; ++j) { fs.WriteByte((byte)(File[start + j] ^ Xorbyte)); } fs.Close(); } // write filename order List <string> Filenames = new List <string>(); foreach (RTDPfile r in FileData) { Filenames.Add(r.Name); } System.IO.File.WriteAllLines(Outdir + ".fileorder", Filenames.ToArray()); }
private bool LoadFile(byte[] File) { this.File = File; FileData = new List <RTDPfile>(); uint HeaderSize = BitConverter.ToUInt32(File, 0x04); uint FileCount = BitConverter.ToUInt32(File, 0x08); uint FileSize = BitConverter.ToUInt32(File, 0x0C); Xorbyte = File[0x10]; for (int i = 0; i < FileCount; ++i) { RTDPfile r = new RTDPfile(); r.Name = Encoding.ASCII.GetString(File, i * 0x28 + 0x20, 0x20).TrimEnd('\0'); r.Size = BitConverter.ToUInt32(File, i * 0x28 + 0x20 + 0x20); r.Pointer = BitConverter.ToUInt32(File, i * 0x28 + 0x20 + 0x24) + HeaderSize; FileData.Add(r); } return(true); }
private bool LoadFile( byte[] File ) { this.File = File; FileData = new List<RTDPfile>(); uint HeaderSize = BitConverter.ToUInt32( File, 0x04 ); uint FileCount = BitConverter.ToUInt32( File, 0x08 ); uint FileSize = BitConverter.ToUInt32( File, 0x0C ); Xorbyte = File[0x10]; for ( int i = 0; i < FileCount; ++i ) { RTDPfile r = new RTDPfile(); r.Name = Encoding.ASCII.GetString( File, i * 0x28 + 0x20, 0x20 ).TrimEnd( '\0' ); r.Size = BitConverter.ToUInt32( File, i * 0x28 + 0x20 + 0x20 ); r.Pointer = BitConverter.ToUInt32( File, i * 0x28 + 0x20 + 0x24 ) + HeaderSize; FileData.Add( r ); } return true; }