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:
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user