Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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;
        }