ITS WORKING!!! --some noob

git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1054 993157c7-ee19-0410-b2c4-bb4e9862e678
This commit is contained in:
chrisf
2007-06-19 10:24:14 +00:00
parent b59ba43934
commit 711a99a022
4 changed files with 152 additions and 60 deletions

View File

@@ -31,58 +31,7 @@ namespace MixBrowser
return;
}
Stream s = File.Open(fn, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(s);
uint signature = reader.ReadUInt32();
if (0 == (signature & ~(uint)(MixFileFlags.Checksum | MixFileFlags.Encrypted)))
{
Console.WriteLine("{0} - Red Alert MIX", Path.GetFileName(fn));
if (0 != (signature & (uint)MixFileFlags.Checksum))
Console.WriteLine("Checksum: YES");
if (0 != (signature & (uint)MixFileFlags.Encrypted))
{
Console.WriteLine("Encrypted: YES");
//get the blowfish key
byte[] bfkey = MixDecrypt.MixDecrypt.BlowfishKey(reader.ReadBytes(80));
Blowfish fish = new Blowfish(bfkey);
uint[] data = { reader.ReadUInt32(), reader.ReadUInt32() };
uint[] decrypted = fish.Decrypt(data);
MemoryStream ms = new MemoryStream();
BinaryWriter w = new BinaryWriter(ms);
foreach (uint u in decrypted)
w.Write(u);
w.Flush();
ms.Seek(0, SeekOrigin.Begin);
BinaryReader reader2 = new BinaryReader(ms);
ushort numfiles2 = reader2.ReadUInt16();
uint datasize2 = reader2.ReadUInt32();
Console.WriteLine("{0} files - {1} KB", numfiles2, datasize2 >> 10);
return;
}
}
else
Console.WriteLine("{0} - Tiberian Dawn MIX", Path.GetFileName(fn) );
s.Seek(0, SeekOrigin.Begin);
reader = new BinaryReader(s);
ushort numfiles = reader.ReadUInt16();
uint datasize = reader.ReadUInt32();
Console.WriteLine("{0} files - {1} KB", numfiles, datasize >> 10);
List<MixEntry> index = new List<MixEntry>();
for (ushort i = 0; i < numfiles; i++)
index.Add(new MixEntry(reader));
MixFile file = new MixFile(fn);
if (File.Exists("files.txt"))
foreach (string filename in File.ReadAllLines("files.txt"))
@@ -90,15 +39,8 @@ namespace MixBrowser
else
Console.WriteLine("-- files.txt doesnt exist --");
foreach (MixEntry e in index)
foreach (MixEntry e in file.Content)
Console.WriteLine(e);
}
}
[Flags]
enum MixFileFlags : uint
{
Checksum = 0x10000,
Encrypted = 0x20000,
}
}