mirror of
https://github.com/crskycode/GARbro.git
synced 2024-11-23 13:45:34 +08:00
implemented external storage of resource schemes.
This commit is contained in:
parent
eef86f0804
commit
9a8bff184d
38
App.xaml.cs
38
App.xaml.cs
@ -1,6 +1,6 @@
|
||||
// Game Resource Browser
|
||||
//
|
||||
// Copyright (C) 2014 by morkt
|
||||
// Copyright (C) 2014-2015 by morkt
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
@ -23,15 +23,12 @@
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Configuration;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
using System.Reflection;
|
||||
using System.Diagnostics;
|
||||
using GARbro.GUI.Strings;
|
||||
using GARbro.GUI.Properties;
|
||||
using GameRes;
|
||||
using GameRes.Compression;
|
||||
|
||||
namespace GARbro.GUI
|
||||
{
|
||||
@ -51,9 +48,9 @@ namespace GARbro.GUI
|
||||
|
||||
void ApplicationStartup (object sender, StartupEventArgs e)
|
||||
{
|
||||
string exe_dir = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly().Location);
|
||||
#if DEBUG
|
||||
string trace_dir = Path.GetDirectoryName (System.Reflection.Assembly.GetExecutingAssembly().Location);
|
||||
Trace.Listeners.Add (new TextWriterTraceListener (Path.Combine (trace_dir, "trace.log")));
|
||||
Trace.Listeners.Add (new TextWriterTraceListener (Path.Combine (exe_dir, "trace.log")));
|
||||
Trace.AutoFlush = true;
|
||||
#endif
|
||||
Trace.WriteLine ("ApplicationStartup --------------------------------", "GARbro.GUI.App");
|
||||
@ -80,11 +77,36 @@ namespace GARbro.GUI
|
||||
|
||||
if (string.IsNullOrEmpty (InitPath))
|
||||
InitPath = Directory.GetCurrentDirectory();
|
||||
|
||||
string scheme_file = Path.Combine (exe_dir, "Formats.dat");
|
||||
try
|
||||
{
|
||||
using (var file = File.OpenRead (scheme_file))
|
||||
DeserializeScheme (file);
|
||||
}
|
||||
catch (Exception X)
|
||||
{
|
||||
Trace.WriteLine (X.Message, "scheme deserialization");
|
||||
}
|
||||
}
|
||||
|
||||
void ApplicationExit (object sender, ExitEventArgs e)
|
||||
{
|
||||
Settings.Default.Save();
|
||||
}
|
||||
|
||||
void DeserializeScheme (Stream file)
|
||||
{
|
||||
using (var reader = new BinaryReader (file))
|
||||
{
|
||||
var scheme_id = FormatCatalog.Instance.SchemeID;
|
||||
var header = reader.ReadChars (scheme_id.Length);
|
||||
if (!header.SequenceEqual (scheme_id))
|
||||
throw new FormatException ("Invalid serialization file");
|
||||
int version = reader.ReadInt32();
|
||||
using (var zs = new ZLibStream (file, CompressionMode.Decompress))
|
||||
FormatCatalog.Instance.DeserializeScheme (zs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ namespace GameRes.Formats.AVC
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ArchiveScheme
|
||||
{
|
||||
public string Password;
|
||||
public int KeyOffset;
|
||||
public int HeaderOffset;
|
||||
};
|
||||
|
||||
[Serializable]
|
||||
public class AvcScheme : ResourceScheme
|
||||
{
|
||||
public ArchiveScheme[] KnownSchemes;
|
||||
}
|
||||
|
||||
[Export(typeof(ArchiveFormat))]
|
||||
public class DatOpener : ArchiveFormat
|
||||
{
|
||||
@ -177,19 +191,13 @@ namespace GameRes.Formats.AVC
|
||||
return dir;
|
||||
}
|
||||
|
||||
internal class Scheme
|
||||
{
|
||||
public string Password;
|
||||
public int KeyOffset;
|
||||
public int HeaderOffset;
|
||||
};
|
||||
internal static ArchiveScheme[] KnownSchemes = new ArchiveScheme[0];
|
||||
}
|
||||
|
||||
private static readonly Scheme[] KnownSchemes = new Scheme[] {
|
||||
new Scheme { Password="SETSUEI-", KeyOffset=0x08, HeaderOffset=0x10 }, // Setsuei
|
||||
new Scheme { Password="CHOKOPAI", KeyOffset=0x35, HeaderOffset=0x51 }, // Chokotto*Vampire!
|
||||
new Scheme { Password="ClOVeRrE", KeyOffset=0x11, HeaderOffset=0x46 }, // Clover Point
|
||||
new Scheme { Password="-AYASEKE", KeyOffset=0x0c, HeaderOffset=0x15 }, // Ayase Ke no Onna
|
||||
};
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new AvcScheme { KnownSchemes = AdvReader.KnownSchemes }; }
|
||||
set { AdvReader.KnownSchemes = ((AvcScheme)value).KnownSchemes; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -323,12 +323,6 @@
|
||||
<Name>GameRes</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Resources\ShiinaRio4.jpg" />
|
||||
<EmbeddedResource Include="Resources\ShiinaRio1.png" />
|
||||
<EmbeddedResource Include="Resources\ShiinaRio2.png" />
|
||||
<EmbeddedResource Include="Resources\ShiinaRio3.jpg" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
@ -336,9 +330,6 @@
|
||||
<Generator>PublicSettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<EmbeddedResource Include="Resources\DecodeV1.bin" />
|
||||
<EmbeddedResource Include="Resources\DecodeV241.bin" />
|
||||
<EmbeddedResource Include="Resources\DecodeV249.bin" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Page Include="Amaterasu\CreateAMIWidget.xaml">
|
||||
@ -441,9 +432,6 @@
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Strings\arcStrings.ru-RU.resx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Resources\ShiinaRio5.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>perl "$(SolutionDir)inc-revision.pl" "$(ProjectPath)" $(ConfigurationName)</PreBuildEvent>
|
||||
|
@ -48,7 +48,20 @@ namespace GameRes.Formats.CatSystem
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable()]
|
||||
[Serializable]
|
||||
public struct KeyData
|
||||
{
|
||||
public uint Key;
|
||||
public string Passphrase;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class IntScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, KeyData> KnownKeys;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class IntEncryptionInfo
|
||||
{
|
||||
public uint? Key { get; set; }
|
||||
@ -62,7 +75,7 @@ namespace GameRes.Formats.CatSystem
|
||||
|
||||
if (!string.IsNullOrEmpty (Scheme))
|
||||
{
|
||||
IntOpener.KeyData keydata;
|
||||
KeyData keydata;
|
||||
if (IntOpener.KnownSchemes.TryGetValue (Scheme, out keydata))
|
||||
return keydata.Key;
|
||||
}
|
||||
@ -298,18 +311,13 @@ namespace GameRes.Formats.CatSystem
|
||||
return key;
|
||||
}
|
||||
|
||||
public struct KeyData
|
||||
{
|
||||
public uint Key;
|
||||
public string Passphrase;
|
||||
}
|
||||
public static Dictionary<string, KeyData> KnownSchemes = new Dictionary<string, KeyData>();
|
||||
|
||||
public static readonly Dictionary<string, KeyData> KnownSchemes = new Dictionary<string, KeyData> {
|
||||
{ "Grisaia no Kajitsu", new KeyData { Key=0x1DAD9120, Passphrase="FW-6JD55162" }},
|
||||
{ "Shukufuku no Campanella", new KeyData { Key=0x4260E643, Passphrase="CAMPANELLA" }},
|
||||
{ "Makai Tenshi Djibril -Episode 4-", new KeyData { Key=0xA5A166AA, Passphrase="FW_MAKAI-TENSHI_DJIBRIL4" }},
|
||||
{ "Sengoku Tenshi Djibril (trial)", new KeyData { Key=0xef870610, Passphrase="FW-8O9B6WDS" }},
|
||||
};
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new IntScheme { KnownKeys = KnownSchemes }; }
|
||||
set { KnownSchemes = ((IntScheme)value).KnownKeys; }
|
||||
}
|
||||
|
||||
public override ResourceOptions GetDefaultOptions ()
|
||||
{
|
||||
|
@ -36,7 +36,7 @@ namespace GameRes.Formats.GUI
|
||||
void OnSchemeChanged (object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
var widget = sender as ComboBox;
|
||||
IntOpener.KeyData keydata;
|
||||
KeyData keydata;
|
||||
if (IntOpener.KnownSchemes.TryGetValue (widget.SelectedItem as string, out keydata))
|
||||
{
|
||||
Passphrase.TextChanged -= OnPassphraseChanged;
|
||||
|
@ -40,6 +40,7 @@ namespace GameRes.Formats.Dac
|
||||
public uint Key2;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class DpkScheme
|
||||
{
|
||||
public uint Key1 { get; set; }
|
||||
@ -48,6 +49,12 @@ namespace GameRes.Formats.Dac
|
||||
public string OriginalTitle { get; set; }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ArchiveScheme : ResourceScheme
|
||||
{
|
||||
public DpkScheme[] KnownSchemes;
|
||||
}
|
||||
|
||||
internal class DpkEntry : Entry
|
||||
{
|
||||
public uint Hash;
|
||||
@ -75,27 +82,7 @@ namespace GameRes.Formats.Dac
|
||||
public override bool IsHierarchic { get { return true; } }
|
||||
public override bool CanCreate { get { return false; } }
|
||||
|
||||
public static readonly DpkScheme[] KnownSchemes = new DpkScheme[]
|
||||
{
|
||||
new DpkScheme { Key1 = 0x0FF98, Name = arcStrings.ArcDefault,
|
||||
Key2 = 0x43E78A5C },
|
||||
new DpkScheme { Key1 = 0x0C3BD, Name = "Inbou no Wakusei",
|
||||
Key2 = 0x577D4861, OriginalTitle = "淫暴の惑星~破壊と欲望の衝動~" },
|
||||
new DpkScheme { Key1 = 0x04D49, Name = "Ryoshuu",
|
||||
Key2 = 0x39712FED, OriginalTitle = "虜囚 -RYOSYU-" },
|
||||
new DpkScheme { Key1 = 0x11EAF, Name = "Ryobaku ~Haitoku no Atelier~",
|
||||
Key2 = 0xB9976112, OriginalTitle = "虜縛~背徳のアトリエ~" },
|
||||
new DpkScheme { Key1 = 0x0527F, Name = "Ryoshuu ~Jogakusei Choukyou~",
|
||||
Key2 = 0x339B266F, OriginalTitle = "虜讐~女学生調教~" },
|
||||
new DpkScheme { Key1 = 0x0946E, Name = "Shirogane no Cal to Soukuu no Joou",
|
||||
Key2 = 0xB1956783, OriginalTitle = "白銀のカルと蒼空の女王" },
|
||||
new DpkScheme { Key1 = 0x0BB51, Name = "Shiromiko",
|
||||
Key2 = 0x891F52A3, OriginalTitle = "白神子 ~しろみこ~" },
|
||||
new DpkScheme { Key1 = 0x09F59, Name = "Shoujotachi no Saezuri",
|
||||
Key2 = 0x5DDE9B8D, OriginalTitle = "少女達のさえずり" },
|
||||
new DpkScheme { Key1 = 0x0583F, Name = "Yumemiru Tsuki no Lunalutia",
|
||||
Key2 = 0xB81031D7, OriginalTitle = "夢みる月のルナルティア" },
|
||||
};
|
||||
public static DpkScheme[] KnownSchemes = new DpkScheme[0];
|
||||
|
||||
public override ArcFile TryOpen (ArcView file)
|
||||
{
|
||||
@ -229,5 +216,22 @@ namespace GameRes.Formats.Dac
|
||||
{
|
||||
return new GUI.WidgetDPK();
|
||||
}
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get
|
||||
{
|
||||
var known = KnownSchemes.Clone() as DpkScheme[];
|
||||
// first entry should be a default scheme, replace localized "Name" field
|
||||
known[0] = new DpkScheme { Name = known[0].Name, Key1 = known[0].Key1, Key2 = known[0].Key2 };
|
||||
return new ArchiveScheme { KnownSchemes = known };
|
||||
}
|
||||
set
|
||||
{
|
||||
KnownSchemes = ((ArchiveScheme)value).KnownSchemes;
|
||||
if (string.IsNullOrEmpty (KnownSchemes[0].Name))
|
||||
KnownSchemes[0].Name = arcStrings.ArcDefault;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -59,6 +59,12 @@ namespace GameRes.Formats.Entis
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class NoaScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, Dictionary<string, string>> KnownKeys;
|
||||
}
|
||||
|
||||
[Export(typeof(ArchiveFormat))]
|
||||
public class NoaOpener : ArchiveFormat
|
||||
{
|
||||
@ -73,30 +79,8 @@ namespace GameRes.Formats.Entis
|
||||
Extensions = new string[] { "noa", "dat" };
|
||||
}
|
||||
|
||||
public static readonly Dictionary<string, Dictionary<string, string>> KnownKeys =
|
||||
new Dictionary<string, Dictionary<string, string>> {
|
||||
{ arcStrings.NOAIgnoreEncryption, new Dictionary<string, string>() },
|
||||
{ "Alea Akaki Tsuki o Haruka ni Nozomi", new Dictionary<string, string> {
|
||||
{ "data2.noa", "pnnAiYVqktMdLlVq9pnrXs1795vhu8ZluLh3MxmXyBBrhrhLoP2rlGn5dxcBP6d1cAAz08TMRIXNUFatVdJFWAwVphtAh4hx5NHMmLs8LoBE2KHAA8GnKJB1PpKeyMHu" },
|
||||
{ "data4.noa", "yEbgydEFtIq3YiGUNMpCarJwR9mZbufPrbXtsoqbrJwT4F278kOWIgYzLtm1nP1Hns81u3F4Stwc42gdtrWIbnp9XfX3LsKiZe1TFUyrlTqsbhX8R8dEAVxLk9SVvCE7" } } },
|
||||
{ "Do S Ane to Boku no Hounyou Kankei", new Dictionary<string, string> {
|
||||
{ "d02.dat", "vwerc7s65r21bnfu" },
|
||||
{ "d03.dat", "ctfvgbhnj67y8u" } } },
|
||||
{ "Innyuu Famiresu", new Dictionary<string, string> {
|
||||
{ "d01.dat", "vdiu$43AfUCfh9aksf" },
|
||||
{ "d03.dat", "gaivnwq7365e021gf" } } },
|
||||
{ "Konneko", new Dictionary<string, string> {
|
||||
{ "script.noa", "convini_cat" } } },
|
||||
{ "Santaful☆Summer", new Dictionary<string, string> {
|
||||
{ "data02.noa", "20130611VER1" },
|
||||
{ "data03.noa", "20130611VER2" } } },
|
||||
{ "Yatohime Zankikou", new Dictionary<string, string> {
|
||||
{ "data1.noa", "arcdatapass" },
|
||||
{ "data6.noa", "cfe7231hf9qccda" },
|
||||
{ "data7.noa", "ceiuvw86680efq0hHDUHF673j" } } },
|
||||
{ "You! Apron Chakuyou", new Dictionary<string, string> {
|
||||
{ "containerb.noa", "7DQ1Xm7ZahIv1ZwlFgyMTMryKC6OP9V6cAgL64WD5JLyvmeEyqTSA5rUbRigOtebnnK4MuOptwsbOf4K8UBDH4kpAUOQgB71Qr1qxtHGxQl8KZKj6WIYWpPh0G3JOJat" } } },
|
||||
};
|
||||
public static Dictionary<string, Dictionary<string, string>> KnownKeys =
|
||||
new Dictionary<string, Dictionary<string, string>>();
|
||||
|
||||
public override ArcFile TryOpen (ArcView file)
|
||||
{
|
||||
@ -299,6 +283,12 @@ namespace GameRes.Formats.Entis
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new NoaScheme { KnownKeys = KnownKeys }; }
|
||||
set { KnownKeys = ((NoaScheme)value).KnownKeys; }
|
||||
}
|
||||
}
|
||||
|
||||
internal abstract class ERISADecodeContext
|
||||
|
@ -4,7 +4,7 @@
|
||||
xmlns:entis="clr-namespace:GameRes.Formats.Entis"
|
||||
xmlns:p="clr-namespace:GameRes.Formats.Properties"
|
||||
MaxWidth="300">
|
||||
<ComboBox Name="Scheme" ItemsSource="{Binding Source={x:Static entis:NoaOpener.KnownKeys}, Path=Keys, Mode=OneWay}"
|
||||
<ComboBox Name="Scheme" ItemsSource="{Binding}"
|
||||
SelectedValue="{Binding Source={x:Static p:Settings.Default}, Path=NOAScheme, Mode=TwoWay}"
|
||||
Width="200"/>
|
||||
</Grid>
|
||||
|
@ -1,4 +1,7 @@
|
||||
using System.Windows.Controls;
|
||||
using GameRes.Formats.Entis;
|
||||
using GameRes.Formats.Strings;
|
||||
using System.Linq;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace GameRes.Formats.GUI
|
||||
{
|
||||
@ -10,6 +13,8 @@ namespace GameRes.Formats.GUI
|
||||
public WidgetNOA ()
|
||||
{
|
||||
InitializeComponent ();
|
||||
var keys = new string[] { arcStrings.NOAIgnoreEncryption };
|
||||
Scheme.ItemsSource = keys.Concat (NoaOpener.KnownKeys.Keys.OrderBy (x => x));
|
||||
// select first scheme as default
|
||||
if (-1 == Scheme.SelectedIndex)
|
||||
Scheme.SelectedIndex = 0;
|
||||
|
@ -93,6 +93,12 @@ namespace GameRes.Formats.Ikura
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class IsfScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, byte[]> KnownSecrets;
|
||||
}
|
||||
|
||||
internal class IsfOptions : ResourceOptions
|
||||
{
|
||||
public byte[] Secret;
|
||||
@ -171,11 +177,11 @@ namespace GameRes.Formats.Ikura
|
||||
|
||||
public override Stream OpenEntry (ArcFile arc, Entry entry)
|
||||
{
|
||||
if (!(arc is IsfArchive) || entry.Type != "script" || entry.Size <= 0x10)
|
||||
var isf = arc as IsfArchive;
|
||||
if (null == isf || entry.Type != "script" || entry.Size <= 0x10)
|
||||
return arc.File.CreateStream (entry.Offset, entry.Size);
|
||||
bool encoded = arc.File.View.AsciiEqual (entry.Offset+entry.Size-0x10, "SECRETFILTER100a");
|
||||
uint entry_size = entry.Size;
|
||||
var isf = arc as IsfArchive;
|
||||
if (encoded)
|
||||
{
|
||||
entry_size -= 0x10;
|
||||
@ -211,7 +217,7 @@ namespace GameRes.Formats.Ikura
|
||||
public override ResourceOptions GetDefaultOptions ()
|
||||
{
|
||||
return new IsfOptions {
|
||||
Secret = GetSecret (Settings.Default.ISFScheme),
|
||||
Secret = GetSecret (Settings.Default.ISFScheme) ?? new byte[0]
|
||||
};
|
||||
}
|
||||
|
||||
@ -240,13 +246,13 @@ namespace GameRes.Formats.Ikura
|
||||
data[i] = (byte)method (data[i]);
|
||||
}
|
||||
|
||||
public static readonly Dictionary<string, byte[]> KnownSecrets = new Dictionary<string, byte[]>
|
||||
public static Dictionary<string, byte[]> KnownSecrets = new Dictionary<string, byte[]>();
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
{ arcStrings.ISFIgnoreEncryption, new byte[0] },
|
||||
{ "Anata no Osanazuma", Encoding.ASCII.GetBytes("UOB0GMVM8K812GZP1VJCADNP2LX543R3BPOSMRU6BAKIVYB6W2JRRQFHN3YC5NSV5AITT6OXIDOW0YROTRT7MFJ45R1VYFF71MGI4XIOUZC511R0HAJC6WZU0EZEUUH0K7AT0U749KIOVLF5FA4C3BFXM2T4G8F57SW5EG64LU9GXRKZ2O0YGN7QA4QRUMALDFFJJ6NHLTVYYHKHRMWERQ8K782KITVCCH2G65C2WRQ85HINSMLHW06TIBADAGLEDK9YDARS47ET2A6JAF4I8WAW7K1FIXISKJKNNC0KP1MSO5Y6C2JBEFIA7G5NTECMXMNLYSTC0D9SF6VNXW7ALIGEBRJFDUGZE9FILWM4BMDY25N3YHKCAUBSBJBMMZX0T7XHAQHXUF3ZUROO5P6WGU2YU3RPICFVXGAA646TOTT2DEXK9RTXFQ8IE1BNC7ARDCW4TP2US01YN84ZV1FYWJ10HAJZUPKYQF7R5V654IEX39K6HC1Z32C3FZ6Q5NVNELWIJT9VG6QRK89FJLXLKUPFJL4GROK7TZQ7QHM6J3ZU9NU0B5GV8A9PXUFAO9KW80Q6WNABYMA1VVNC2J5GHHWNPQ9U7LK3TF0CMSYGAFYPGZLPXNPH3D41VL1A3NU6N6S3V9XXYFESEUCKYK0NAM1MBZ9BJ6AMQKKF25719V8RN54C1Q27LRI8SSK62RKSZ4VTYAE2J87LFAVI2U1V21YQ13ULOQW86PH9RDUEVA7UEJ6JTU7X1GJYNC1VR66F2EAC3TFGC4AKOVAZW137EW0V6AAU201X7ND3YTUNX2QBR24DXXC1BWTEZUXVTXNB63W5RD9GIQV9IP6CDDPAEW2IGADTKBW7DPANCAOBU18Z84PHLF6EQ2H7S7A2DHC75Q1AX4NSN7JQNGJGXHTAOBHI5DDMME5ZQPT856DEIMM6VM8XI8WE4E4JKYMY5W7ABEH82LSRX4GKFAYNHLUSBT4C0A215KZTVX1K49EHAO8O7YJCUS8YVVU2B3XG8QOBQMUJBJ3IH1XWH6FM29OLYS9DHMZ83PJVRM0M7JH7RAQDV9DS4FJ2IF27CCVZZBVX18AHEQDI8486Y3NETMBG3LBF41FTGMVXNC7R914HXOHFQYQ4EDUKJ4VJJWGIE63H12VG3361832LZO6KFAHMEFPZK6BAJ643VJWZT4Z4QS3JAUM5P5394MS2GDVP9IJ727D6831GDB9NYONACW2ITF51S2LTUQ05XJ18WJUSABOJ51W9QODRH9R1D1CZB175ZEWTAIZRLIGFSVFCIHNBUJB0Z5LWDTNGW5505H1K8CROH1YGNFC4CW760NK9TWIWX9M6QFLZZKFCSP7RCEJ5DT854MJ6T55ODQ98NQB5MKFQYXM44D5ZYX0RMHPWKTHJVUEFA9WBQVLLZT0DR7P4XXQPQTMU0CC9C3VFYI0L5390P887CXEFY5MJYBGUUWLK123ANOE220DLPK5B7SU6GMXR3UV6K931FJ0I6JVLWLBADZO6Z381MZXR8E2IFVS4AH0Z5N72DV3GV9QAMDB5EJYUQ6RVHTN9OY50W378H67U4SAY9AAXM9C67I7SKWLQW7W9MOSQIUMNVNCGEN0CRRIXMV62AGPRLNBU8VT41HYGMNXZTHQO6CU15X121MYGOTZAFR8WVT98M33KJVBOZXRI9FMG03HUAF0IQ4ZF6P5EZ4X6V45E14R4RDBA59DVWD2UED1ZB6SRJDKREO4F05CMOV1465RCANAZHLHR0FVHV86126OODW2MB67UNGS1GGD3UHBV7TL8GRWQZBTHCZHQBPUSUJPKO5LQ4HM95UOZGL0FL30LXL6CK2FOTEQIK6PTNMJVE5G7U3PONIA6WMSV7YZLHO4CZ8ZPOL7JRJOOD79U5T7RVKYJQB54GR5E23964QRYA1POKM19EEWC6MFIU5Y75J5Y9QXER3HQFQEURNB7XTYAZMWWJO25SPI7AAVX3BKERW6817IQMRKD533O6ANRDIL840HSGRAG9ZX9AX1XK1DRE6URAGE5NWT0") },
|
||||
{ "Kohitsuji-tachi no Rakuen", Encoding.ASCII.GetBytes("UOB0GMVM8K812GZP1VJCADNP2LX543R3BPOSMRU6BAKIVYB6W2JRRQFHN3YC5NSV5AITT6OXIDOW0YROTRT7MFJ45R1VYFF71MGI4XIOUZC511R0HAJC6WZU0EZEUUH0K7AT0U749KIOVLF5FA4C3BFXM2T4G8F57SW5EG64LU9GXRKZ2O0YGN7QA4QRUMALDFFJJ6NHLTVYYHKHRMWERQ8K782KITVCCH2G65C2WRQ85HINSMLHW06TIBADAGLEDK9YDARS47ET2A6JAF4I8WAW7K1FIXISKJKNNC0KP1MSO5Y6C2JBEFIA7G5NTECMXMNLYSTC0D9SF6VNXW7ALIGEBRJFDUGZE9FILWM4BMDY25N3YHKCAUBSBJBMMZX0T7XHAQHXUF3ZUROO5P6WGU2YU3RPICFVXGAA646TOTT2DEXK9RTXFQ8IE1BNC7ARDCW4TP2US01YN84ZV1FYWJ10HAJZUPKYQF7R5V654IEX39K6HC1Z32C3FZ6Q5NVNELWIJT9VG6QRK89FJLXLKUPFJL4GROK7TZQ7QHM6J3ZU9NU0B5GV8A9PXUFAO9KW80Q6WNABYMA1VVNC2J5GHHWNPQ9U7LK3TF0CMSYGAFYPGZLPXNPH3D41VL1A3NU6N6S3V9XXYFESEUCKYK0NAM1MBZ9BJ6AMQKKF25719V8RN54C1Q27LRI8SSK62RKSZ4VTYAE2J87LFAVI2U1V21YQ13ULOQW86PH9RDUEVA7UEJ6JTU7X1GJYNC1VR66F2EAC3TFGC4AKOVAZW137EW0V6AAU201X7ND3YTUNX2QBR24DXXC1BWTEZUXVTXNB63W5RD9GIQV9IP6CDDPAEW2IGADTKBW7DPANCAOBU18Z84PHLF6EQ2H7S7A2DHC75Q1AX4NSN7JQNGJGXHTAOBHI5DDMME5ZQPT856DEIMM6VM8XI8WE4E4JKYMY5W7ABEH82LSRX4GKFAYNHLUSBT4C0A215KZTVX1K49EHAO8O7YJCUS8YVVU2B3XG8QOBWX2M9EU89MDEKNJM6CZZOTMX6W2Z80U2YOMI98N2N48BFS9KYULOD622RBHZ6MWRH6MR27KWXBTG0LLXZC5URNW4LXA1M9O1SLX2T3J7V5H6HUIYNVOO77EF06EIGC3HCYO962958KT0INSLCHGOQ7NX9E116QSFI6ADEQ7KVCMMCMYHK0ZESHJAPTQERP8RT6FK73NVN62UQPDURB6LD7PSON8GPXL2QN45XJL9DOKOYB4MG23520LELWMA4IWMZEZEU0Z833SR1YZG2F0BBBV3MP6F4HB0JNCMRC6WINVVTJ19JC1RM9500IOB52ALK78X4JSOTVW0NZC84TOE7YM6GIVFJ89TIDEHSHWKYAH8TH8TKOCLE7BUQAZ5W51R1E5EQMHZYZGB8IR7I5KZENM6EEJBYWGZTJ7XFS9YV2X8FTQ9PD5FYBO41C7XX0ANKTHHU9P6TGA0COPGVF4XBNB79K34NFXL0A8NIN63X07XKO1YR8XN9JAMPCG9CHPBYVX5J1OOCIMC6VWM5P5U68083XXSXWLY7DDVHV4MAMRTQP7VWMS1VDRJ2ECBPTFBMINVH14AYX61F1NWVLZTR2JQFTVNMSSV1X3B6T3NLWNXV3RFWA9YRS6NW4ZQ3S3PD6BKSV7EJX8F9KQXY5DECF8QA5CO26HLJOA50BIS2BBRDHPJYKE8G845HNZO1PW0KT5Q3NPUJAJ8FCFYWVOONZYO9A662K1ZETE4URC6BWSC81KLTAS6YPPSLMIROBGA2USAJXS1U8BQ3UHKPXN9YY1LD3R3YZEANZDD2X3DK6K7VFEKORGMSNHTK544IYX288GPSU6SXKBPYW70USN614AX5ZYTJ0WCXFNOK7OJF3LD9ROVBTZXX2KY5UZFODYFWETXXY3IMHRF8YCWAKG25N3OMS585NHECT47RGL937FBURHFXQEWXEIGOVOSPUPXG91FLE80ERFMLW7GHTEY1A9CDX5QMFJBHB9OHZSN7H03JJBN8CAVRMG1VTDVO6SL") },
|
||||
{ "Natsu no Hitoshizuku", Encoding.ASCII.GetBytes("UOB0GMVM8K812GZP1VJCADNP2LX543R3BPOSMRU6BAKIVYB6W2JRRQFHN3YC5NSV5AITT6OXIDOW0YROTRT7MFJ45R1VYFF71MGI4XIOUZC511R0HAJC6WZU0EZEUUH0K7AT0U749KIOVLF5FA4C3BFXM2T4G8F57SW5EG64LU9GXRKZ2O0YGN7QA4QRUMALDFFJJ6NHLTVYYHKHRMWERQ8K782KITVCCH2G65C2WRQ85HINSMLHW06TIBADAGLEDK9YDARS47ET2A6JAF4I8WAW7K1FIXISKJKNNC0KP1MSO5Y6C2JBEFIA7G5NTECMXMNLYSTC0D9SF6VNXW7ALIGEBRJFDUGZE9FILWM4BMDY25N3YHKCAUBSBJBMMZX0T7XHAQHXUF3ZUROO5P6WGU2YU3RPICFVXGAA646TOTT2DEXK9RTXFQ8IE1BNC7ARDCW4TP2US01YN84ZV1FYWJ10HAJZUPKYQF7R5V654IEX39K6HC1Z32C3FZ6Q5NVNELWIJT9VG6QRK89FJLXLKUPFJL4GROK7TZQ7QHM6J3ZU9NU0B5GV8A9PXUFAO9KW80Q6WNABYMA1VVNC2J5GHHWNPQ9U7LK3TF0CMSYGAFYPGZLPXNPH3D41VL1A3NU6N6S3V9XXYFESEUCKYK0NAM1MBZ9BJ6AMQKKF25719V8RN54C1Q27LRI8SSK62RKSZ4VTYAE2J87LFAVI2U1V21YQ13ULOQW86PH9RDUEVA7UEJ6JTU7X1GJYNC1VR66F2EAC3TFGC4AKOVAZW137EW0V6AAU201X7ND3YTUNX2QBR24DXXC1BWTEZUXVTXNB63W5RD9GIQV9IP6CDDPAEW2IGADTKBW7DPANCAOBU18Z84PHLF6EQ2H7S7A2DHC75Q1AX4NSN7JQNGJGXHTAOBHI5DDMME5ZQPT856DEIMM6VM8XI8WE4E4JKYMY5W7ABEH82LSRX4GKFAYNHLUSBT4C0A215KZTVX1K49EHAO8O7YJCUS8YVVU2B3XG8QOBM6XHYQDK2X06ZJTDP4IN5K6GU2NKNS0CK9C2A21LZ1288LBBSEEHQ45NO1585NGFB91OSXUZYE7IBBC6L014RMNBWDZH755CN1PJ3UG8UKZK1KJBCF5LHHMXCSC0TILZBP6F453SHE5DK0637FNELXL0S8I6DTV6VQFM9YO6KZMIJ27WA2LM5ZV1W00PPVRVUSLYA4SYQRH0YY95HQ8UOEBM7LF00AQZOVYSGDNOICWI9OLBQZX61SHB7VLYXFUIZEW8GYPZLBVW15T1VB7BCJC5DL1UR71H5FDXTORFG62M3GFEB9RAWJHNS23V1E7U4ASMGZRS8603KFRDXYFY8YPLT1S8JWWQPW6J1VYPRKZBL0YE5J8J1EGCJRX26HP8UOMNRXUW3EWLO4L3D3CS9BIMWH4WMHYHEADJ8HM661ZNOGW4WX1070E9VO3QXXON5OT9JQ4BX6HVUFO5YMS1NG9195O8JOLWQ2IE4JR42OV4UBHVN199QIWSSYZHDE0GR043ROOGBTTQR5G11D6JZRSD3G66OHYMO9K1SKP8810P1QGF20KDDL0QPALG451MXXTETJ9CC5HFMNYUJPFN94CS2DR2TDNTSC2WYLGR068XRA238G2WFC8HJVD99VOJF5NUML0GJGKP6RL2TJW50ZRUDA7TD9S50B1ZQ5DF5MUTY11MTHHYNHOWRD92ES84IZWNKMLQZKNTMTFQQ6IDA6COQ5OT4MYTUN0OT8FG1GPV3LLCXQV2C4UBAYRHMMLRW3CHKX8O8RUKPNXGOJM5M5VVAEWYGFBGCDZZCE0LG83361H26AXBBWTKKCRNJJ3FVS8L17JADWO5NM17JY5S0SOJRY2K76G8ZZHAYN31P0WZNZY0QSSBS041IOR78BNH6SCMVTP1Y79D5JAKOCH51IIAC9WLQRHTRFJLUJ1JMCELHHQ16D23L2TKMOPAA4KV1CXSHHEV2K5HFRNKZ0IIP6O7P8KEUP0D68MBO2TBIAGE542EOMX807FJSH1JTOP1") },
|
||||
};
|
||||
get { return new IsfScheme { KnownSecrets = KnownSecrets }; }
|
||||
set { KnownSecrets = ((IsfScheme)value).KnownSecrets; }
|
||||
}
|
||||
}
|
||||
|
||||
internal class IsfDecoder
|
||||
|
@ -1,10 +1,9 @@
|
||||
<StackPanel x:Class="GameRes.Formats.GUI.WidgetISF"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:fmt="clr-namespace:GameRes.Formats.Ikura"
|
||||
xmlns:p="clr-namespace:GameRes.Formats.Properties"
|
||||
Orientation="Vertical" MaxWidth="250">
|
||||
<ComboBox Name="Scheme" ItemsSource="{Binding Source={x:Static fmt:MpxOpener.KnownSecrets}, Path=Keys, Mode=OneWay}"
|
||||
<ComboBox Name="Scheme" ItemsSource="{Binding}"
|
||||
SelectedValue="{Binding Source={x:Static p:Settings.Default}, Path=ISFScheme, Mode=TwoWay}"
|
||||
Width="200" Grid.Row="0"/>
|
||||
</StackPanel>
|
||||
|
@ -1,4 +1,7 @@
|
||||
using System.Windows.Controls;
|
||||
using GameRes.Formats.Ikura;
|
||||
using GameRes.Formats.Strings;
|
||||
using System.Linq;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace GameRes.Formats.GUI
|
||||
{
|
||||
@ -10,6 +13,8 @@ namespace GameRes.Formats.GUI
|
||||
public WidgetISF ()
|
||||
{
|
||||
InitializeComponent ();
|
||||
var keys = new string[] { arcStrings.ISFIgnoreEncryption};
|
||||
Scheme.ItemsSource = keys.Concat (MpxOpener.KnownSecrets.Keys.OrderBy (x => x));
|
||||
if (-1 == Scheme.SelectedIndex)
|
||||
Scheme.SelectedIndex = 0;
|
||||
}
|
||||
|
@ -69,6 +69,12 @@ namespace GameRes.Formats.KiriKiri
|
||||
public bool RetainDirs { get; set; }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class Xp3Scheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, ICrypt> KnownSchemes;
|
||||
}
|
||||
|
||||
// Archive version 1: encrypt file first, then calculate checksum
|
||||
// version 2: calculate checksum, then encrypt
|
||||
|
||||
@ -86,27 +92,17 @@ namespace GameRes.Formats.KiriKiri
|
||||
Signatures = new uint[] { 0x0d335058, 0 };
|
||||
}
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new Xp3Scheme { KnownSchemes = KnownSchemes }; }
|
||||
set { KnownSchemes = ((Xp3Scheme)value).KnownSchemes; }
|
||||
}
|
||||
|
||||
public bool ForceEncryptionQuery = true;
|
||||
|
||||
private static readonly ICrypt NoCryptAlgorithm = new NoCrypt();
|
||||
|
||||
public static readonly Dictionary<string, ICrypt> KnownSchemes = new Dictionary<string, ICrypt> {
|
||||
{ arcStrings.ArcNoEncryption, NoCryptAlgorithm },
|
||||
{ "Cafe Sourire", new XorCrypt (0xcd) },
|
||||
{ "Coμ", new ComyuCrypt() },
|
||||
{ "Damegane", new DameganeCrypt() },
|
||||
{ "Fate/hollow ataraxia", new FateHACrypt() },
|
||||
{ "Fate/stay night", new FateCrypt() },
|
||||
{ "Haruiro ☆ Communication ♪", new HaruiroCrypt() },
|
||||
{ "Hime to Majin to Koi Suru Tamashii", new HashCrypt() },
|
||||
{ "Imouto Style", new ImoutoStyleCrypt() },
|
||||
{ "Okiba ga Nai!", new OkibaCrypt() },
|
||||
{ "Ore no Saimin Fantasia", new SaiminCrypt() },
|
||||
{ "Seirei Tenshou", new SeitenCrypt() },
|
||||
{ "Swan Song", new SwanSongCrypt() },
|
||||
{ "Walpurgis", new WalpurgisCrypt() },
|
||||
{ "Zecchou Spiral!!", new ZecchouCrypt() },
|
||||
};
|
||||
public static Dictionary<string, ICrypt> KnownSchemes = new Dictionary<string, ICrypt>();
|
||||
|
||||
public override ArcFile TryOpen (ArcView file)
|
||||
{
|
||||
@ -756,6 +752,7 @@ NextEntry:
|
||||
#endregion
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public abstract class ICrypt
|
||||
{
|
||||
/// <summary>
|
||||
@ -778,6 +775,7 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class NoCrypt : ICrypt
|
||||
{
|
||||
public override byte Decrypt (Xp3Entry entry, long offset, byte value)
|
||||
@ -794,7 +792,8 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
internal class FateCrypt : ICrypt
|
||||
[Serializable]
|
||||
public class FateCrypt : ICrypt
|
||||
{
|
||||
public override bool HashAfterCrypt { get { return true; } }
|
||||
|
||||
@ -830,7 +829,8 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
internal class HashCrypt : ICrypt
|
||||
[Serializable]
|
||||
public class HashCrypt : ICrypt
|
||||
{
|
||||
public override byte Decrypt (Xp3Entry entry, long offset, byte value)
|
||||
{
|
||||
@ -852,7 +852,8 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
internal class XorCrypt : ICrypt
|
||||
[Serializable]
|
||||
public class XorCrypt : ICrypt
|
||||
{
|
||||
private byte m_key;
|
||||
|
||||
@ -886,7 +887,8 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
internal class SwanSongCrypt : ICrypt
|
||||
[Serializable]
|
||||
public class SwanSongCrypt : ICrypt
|
||||
{
|
||||
static private byte Adjust (uint hash, out int shift)
|
||||
{
|
||||
@ -930,7 +932,8 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
internal class SeitenCrypt : ICrypt
|
||||
[Serializable]
|
||||
public class SeitenCrypt : ICrypt
|
||||
{
|
||||
public override byte Decrypt (Xp3Entry entry, long offset, byte value)
|
||||
{
|
||||
@ -1001,7 +1004,8 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
internal class OkibaCrypt : ICrypt
|
||||
[Serializable]
|
||||
public class OkibaCrypt : ICrypt
|
||||
{
|
||||
public override byte Decrypt (Xp3Entry entry, long offset, byte value)
|
||||
{
|
||||
@ -1049,7 +1053,8 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
internal class SaiminCrypt : ICrypt
|
||||
[Serializable]
|
||||
public class SaiminCrypt : ICrypt
|
||||
{
|
||||
public override byte Decrypt (Xp3Entry entry, long offset, byte value)
|
||||
{
|
||||
@ -1098,7 +1103,8 @@ NextEntry:
|
||||
}
|
||||
}
|
||||
|
||||
internal class DameganeCrypt : ICrypt
|
||||
[Serializable]
|
||||
public class DameganeCrypt : ICrypt
|
||||
{
|
||||
public override byte Decrypt (Xp3Entry entry, long offset, byte value)
|
||||
{
|
||||
|
@ -36,25 +36,44 @@ namespace GameRes.Formats.KiriKiri
|
||||
}
|
||||
}
|
||||
|
||||
internal abstract class CxEncryption : ICrypt
|
||||
[Serializable]
|
||||
public class CxScheme
|
||||
{
|
||||
public uint Mask;
|
||||
public uint Offset;
|
||||
|
||||
public byte[] PrologOrder;
|
||||
public byte[] OddBranchOrder;
|
||||
public byte[] EvenBranchOrder;
|
||||
|
||||
public uint[] ControlBlock;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class CxEncryption : ICrypt
|
||||
{
|
||||
private uint m_mask;
|
||||
private uint m_offset;
|
||||
|
||||
protected byte[] PrologOrder { get; set; }
|
||||
protected byte[] OddBranchOrder { get; set; }
|
||||
protected byte[] EvenBranchOrder { get; set; }
|
||||
protected byte[] PrologOrder;
|
||||
protected byte[] OddBranchOrder;
|
||||
protected byte[] EvenBranchOrder;
|
||||
|
||||
protected abstract uint[] ControlBlock { get; }
|
||||
protected uint[] ControlBlock;
|
||||
|
||||
public CxEncryption (uint mask, uint offset)
|
||||
[NonSerialized]
|
||||
CxProgram[] m_program_list = new CxProgram[0x80];
|
||||
|
||||
public CxEncryption (CxScheme scheme)
|
||||
{
|
||||
m_mask = mask;
|
||||
m_offset = offset;
|
||||
m_mask = scheme.Mask;
|
||||
m_offset = scheme.Offset;
|
||||
|
||||
PrologOrder = new byte[] { 0, 1, 2 };
|
||||
OddBranchOrder = new byte[] { 0, 1, 2, 3, 4, 5 };
|
||||
EvenBranchOrder = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 };
|
||||
PrologOrder = scheme.PrologOrder;
|
||||
OddBranchOrder = scheme.OddBranchOrder;
|
||||
EvenBranchOrder = scheme.EvenBranchOrder;
|
||||
|
||||
ControlBlock = scheme.ControlBlock;
|
||||
}
|
||||
|
||||
uint GetBaseOffset (uint hash)
|
||||
@ -122,8 +141,6 @@ namespace GameRes.Formats.KiriKiri
|
||||
Decrypt (entry, offset, values, pos, count);
|
||||
}
|
||||
|
||||
CxProgram[] m_program_list = new CxProgram[0x80];
|
||||
|
||||
Tuple<uint, uint> ExecuteXCode (uint hash)
|
||||
{
|
||||
uint seed = hash & 0x7f;
|
||||
@ -490,858 +507,12 @@ namespace GameRes.Formats.KiriKiri
|
||||
}
|
||||
}
|
||||
|
||||
internal class FateHACrypt : CxEncryption
|
||||
[Serializable]
|
||||
public class ZecchouCrypt : CxEncryption
|
||||
{
|
||||
public FateHACrypt () : base (0x143, 0x787)
|
||||
public ZecchouCrypt (CxScheme scheme) : base (scheme)
|
||||
{
|
||||
}
|
||||
|
||||
protected override uint[] ControlBlock { get { return FateControlBlock; } }
|
||||
|
||||
static readonly uint[] FateControlBlock = new uint[] {
|
||||
0x9c91badf, 0x8b8f868d, 0xdf919096, 0x8b91909c, 0xdf93908d, 0x9c90939d, 0xd2d2df94, 0x9e8bacdf,
|
||||
0x9e9c968b, 0xdf869393, 0x9bdf8d90, 0x929e9186, 0x939e9c96, 0xdfd38693, 0x9a8d969b, 0x86938b9c,
|
||||
0xdf8d90df, 0x969b9196, 0x8b9c9a8d, 0xdfd38693, 0x91968c8a, 0x978bdf98, 0x8fdf8c96, 0x8d98908d,
|
||||
0x9edf929e, 0x90d09b91, 0x939ddf8d, 0xdf949c90, 0x92908d99, 0x978b90df, 0x8fdf8d9a, 0x8d98908d,
|
||||
0xdf8c929e, 0x93939688, 0xdf9a9ddf, 0x9a939396, 0xdf939e98, 0x8bdf869d, 0x93df9a97, 0x919a9c96,
|
||||
0x9edf9a8c, 0x9a9a8d98, 0x8b919a92, 0x4e7ddfd1, 0x897c337d, 0xb07c727c, 0x7f7c767c, 0x8a7c1d7d,
|
||||
0x9d7c727c, 0x0f7db17c, 0x3c6fbe7e, 0x3a7db66c, 0x157d5f7d, 0xb66c516c, 0x5f7d3a7d, 0xbe7e157d,
|
||||
0x256f436d, 0x3a7db66c, 0x157d5f7d, 0x256f2b75, 0x3a7db66c, 0x157d5f7d, 0x436ebe7e, 0x897c337d,
|
||||
0xb07c727c, 0x7f7c767c, 0x187d567d, 0x5d7d8f68, 0x4e7d167d, 0x327d397d, 0xbc7c767c, 0x6c7ca57c,
|
||||
0x367da77c, 0x177d197d, 0x497d2974, 0x157d187d, 0x5d7d3b7d, 0x487d237d, 0x71f5bd7e, 0x7d116e56,
|
||||
0x7dbe7436, 0x69397d16, 0x7d557d7a, 0x7d4e7d36, 0x7d4e7d36, 0x703b7d4a, 0x7d827390, 0x7d3b7d59,
|
||||
0x7d157d52, 0xf5bd7e16, 0x53708a7e, 0x337d4f6d, 0x2e6b8a1f, 0x207d9374, 0xa37c0f7d, 0xa57ca47e,
|
||||
0xa87ca47e, 0x8968337d, 0x3a7d3368, 0x157d1d7d, 0x92df317d, 0x869e938f, 0x557d8d9a, 0x496f3b72,
|
||||
0x157d4c7d, 0x1a6ebe7e, 0x6571337d, 0x377d367d, 0x427d3e7d, 0x2b6e0c70, 0x337d3a7d, 0xa870be7e,
|
||||
0x377d9c6d, 0x567d0e7d, 0x377d306a, 0x497d4b75, 0x2074367d, 0x0c705d7d, 0x3a7d2b6e, 0xa47e327d,
|
||||
0x6ef5897e, 0x7d306a75, 0x7d187d12, 0x7d427647, 0x7d41730f, 0x7d3b7d3e, 0x7d337d16, 0x7d127d56,
|
||||
0x7d187d56, 0x7d5d7d37, 0x7dbe7e55, 0x7d2b7d42, 0x7d93690e, 0x7342750f, 0x7d4a7d82, 0x7d527d3b,
|
||||
0x7d3b7d15, 0x7d167d5d, 0x7d417d33, 0x7e5b7d14, 0x70216bbd, 0x7d327d68, 0x7d367d37, 0x7d1d7d18,
|
||||
0x7d157d5b, 0x7d4f7d4a, 0x7d8a7e36, 0x7d167d20, 0x7d327d32, 0x7d327d20, 0x7e507d15, 0x7d157db4,
|
||||
0x7d157d50, 0x7d157d50, 0x7d327d15, 0x7d327d15, 0x7d157d32, 0x7d147d20, 0x7e147d20, 0x73397d89,
|
||||
0x7d5d7d41, 0x7d557d37, 0x69be7e18, 0x75337d93, 0x70397d6c, 0x7d7a6d1c, 0x7d0c710f, 0x7d197150,
|
||||
0x7e427d3e, 0x6bf5f5bd, 0x7d687021, 0x7d4e7d55, 0x7d377d5b, 0x7d3b7d3e, 0x7d237d4a, 0x7d427d3e,
|
||||
0x7d327d33, 0x7d4a7d42, 0x7c157756, 0x6e717369, 0x7d417db0, 0x7d427d3e, 0x7d147d41, 0x7e567d5b,
|
||||
0x7d7a69bd, 0x68406832, 0x7d796d62, 0x7d4e7d36, 0x7d377d0e, 0x7d397d4e, 0x6e04730f, 0x7d3e7d69,
|
||||
0xf5bd7e42, 0x51758a7e, 0x367dac6e, 0x207d1d68, 0x187d427d, 0x4472be7e, 0x0f7d636c, 0x98cacedf,
|
||||
0x597d3e76, 0xbe7e3b7d, 0x556a436b, 0x187d527d, 0x53725d7d, 0x3e7d4b7d, 0x397d427d, 0x147d4e7d,
|
||||
0xbe7e3a7d, 0x2e6b8a1f, 0x6c7cab7c, 0xbe7e327d, 0x5b7d1f7d, 0xb0710e6c, 0x3a7d936f, 0x897e487d,
|
||||
0x7d9369f5, 0x7d5f7d32, 0x7d3b7d12, 0x6840683b, 0x7d0f7d62, 0x7d207d1d, 0x7e467d4c, 0x70216bbe,
|
||||
0x740f7d68, 0x7d237d87, 0x7e427d46, 0x7d7a69bd, 0x73427632, 0x6a567133, 0x68557d55, 0x7d626840,
|
||||
0x7d1d7d0f, 0x7d4c7d20, 0x7d187d46, 0x7d427d15, 0x68567d33, 0x7d0f7662, 0x7d547d3a, 0x7d5d7d37,
|
||||
0x7d5b7d19, 0x70a36a37, 0x7d417d11, 0x7d427d3e, 0x7dbe7e55, 0x77157d44, 0x7e776837, 0x70216bbe,
|
||||
0x73337d68, 0x7d8b6841, 0x76626832, 0x6b8c6a0f, 0x7d367da3, 0x7d3e7d37, 0xf5bd7e42, 0x70216bf5,
|
||||
0x73327d68, 0x7d3e7d41, 0x7d5d7d3b, 0x7d4e7d16, 0x77557d39, 0x6a5e692c, 0x7d41698c, 0x7d417d37,
|
||||
0x7e3a7d50, 0x728971be, 0x6e567193, 0x7d327d33, 0x7d397d23, 0x7d377d1f, 0x7d5b7d19, 0x7d337d37,
|
||||
0x72be7e3a, 0x7d20743a, 0x7d5f7d32, 0x69177d23, 0x741f7d93, 0x7d367dbc, 0x7d3b7d4a, 0x7d377d5d,
|
||||
0x7dbd7e5d, 0x7d397d1f, 0x77397d1f, 0x7d576a3f, 0x7d567d41, 0x7dbe7e18, 0x7d5d7d39, 0x7d337d5b,
|
||||
0x7d5f7d1f, 0x7dbd7e16, 0x7d3e7d39, 0x71367d52, 0x7d42690a, 0x7d207632, 0x7d3b7d53, 0x7d167d5d,
|
||||
0x7d507d12, 0x7e4a7d41, 0x684068be, 0x69156f62, 0x7c337d1a, 0x7c6c7cbe, 0x7c727c97, 0x7d977cbc,
|
||||
0x71397636, 0x6bac6e69, 0x7d0f7d35, 0x7d187d1d, 0x7d3b7d46, 0x7d167d5d, 0x7d417d0e, 0x76187d56,
|
||||
0x76766a20, 0x7d557d28, 0x7d567d56, 0x7d3b7d3e, 0x7d337d16, 0x7d556a32, 0x7d3e7d56, 0x7d5d7d3b,
|
||||
0xf5bd7e16, 0x7d397df5, 0x7d417332, 0x7d3b7d3e, 0x7e9c7e1f, 0x7e9c7e9c, 0x684068bd, 0x7d796d62,
|
||||
0x7d8a7e36, 0x711f7d3a, 0x7c1f7d17, 0x7c907c93, 0x7e907c93, 0x7d3d7d9f, 0x7d3a7d5d, 0x7dbc7136,
|
||||
0x7c427d3e, 0x7caa7cb2, 0x7caa7cb2, 0x7c767c8b, 0x7c8f7cbc, 0x7c1f7d6c, 0x7c907c93, 0x7e907c93,
|
||||
0x7d3d7d9f, 0x7d3a7d5d, 0x7dbc7136, 0x7c427d3e, 0x7caa7cb2, 0x7caa7cb2, 0x7c767c8b, 0x7c8f7cbc,
|
||||
0x7c1f7d6c, 0x7c907c93, 0x7e907c93, 0x7d3d7d9f, 0x7d3a7d5d, 0x7dbc7136, 0x7c427d3e, 0x7caa7cb2,
|
||||
0x7caa7cb2, 0x7c767c8b, 0x7c8f7cbc, 0x7c1f7d6c, 0x7c907c93, 0x7e907c93, 0x7d3d7d9f, 0x7d3a7d5d,
|
||||
0x7dbc7136, 0x7c427d3e, 0x7caa7cb2, 0x7caa7cb2, 0x7c767c8b, 0x7c8f7cbc, 0x7c1f7d6c, 0x7c907c93,
|
||||
0x7e907c93, 0x7d3d7d9f, 0x7d3a7d5d, 0x7dbc7136, 0x7c427d3e, 0x7caa7cb2, 0x7caa7cb2, 0x7c767c8b,
|
||||
0x7c8f7cbc, 0x7c1f7d6c, 0x7c907c93, 0x7e907c93, 0x7d3d7d9f, 0x7d3a7d5d, 0x7dbc7136, 0x7c427d3e,
|
||||
0x7caa7cb2, 0x7caa7cb2, 0x7c767c8b, 0x7c8f7cbc, 0x7c1f7d6c, 0x7c907c93, 0x7e907c93, 0x7d3d7d9f,
|
||||
0x7d3a7d5d, 0x7dbc7136, 0x7c427d3e, 0x7caa7cb2, 0x7caa7cb2, 0x7c767c8b, 0x7c8f7cbc, 0x7c1f7d6c,
|
||||
0x7c907c93, 0x7e907c93, 0x7d3d7d9f, 0x7d3a7d5d, 0x7dbc7136, 0x7c427d3e, 0x7caa7cb2, 0x7caa7cb2,
|
||||
0x7c767c8b, 0x7c8f7cbc, 0x7c1f7d6c, 0x7c907c93, 0x7e907c93, 0x7d897e9f, 0x6a567d39, 0x723376bf,
|
||||
0x7d497d53, 0x763a7d17, 0x7d127d33, 0x7d167d15, 0x7dbe7e39, 0x7d3e7d5d, 0x765d7d42, 0x6f0f7d42,
|
||||
0x7d127db7, 0x7d157d4c, 0x7d337d16, 0x700e6b56, 0x6a367d12, 0x7d3f778c, 0x7d377d36, 0xf5bd7e16,
|
||||
0xccad251c, 0x01804437, 0xacf8d91d, 0xf4f495a3, 0xc07183e4, 0x617c1459, 0x279d2e94, 0x697cc3b8,
|
||||
0x6f05547d, 0x97227782, 0xe5248bd1, 0xb5ebbdcc, 0x82a1cb76, 0x64687a74, 0xce35c18b, 0xe8905e50,
|
||||
0xafffd2ce, 0x3612af4c, 0xf4bc0fcd, 0x64856fff, 0xead50cc7, 0x5066ed91, 0x7b0f0acf, 0x10cbc0d4,
|
||||
0xa958c6fc, 0xe4707008, 0xd312636a, 0xd40c3361, 0xaf06d42d, 0x3f6808d2, 0xce796be4, 0x8b709456,
|
||||
0xfae59248, 0xb6dddb98, 0xb7f56869, 0x14b68dbd, 0x5e5bd9ac, 0xdc8cd143, 0x41846e8e, 0xbf86a321,
|
||||
0x18b857b3, 0x4db38b85, 0x53a083cc, 0x51336b61, 0x862243e1, 0xe047fbe1, 0xcdd48d79, 0xae3ab3be,
|
||||
0x6524ddbb, 0xe64899da, 0x0367c27d, 0xdfa3b943, 0xf09ce1e4, 0x1b0f23cd, 0x25ff6afe, 0x82ea0625,
|
||||
0xc011def6, 0x17600b48, 0xd3dd0e93, 0x548ddf45, 0x4fee40df, 0x3c26652e, 0xe99396f2, 0xa7dd4872,
|
||||
0xb4a6ecaa, 0xa6da9022, 0xf6d10dd3, 0x2ef86186, 0x46c02be3, 0x9db7d8cf, 0xf410cc59, 0xf1c55546,
|
||||
0xc7c9c416, 0x527dc4e1, 0x202ba1ea, 0x59d6de93, 0x2ea2c560, 0x138c7c6a, 0x1f8b369c, 0xf1d3f1e8,
|
||||
0xee767328, 0x989440fe, 0x6ec3d8c5, 0xab83f151, 0xe41110ad, 0x33d88275, 0x9ed82668, 0xe6238d3e,
|
||||
0xf4e9b036, 0xdfcf1a1c, 0x596aadbb, 0xb75bb192, 0x9b37c762, 0x78cd0322, 0xc0d8acd1, 0xa76d8757,
|
||||
0xa71a0d57, 0xfe4c50cc, 0xd82f44cf, 0x8ea223e6, 0x73e8e602, 0x4f074710, 0x0f9715c9, 0x4b513841,
|
||||
0x8c9b590a, 0xb22811da, 0x1bcb3180, 0xebbaf518, 0x8ab58fbb, 0x0c8effb7, 0x16fed8ab, 0x62f3f635,
|
||||
0x966c212c, 0x2ae9a4cc, 0x42a4b17b, 0xe56fc4ad, 0xa7dca536, 0xc2e8597e, 0x07a05b93, 0x29ab3356,
|
||||
0x24864a83, 0x7bffbc18, 0xd58fbd55, 0x2e8dd69c, 0xc145444c, 0x31840086, 0xc2cd2b55, 0x0bd3cb87,
|
||||
0x01d4e666, 0xfc0d9c8c, 0x4af78c64, 0x0498df30, 0xf696e76e, 0xb1f13dad, 0x51824703, 0x9caeda64,
|
||||
0xe3258725, 0xfc59f066, 0x838680e5, 0x36928f25, 0x16a1e088, 0x58a4be3f, 0x3e16541a, 0x9d9ca177,
|
||||
0x6dcb242b, 0x786d809b, 0xcd736875, 0xaaea1072, 0x97604118, 0x3a14f5df, 0xfd0eb775, 0xfc68a624,
|
||||
0xfe80b891, 0x177a10e1, 0xb221bc1a, 0x22a87b49, 0x6e0fd8b3, 0x9471faa0, 0xdc781156, 0xd1d955bb,
|
||||
0xf06be41d, 0xae5f61d8, 0x3a4de399, 0x8ec113cb, 0xcd131c8a, 0x516825cf, 0xa7242dc1, 0xb27336c9,
|
||||
0x7bdf287d, 0x3eb6d0ca, 0x1361ef6e, 0xd9298871, 0xd02c758e, 0x06123a76, 0xe6f7c422, 0x71e7d097,
|
||||
0xc05bbc9e, 0xf2472301, 0x1d84add8, 0x2abbb422, 0x00c6f197, 0xc6a2948d, 0x0ec6b993, 0x49bfa4dc,
|
||||
0x601a1b59, 0xa302e36f, 0xe107a92f, 0x9442e001, 0x518d0fad, 0x60ba8fb3, 0x7de05d29, 0x660220a6,
|
||||
0x2305e532, 0xd4193ca6, 0x9669c8e2, 0x99844e6d, 0xa523f6d0, 0x3d768288, 0xff84aaa6, 0xdbb65d74,
|
||||
0xd22caba8, 0x86e51c5f, 0x9ce3cba3, 0xa031be31, 0xc7eb8c81, 0x732e2e54, 0x1bd70a36, 0xabb9e07c,
|
||||
0x1f6026ea, 0xf56c5ed4, 0x515d305d, 0xd2688e75, 0xf272f3e9, 0x5669847f, 0xd77f90c4, 0xc1655cb5,
|
||||
0x981cff0e, 0xca2172e9, 0x80e68137, 0x04c28018, 0x17a1f61e, 0x5305dc98, 0x120b8ca4, 0xc8966d81,
|
||||
0x48b88869, 0x99e34b6c, 0xcd813746, 0xa2c59dfd, 0xac8dcf74, 0x03debe30, 0x95788a09, 0xe5fc2c69,
|
||||
0x76b5cf3d, 0x618c56e9, 0xda92dff8, 0xd961919d, 0x4806e3a8, 0x0ed09bff, 0xaced410e, 0x6878b0f9,
|
||||
0x55d2a073, 0x5fe3eaa9, 0x86840ba7, 0x5106fa6e, 0xb90b8455, 0x470d632b, 0xc83fd88f, 0xd0a4fa65,
|
||||
0x834c7227, 0x7d1a0d61, 0x9aa6746d, 0xdb0d9da5, 0x70c42d80, 0x99778095, 0x0a7e9b9e, 0x4619b7ce,
|
||||
0x0b99295b, 0xbc912d1f, 0x4c397dcc, 0xf96b7ed0, 0x1096976d, 0xb1a978dc, 0x3b664a8f, 0x1edb01c1,
|
||||
0x655cd150, 0xde516adf, 0x3da50d73, 0xd4018fe9, 0xe393b949, 0xb5bc6e0b, 0x575eca9e, 0x598a1ef6,
|
||||
0xf2166833, 0x20224959, 0x4aff9f0d, 0x44ae2727, 0x34f63270, 0xf6b600d5, 0xfebdbf67, 0xa62f3e23,
|
||||
0xd0ef945a, 0x6875d000, 0x4f1c9d74, 0x4c3b62fd, 0x076c9136, 0x73b7186e, 0x52bf8a6b, 0xded440a7,
|
||||
0x9dd0e71c, 0x4c6a8036, 0x01c87ce8, 0x6a5c80cc, 0xff858cef, 0xd64bcfe4, 0x2d24b76f, 0xd36c6bd1,
|
||||
0x9c4ca179, 0x8cdac4b6, 0x003ff1ea, 0xddc5b34c, 0x15d64b1a, 0xf5fa141f, 0x5812bf1f, 0x9bd50759,
|
||||
0xc220bc8c, 0x934eb6f5, 0x6cd508e6, 0xc862d424, 0xc35b9d50, 0x538a1855, 0x871d4354, 0x2f6d55a3,
|
||||
0xadcbf11f, 0xfba75a6c, 0x0d9d2bf1, 0x414f7db8, 0x3e7cc157, 0x9dba44fa, 0xd9d556e4, 0x7c7b0191,
|
||||
0xa9f120f4, 0x56c2e1a7, 0xda660052, 0xc57e3127, 0x761f1df3, 0xfeb92f5b, 0x59b933d0, 0x5431e7af,
|
||||
0x2a661b4d, 0x774d66b3, 0x74186a34, 0xc2e28dfb, 0xd99758e0, 0x5d4e8d31, 0x00ac0104, 0x7b404a77,
|
||||
0xa5b9dbe6, 0x485d01d8, 0x78daf586, 0x8debafeb, 0x30ced20c, 0x0a2d79f2, 0x809695ac, 0x1cc31d1c,
|
||||
0x79a647a8, 0x61a4c9ba, 0x41101d1d, 0xbae0aeaa, 0x5fed997a, 0x4688d100, 0x8cc6fe5c, 0xa0c23dc1,
|
||||
0xdf13f396, 0x1942ee68, 0x953587fe, 0x89370d97, 0x85aba55d, 0xb87b9869, 0x2df88986, 0x6ec182e2,
|
||||
0x0e232d62, 0xad503b2e, 0x5636c5a7, 0xd3a17cae, 0x426a9c64, 0x7a8e14b7, 0x5a14ad86, 0x96afc436,
|
||||
0xfaa68137, 0x1b56f995, 0x3f7695c4, 0xb14d9592, 0xdc648fb9, 0x0bc7f21f, 0x8a2e4f76, 0x5619c3f5,
|
||||
0x8047a43d, 0x0c76ed90, 0x0c4bf0ec, 0xb5d5f16a, 0xca043902, 0x2b16fc44, 0xda97feab, 0x97f3ed6d,
|
||||
0x6cdcbcca, 0x423fc66f, 0x016e0ef3, 0xa0ed2304, 0xaaef9592, 0x9307f834, 0xe6cab837, 0xefb51bed,
|
||||
0x7579964e, 0x3e09b1ed, 0x629ed018, 0xdc375c19, 0x1a765758, 0xaa132aa7, 0x37efa297, 0x9d8a54fd,
|
||||
0x8b2d6de4, 0xfdaf5803, 0x4c7f84f7, 0x4f51e520, 0x25c791ed, 0xb4ae3f55, 0x30eb21a6, 0x10218782,
|
||||
0xa1f328a6, 0x26600064, 0xf8222315, 0xa09386cd, 0x2c39af68, 0x8b09139e, 0x30ce56a6, 0x6112544c,
|
||||
0xff62eaa6, 0x8f7d06b2, 0xdb4815b8, 0x0b868340, 0x1231da0b, 0x9bd1ebd1, 0x54840c1b, 0x248e42e9,
|
||||
0xdbcd1327, 0x379e4966, 0xe9586a5d, 0xfb090b72, 0xf252c604, 0xdd9f0af7, 0x22a5fc71, 0x2db6d821,
|
||||
0xebc4ddd4, 0x4a8d21e9, 0xbef971c2, 0x99797b4a, 0xd7d918bf, 0xe0272f88, 0x908488c2, 0xe6a697aa,
|
||||
0x09f15f95, 0x21ead25e, 0x257f333e, 0x773219eb, 0xb4ee8710, 0x1388b5d4, 0x7df20323, 0x6ae56ce3,
|
||||
0xc5ba6c40, 0x8e544d26, 0x926598c1, 0x1668a8b4, 0x6b67d1fc, 0x11e2e018, 0xb3fce656, 0xdde6f22a,
|
||||
0x52469404, 0x2536ee5c, 0x2868e1ff, 0x5f4ce971, 0x47c4a8af, 0xefbbb6cf, 0xecd91b07, 0x929aad88,
|
||||
0xe35010fd, 0xdf660e0a, 0x346c0adf, 0x2c0e0695, 0xd142aec4, 0x0007122f, 0xcb1db521, 0xf5dbcfa3,
|
||||
0x1986d784, 0xa6590191, 0x8004d00b, 0x3cb5d898, 0x109b6212, 0x82b90029, 0xae090378, 0x2fa37649,
|
||||
0xec0c9ede, 0x4eea87c2, 0x127e1796, 0x11c75395, 0x63f6685b, 0xa0add61c, 0xf3189340, 0x66533a49,
|
||||
0xd548747a, 0x97f58fa9, 0xdc5581ef, 0xa7c8d34a, 0x9590eb0d, 0xee2a68c1, 0x21f39b12, 0x1d9ab21a,
|
||||
0x0549c2c4, 0xac426ebf, 0x3b5eedf1, 0xa313c69a, 0x72e8f693, 0x4177233f, 0x6c6d41ca, 0xeda75e23,
|
||||
0x9cc72f26, 0xf7b32b24, 0x791a1535, 0xd9b3046b, 0xed381a83, 0x96c212f6, 0x3298d4fc, 0xb2006d03,
|
||||
0x236da0b4, 0x0d15b5fc, 0xcbc90ebc, 0xca6dff19, 0x28d410de, 0x0729bb85, 0x81ae90fb, 0x8f58f849,
|
||||
0x93fca36d, 0x1b03aa91, 0x5524aab6, 0x1fb32602, 0xedcc6b65, 0xea4521f6, 0x8f98dd84, 0xe84fc42b,
|
||||
0x1cf33210, 0x8f15111b, 0xa2537850, 0xaf5267dd, 0x87717c41, 0x111ab1af, 0x11fa5e31, 0x39f083e0,
|
||||
0xf0ddf573, 0x523d6e0e, 0xfc16b1e0, 0x80139739, 0x7a285147, 0xfcc98900, 0xf6a57404, 0x5cc492c8,
|
||||
0x18724e8b, 0xf799c3ca, 0xabebcb28, 0x8d8dbba8, 0x37c8a37d, 0x54de2b79, 0x9ac4abc2, 0xa40c3bb0,
|
||||
0x09c5de57, 0xbf842d0b, 0xcfdc79aa, 0x9542c1b3, 0x4ca1174d, 0x6f611ce3, 0x76b07b17, 0x25bc42d2,
|
||||
0xb9149fd7, 0x9506b278, 0xf5a249d0, 0x6e4ec763, 0x9f41fd64, 0x9e985bf4, 0x5b7b885c, 0x0b1b6a90,
|
||||
0x445cb520, 0xe2ff9975, 0x294c23b1, 0x1abbd21a, 0xe461e3d8, 0x7274020d, 0x69b7e2e7, 0x2ef3614d,
|
||||
0x7743c977, 0xcbcfd022, 0x9ecaae13, 0x5b0f9715, 0xa09791eb, 0x153fc68d, 0x0eb044b9, 0x7588ff16,
|
||||
};
|
||||
}
|
||||
|
||||
internal class ImoutoStyleCrypt : CxEncryption
|
||||
{
|
||||
public ImoutoStyleCrypt () : base (0x278, 0xd7)
|
||||
{
|
||||
PrologOrder = new byte[] { 2, 1, 0 };
|
||||
OddBranchOrder = new byte[] { 1, 2, 4, 0, 5, 3 };
|
||||
EvenBranchOrder = new byte[] { 7, 5, 1, 3, 6, 4, 2, 0 };
|
||||
}
|
||||
|
||||
protected override uint[] ControlBlock { get { return ImoutoControlBlock; } }
|
||||
|
||||
static readonly uint[] ImoutoControlBlock = new uint[] {
|
||||
0x9c91badf, 0x8b8f868d, 0xdf919096, 0x8b91909c, 0xdf93908d, 0x9c90939d, 0xd2d2df94, 0x9e8bacdf,
|
||||
0x9e9c968b, 0xdf869393, 0x9bdf8d90, 0x929e9186, 0x939e9c96, 0xdfd38693, 0x9a8d969b, 0x86938b9c,
|
||||
0xdf8d90df, 0x969b9196, 0x8b9c9a8d, 0xdfd38693, 0x91968c8a, 0x978bdf98, 0x8fdf8c96, 0x8d98908d,
|
||||
0x9edf929e, 0x90d09b91, 0x939ddf8d, 0xdf949c90, 0x92908d99, 0x978b90df, 0x8fdf8d9a, 0x8d98908d,
|
||||
0xdf8c929e, 0x93939688, 0xdf9a9ddf, 0x9a939396, 0xdf939e98, 0x8bdf869d, 0x93df9a97, 0x919a9c96,
|
||||
0x9edf9a8c, 0x9a9a8d98, 0x8b919a92, 0x4e7ddfd1, 0x897c337d, 0xb07c727c, 0x7f7c767c, 0x8a7c1d7d,
|
||||
0x9d7c727c, 0x0f7db17c, 0x3c6fbe7e, 0x3a7db66c, 0x157d5f7d, 0xb66c516c, 0x5f7d3a7d, 0xbe7e157d,
|
||||
0x256f436d, 0x3a7db66c, 0x157d5f7d, 0x256f2b75, 0x3a7db66c, 0x157d5f7d, 0x436ebe7e, 0x897c337d,
|
||||
0xb07c727c, 0x7f7c767c, 0x187d567d, 0x5d7d8f68, 0x4e7d167d, 0x327d397d, 0xbc7c767c, 0x6c7ca57c,
|
||||
0x367da77c, 0x177d197d, 0x497d2974, 0x157d187d, 0x5d7d3b7d, 0x487d237d, 0x7ef5bd7e, 0x69d6bc96,
|
||||
0x7ca77c7a, 0x7cbc7ca1, 0x72586f74, 0x77307713, 0xdf10760a, 0xcececfcd, 0x4473f5f5, 0x056c1c6e,
|
||||
0xbe7e8469, 0x916da169, 0x8c6c046a, 0xbd7e8c71, 0x727e72f5, 0x7d39761d, 0x7dbe7e32, 0x7da57357,
|
||||
0x7d1e7d40, 0xca397d0e, 0x337d936f, 0x557d7a69, 0x217da570, 0x39761a6e, 0xbd7e4f6e, 0x5f7df5f5,
|
||||
0x056c167d, 0xbc75be7e, 0x3a7db075, 0x69719b71, 0x487d0f7d, 0x4368167d, 0x567d9a6f, 0xbe7e187d,
|
||||
0x0e7d377d, 0xb67e397d, 0x73577df5, 0x7d407da5, 0x770e7d1e, 0x7db07537, 0x77ac6e32, 0x75bc750a,
|
||||
0x77367db0, 0x7da57025, 0x7d377d4a, 0x7e5d7d4c, 0x397df5b6, 0x577d337d, 0x4a7dbd6d, 0x547d557d,
|
||||
0x337d427d, 0xbd7e417d, 0x346cf5f5, 0x337dad6e, 0x85760777, 0x166f4a7d, 0x367d4173, 0x1d727e72,
|
||||
0x327d3976, 0x646e1a6e, 0x367d537d, 0xf5f5bd7e, 0xa573577d, 0x1e7d407d, 0x337d0e7d, 0x50689c71,
|
||||
0x7edf327d, 0x7d956d8a, 0x774a7d41, 0x6a936f15, 0x7d187d16, 0x7d4a7d4a, 0x7d1f7d3b, 0x725d7d5d,
|
||||
0x7d78725f, 0x7d417d5d, 0x7e187d56, 0x417ddf89, 0x5b7d447d, 0xa37e3a7d, 0xf5f5a37e, 0x557d417d,
|
||||
0x4e7dbe7e, 0x367d157d, 0x3e7d5d72, 0x337d427d, 0x6fca327d, 0x69337d93, 0x7d427d7a, 0xf5bd7e40,
|
||||
0x7d7a69f5, 0x7d407d42, 0x77ac6e32, 0xf5be7e0a, 0xa573577d, 0x1e7d407d, 0x557d0e7d, 0x417dbe7e,
|
||||
0x417d5d7d, 0x417d5d7d, 0xa47ea47e, 0x5d7da47e, 0x547d487d, 0x7df5667e, 0x7d3e7d41, 0x7d567d42,
|
||||
0x7d3a7d18, 0xf5bd7e48, 0x73577df5, 0x7d407da5, 0x7d0e7d1e, 0x69056c0f, 0x7d367d84, 0x7d397d2f,
|
||||
0x7d9c7117, 0x7d3b7d4a, 0x7d527d57, 0x7d507d12, 0x7d327d36, 0x7d567d5d, 0x7e5d7d37, 0x7b71f5be,
|
||||
0x9c711f7d, 0xb67e167d, 0x7d5f7df5, 0x7d4a7d42, 0x7d9c7155, 0x7e337d16, 0x397df5b6, 0x7d936fca,
|
||||
0x7d7a6933, 0x7e127d55, 0x7e127da4, 0x7d547da4, 0x7da47e1e, 0x7e1e7d54, 0x6e337da4, 0x7d646e1a,
|
||||
0xf5bd7e53, 0x7d487df5, 0x7d427d3e, 0x7d0e7d1f, 0x7d337d41, 0x7e597d48, 0x577df5be, 0x407da573,
|
||||
0x0e7d1e7d, 0x577d337d, 0x9d675d6f, 0x397da873, 0x3b7d4a7d, 0x397d2f7d, 0x417d177d, 0x056c507d,
|
||||
0x367d8469, 0x3e7d9c71, 0x1f7d3b7d, 0x5d7d5d7d, 0x397d4e7d, 0xb67e367d, 0x447df5f5, 0x3b7d4a7d,
|
||||
0xb16dbe7e, 0x9c71557d, 0x337d167d, 0xb77e567d, 0x7d387df5, 0x7d7a6933, 0x7d9c7155, 0x7e567d16,
|
||||
0x327df5b7, 0x577dbe7e, 0x407da573, 0x0e7d1e7d, 0x7773557d, 0x167d207d, 0x397d4e7d, 0xbd7e367d,
|
||||
0x327df5f5, 0x4a7d427d, 0x9c713b7d, 0x427d3e7d, 0x397d7a69, 0xa573577d, 0x1e7d407d, 0x337d0e7d,
|
||||
0xa8732975, 0x5d7d327d, 0x427d3e7d, 0x387d5d7d, 0x377d5b7d, 0x337d167d, 0x4a7d3a7d, 0x5b7d1a7d,
|
||||
0xb77e567d, 0x917cf5f5, 0x987ca47e, 0x747c8b7c, 0x977cba7e, 0x907ca17c, 0xba7ea17c, 0x767c7a69,
|
||||
0x667e8a7c, 0x987ca77c, 0x757ca47e, 0x337da47e, 0x7469b575, 0x487d3a7d, 0xf5f5b67e, 0x9c7e9c7e,
|
||||
0x3e7d5f7d, 0x8168be7e, 0x177d5c6d, 0x577d377d, 0x407da573, 0x0e7d1e7d, 0x61691f7d, 0x337d546e,
|
||||
0xa47e917c, 0x7f7c737c, 0xa47e747c, 0x1f7d987c, 0x167d5f7d, 0x187d567d, 0xb67e347d, 0xbdbc72f5,
|
||||
0x45cebcd0, 0xbbd86f7c, 0x0c89acb3, 0x719234f9, 0x500456ec, 0xbf9c5033, 0xc5cdeb7c, 0x57776569,
|
||||
0x15759c7e, 0xce764abc, 0xb08f0f38, 0x02fd9979, 0x01c1c1d8, 0xb3a0450c, 0x3ad2e0ad, 0xf282a28b,
|
||||
0x9d4da002, 0x45f7fdc1, 0xa6ac2c9a, 0x8daf7a97, 0xffa843df, 0x0c2a8f16, 0x271c25e9, 0x22164799,
|
||||
0xa92332a7, 0xdeef4be3, 0x28e596a8, 0xe42833b1, 0x87e9d493, 0x3727307e, 0xc4360c52, 0x141a1c55,
|
||||
0xb2eebdf8, 0x989f9528, 0x2ebfdb1c, 0x72641c8f, 0x0e362bc2, 0x4fae1791, 0xc8ab8f0e, 0x8fa115ee,
|
||||
0xada212d8, 0xdac32301, 0xec18485d, 0xbc8ce6f5, 0x79962be5, 0x69814c94, 0x96efead6, 0x69e8e3be,
|
||||
0x3a6e7485, 0xead7bf5b, 0x04ea533e, 0x887470a5, 0x552f91b3, 0x975f44cc, 0x7ad282d4, 0xf6d9b38c,
|
||||
0xe76f1cfd, 0xf5706c21, 0xefeccf0e, 0x849dd4c9, 0xade2474f, 0x1b45f369, 0x7e21976e, 0xa10c9eca,
|
||||
0x2d5d85f7, 0x6accdbd8, 0x65d2bb19, 0x8c325bbc, 0xb90ef4f4, 0xcc18b595, 0x19649633, 0x8341d8d7,
|
||||
0x2f195257, 0xa0ed9621, 0x1d7953c5, 0xf7daa4c1, 0x9bbcea5f, 0x30aed22a, 0x9c91a871, 0xb368800c,
|
||||
0x1016536e, 0x9cb72499, 0xe46d7de4, 0x977ccf49, 0xb1f2a544, 0x4c4493d8, 0x950972b2, 0x7169b541,
|
||||
0x9ceec5b7, 0xde848c5a, 0x85e34c07, 0x6f184730, 0xc8a2e2c6, 0x1c072811, 0xdee6885a, 0x1c6c7fb8,
|
||||
0x8b597fe9, 0x9412a96a, 0x0b0f42e8, 0x6557e34e, 0x861905b3, 0x4c0c2dff, 0xad4462f9, 0x8ab4d260,
|
||||
0x537b147a, 0xd35f0ac9, 0xd85f457d, 0xa62616f9, 0xfda1d245, 0xf028be7b, 0x9317fd1e, 0x242d9f12,
|
||||
0xd532263a, 0x7296f576, 0xbce041fb, 0xf354bc22, 0x7cbf3560, 0xddda6048, 0x9fbebcc0, 0x6b034357,
|
||||
0x9c5d00d3, 0xb1792e0b, 0x42f68570, 0xa9a6b353, 0x0e67dad9, 0x023c04d5, 0x8b187287, 0xf94b051e,
|
||||
0xb332cc2e, 0xfb8c65bb, 0xe40553c7, 0x36c6bf95, 0x7a74e52c, 0xe5a6497d, 0xfb5c9bff, 0xabd7abd8,
|
||||
0xcdd35cf0, 0x6b4ab439, 0x43ab6526, 0x019bc4ee, 0xf332b913, 0xa06c7649, 0x52af60ba, 0x1477e66f,
|
||||
0xbee3c1e7, 0x825fe633, 0x81f3b272, 0x8e3c104d, 0x0956e686, 0xc58c13ab, 0xae01266f, 0x87d551b9,
|
||||
0xfe2ab79f, 0x039d6ac1, 0xeaa3ddb8, 0x8ad73c9f, 0x3401d424, 0x0132d093, 0x1932ff32, 0x713585ba,
|
||||
0x0b73d762, 0x1988732a, 0x3480e775, 0x23d9e24c, 0xad41997d, 0x2f838c6c, 0x7876d7d4, 0x5a1b885e,
|
||||
0xd5c0e254, 0x9cccdb9e, 0xd42778cd, 0xafaaf2db, 0xe61008ca, 0xa566900e, 0x9e8648e4, 0x58047ac1,
|
||||
0xd0322bf3, 0x92112b4b, 0x2bd479a5, 0xf05f0c69, 0x3f22edb2, 0x665990fe, 0x98507599, 0x7e1ce769,
|
||||
0x49c33e7b, 0x6a3e565b, 0xf37bfd1c, 0x6838ba13, 0x71ac8605, 0x5f854028, 0xafb1c299, 0xf738570a,
|
||||
0xe76c4166, 0xd1d5bb14, 0xd411c2ae, 0x8120f274, 0xa4892784, 0x3d543dab, 0x6af3ab34, 0x9d2a1040,
|
||||
0x1fe14b56, 0x5e8036d6, 0xb334c47e, 0x527f288e, 0x3bc560e5, 0x1448108c, 0x3c4a1978, 0xc6810326,
|
||||
0x24c0e9dd, 0x57ac0eff, 0xaeaf2bb4, 0x21fc89e2, 0xd49383e3, 0x278f3ecf, 0xf1d7f02e, 0xf4e87a53,
|
||||
0x81659a34, 0xfc2a7769, 0x22f947db, 0x18d6f29e, 0x7bd778cc, 0x34e63b74, 0x4327837b, 0x43b23f4a,
|
||||
0x2faaf555, 0x080f21d8, 0xd883ab31, 0x28f7e548, 0x961e15de, 0x27b56217, 0xa9313edf, 0x4c75e7ba,
|
||||
0x9441cc74, 0xe617288f, 0xf2fe905a, 0xa58a2a26, 0xc770ac96, 0x057c8dee, 0x042bca16, 0x35ad73bb,
|
||||
0xbefb0221, 0x989b124b, 0x0183dcfb, 0x93a22db8, 0x7e964b97, 0xff7d84ad, 0x61468d1c, 0x41c58016,
|
||||
0xbd6022c7, 0xcfafe4e6, 0xd04c6664, 0x71c039ac, 0x08bf2e43, 0x4672f5d3, 0xcc5d8794, 0x4a1345fc,
|
||||
0xc9fd140f, 0xb8678dd4, 0x1867e8bd, 0x6c4ec398, 0x878ab83a, 0x02c2900e, 0xf97cf590, 0x6c5a671b,
|
||||
0x8681ecdc, 0x2bfd1a87, 0xbb65a1ee, 0xcbf781c2, 0xa2013ff6, 0x8c026ee2, 0x8ad5524c, 0xfa46551f,
|
||||
0xd5507bbf, 0x6a5d00ee, 0x1a60b69b, 0x4edeceda, 0x25992ecc, 0x236fc615, 0x8fcab1c1, 0x084380cf,
|
||||
0xd3723c02, 0xfa1bb4e0, 0x41703b91, 0xc884373d, 0x4db4af4c, 0x4876b7d6, 0x3e6663a5, 0xc3372d5a,
|
||||
0x8af05730, 0x43f96565, 0x280870dd, 0x258300b2, 0x0f1ff948, 0xe5addfbe, 0xd133f857, 0xf2b45133,
|
||||
0xddbfe3ab, 0xe0e3706d, 0x3235bd77, 0xe9b6effe, 0x1fe4ef36, 0x8fd89928, 0x27279626, 0xeb799df0,
|
||||
0x1e2d5bb4, 0x64415ae5, 0xefc24d6e, 0xda6fb0e3, 0x1c8a4ece, 0x8ab56b95, 0x0e91d30a, 0x02ef3eea,
|
||||
0xd9073f45, 0x113c6ab7, 0x6c77bf54, 0xa52f90bd, 0x01f280b4, 0x83c1b5f7, 0x423d4069, 0x22adcd65,
|
||||
0x58537598, 0x91930d6a, 0xdff6a6b3, 0x287243d2, 0x33e92ca2, 0xe593d4e6, 0x2636aad3, 0x64f5fe3c,
|
||||
0x4f875310, 0xceb3e06c, 0xedcdab02, 0xb872fd7a, 0xd7baa454, 0x866ba43c, 0x9e6e8bc5, 0xdf04f14b,
|
||||
0x5081a7fe, 0x1cc6eaef, 0xf657b595, 0x29012cf3, 0x4a58e4ff, 0x694dd93c, 0xb74938e8, 0xd457436a,
|
||||
0x560eafdc, 0x2ce09ec8, 0x465de8e9, 0x7ca0ec1b, 0xd93829c7, 0xbca12446, 0x6b60b1a0, 0x9f027d58,
|
||||
0x9ab391e3, 0x9853ec40, 0x527e834a, 0x198c317a, 0xf985d777, 0x988fb533, 0xefcf3410, 0x9ac81387,
|
||||
0x93f87488, 0x3b1eb146, 0x12dbb1b0, 0xab1cef83, 0x9e8c014c, 0x56eb135d, 0x35097903, 0x2aa776d0,
|
||||
0xefba659b, 0xd8576489, 0xa44e176c, 0xf5d417a8, 0x66f0a62b, 0xb7a4f687, 0x1d6f27b4, 0xd30983b9,
|
||||
0xcdc46346, 0x605567a2, 0x944f9b8e, 0xd3456f55, 0x0d542ee5, 0xa8e34d20, 0x5fdefe07, 0x2fc58135,
|
||||
0x26e09472, 0xbe691ac6, 0x5aafcbe2, 0x322d4063, 0x77148178, 0x15d30784, 0x21de79cd, 0x999c36b1,
|
||||
0xdd31ccc4, 0x5c9019a7, 0x98be930e, 0xfb604ed7, 0x0bfcef1f, 0x9544feba, 0x45a65682, 0x240e539b,
|
||||
0x13451d89, 0xcdf37d73, 0xf1548863, 0xb075b59f, 0x554038cf, 0x28372884, 0x68136660, 0xa51373f7,
|
||||
0xd87941d0, 0xc3694841, 0x2ecbff33, 0x807c415a, 0xd10347ab, 0x0ed7e4e5, 0x16363adc, 0x89d33036,
|
||||
0x6016a160, 0x19f19a5a, 0x8956c6b7, 0x1731780f, 0xb4212ec0, 0x72fa92b6, 0x33c32348, 0x56d08e8a,
|
||||
0xe4be93dd, 0x2739fe6d, 0x2541e828, 0x4daedcc3, 0x7376c3c8, 0xd9f44afe, 0x9272061d, 0x23f7aeca,
|
||||
0x429152c7, 0xc2697d28, 0x51179d67, 0x62735ef7, 0x6d37d2eb, 0xb55655c3, 0xbfb33ada, 0x02839c8f,
|
||||
0x49ea2059, 0x6be959b5, 0xda6278b4, 0x5a538796, 0x5c8497f8, 0x36499ff2, 0x85620f5e, 0xa11be0dc,
|
||||
0xb113a10d, 0x0d398359, 0x3802b809, 0x1e8b4d3a, 0xe67de6af, 0xc3235a27, 0x1bc9930d, 0xd740c0cd,
|
||||
0x5e3e6b85, 0xd2054645, 0x4d44571e, 0x4532a3e6, 0xeee9d279, 0x87fbde6b, 0x609c8075, 0x7b21adfd,
|
||||
0x320b8d52, 0xccb86869, 0xbbc67e56, 0x138cb7cd, 0x94422afb, 0xc2cdb1bf, 0x35fbeafd, 0x0f98f183,
|
||||
0xb985532f, 0xbea5b0da, 0x8d8ffe7f, 0x37d8e708, 0x6325d619, 0x510745a4, 0xa275914a, 0xaf7bd793,
|
||||
0xed263795, 0x93dfbc22, 0x7a7f9995, 0x1d1665b2, 0x90b2fde0, 0x20fe2705, 0x4e80f43e, 0x745ca349,
|
||||
0x019e0c38, 0x532456ef, 0xb876f67e, 0x9b2a66de, 0x5043034b, 0x16c5507b, 0x09d1bb96, 0x0439f550,
|
||||
0x18a1d128, 0x824a0731, 0x258fc0ce, 0x36ec993f, 0x80cf64fe, 0x356c8638, 0xa39bbbb9, 0x22ffeac0,
|
||||
0x7d39c4d0, 0x32e95341, 0x8d0187d3, 0x6c99079f, 0xec240adc, 0xa9af8c5a, 0x94b8065e, 0x28009b4a,
|
||||
0xfa5b4c58, 0x8f12a9e1, 0xa95ecd98, 0xe9603646, 0xcc12dc04, 0x50f5fd0f, 0xc334d966, 0x32d07ccd,
|
||||
0x8300fca5, 0x6001e499, 0x5b838ad5, 0xf5562cca, 0x30232d6f, 0xed01a56f, 0xd1409b8d, 0x137efc62,
|
||||
0xabc2a7c7, 0xab208ec1, 0x841ef72d, 0xd152c5ec, 0xe81bb7f3, 0x850187aa, 0x9c40f47d, 0x5ff50c62,
|
||||
0x2b724688, 0x2e8557e4, 0xb135f8ed, 0x4fa38d46, 0x0f3eb921, 0x847159f2, 0xefbeb40a, 0x4339f17f,
|
||||
0xbf8483f2, 0x6770b2d8, 0x576acb52, 0xda464833, 0x9d295648, 0x86ba73f3, 0xbe44d7c4, 0x868c2115,
|
||||
0x9aecc2ea, 0x3fce381f, 0x5d4bdac2, 0x7863bbf7, 0x6395a2e2, 0x209c7342, 0x7d9718fb, 0x7f2f4b02,
|
||||
0x6edc122d, 0x7a39b294, 0xd0a34d11, 0x6d4d9472, 0xb1775b56, 0x66099ca5, 0xc898dba5, 0xff094e89,
|
||||
0x49eee138, 0xc74554d4, 0xbebb78bd, 0x68069f7f, 0xd143e934, 0x16ea614a, 0x5b03b028, 0x7433b06e,
|
||||
0x112ac5c4, 0x93c63bb1, 0xddb35880, 0x45398ff9, 0x8a14734a, 0x09e8208e, 0x18109716, 0xf73db871,
|
||||
0xad841334, 0xb77606af, 0x539aaa53, 0x5b3f9aa2, 0x81b7cd23, 0x4795a0b6, 0xe534763a, 0x1d76556b,
|
||||
0x7c5c9a58, 0xb7003bec, 0xfd4c55d8, 0x7d9bac3c, 0xb11ef2f5, 0xd17229b8, 0x4e20b59f, 0x274aa421,
|
||||
0x5cfd682d, 0x13794dee, 0xaa0feb1e, 0xab4e6384, 0x67ef1f62, 0x25686df1, 0x4c0222aa, 0x744c2e19,
|
||||
0x561f35e9, 0xf8e22c4c, 0x4f863ce0, 0x4f15b253, 0x2bf4b937, 0xf09e873e, 0x96627d1a, 0x5b51e77e,
|
||||
0x10e61481, 0xfd28b58a, 0xe34fc314, 0x12160d1b, 0xddf8d02f, 0xc56b1376, 0xce64ae6c, 0x4295c0ed,
|
||||
0x58b1c5c7, 0xf7f5adc3, 0x03c5a5a0, 0x8769e34d, 0x4e01b5b0, 0x793a96dd, 0x4169c9db, 0xadc496aa,
|
||||
0x7d5dc5e4, 0x286d5a0f, 0x6c307a00, 0x9e8a7f57, 0x8880e20b, 0x4938b163, 0x3acea0cb, 0x36f331ba,
|
||||
0xf66f3c41, 0xfa626b07, 0x0541bb30, 0xb0b72590, 0x83542c3f, 0xd00c7261, 0x2d9b31dc, 0xb8a6d50b,
|
||||
0x2a1e7c82, 0x8752abdc, 0x3498e8a6, 0xd7da1c7e, 0x5f451585, 0x13896231, 0x7e8623ec, 0x47c934a6,
|
||||
0x38c898f7, 0xd265d1a8, 0x563fe6c7, 0x94f4fe90, 0xbf8bdb54, 0xd62f47a5, 0xfaeedc35, 0xb6076992,
|
||||
0xfe7acb2b, 0x1c7012c9, 0xc82c8820, 0x18c81963, 0x6ac638cc, 0xc728e32e, 0x1931ef4b, 0x7287bf52,
|
||||
0xc569fde8, 0x12f65cc0, 0x44c44e2e, 0x8d907180, 0xca04d47e, 0x404d63d6, 0x5499167d, 0x039a27d4,
|
||||
0xb1cb5251, 0x0b231cd2, 0x5b536196, 0x4c350a6a, 0xee0eef22, 0x966f1225, 0x4b474c5b, 0x7fbfd5b3,
|
||||
0xd3101a66, 0x0dcfa92b, 0x6de5ab3b, 0x974c54a3, 0x69ac86de, 0x1d1f241f, 0x8c5f359c, 0xf9a024f5,
|
||||
0x784302e2, 0x86d17895, 0x17820cbd, 0x6e955717, 0xc27ea685, 0xd4084ab2, 0xe13c54e7, 0x9c131d1d,
|
||||
0x284be1be, 0xa4bae6d4, 0x515ad718, 0x3cfc0b5e, 0x049005d4, 0xd580a4c9, 0x00a7540a, 0x431bb5a8,
|
||||
0x5b8ccb1e, 0x0086d12b, 0xfecef3a1, 0x9899627d, 0xde70b335, 0xe41b39cf, 0xfc562045, 0xc2354b34,
|
||||
};
|
||||
}
|
||||
|
||||
internal class ComyuCrypt : CxEncryption
|
||||
{
|
||||
public ComyuCrypt () : base (0x1a3, 0xb6)
|
||||
{
|
||||
OddBranchOrder = new byte[] { 4, 3, 2, 1, 5, 0 };
|
||||
EvenBranchOrder = new byte[] { 0, 7, 5, 6, 3, 1, 4, 2 };
|
||||
}
|
||||
|
||||
protected override uint[] ControlBlock { get { return ComyuControlBlock; } }
|
||||
|
||||
static readonly uint[] ComyuControlBlock = new uint[] {
|
||||
0x9c91badf, 0x8b8f868d, 0xdf919096, 0x8b91909c, 0xdf93908d, 0x9c90939d, 0xd2d2df94, 0x9e8bacdf,
|
||||
0x9e9c968b, 0xdf869393, 0x9bdf8d90, 0x929e9186, 0x939e9c96, 0xdfd38693, 0x9a8d969b, 0x86938b9c,
|
||||
0xdf8d90df, 0x969b9196, 0x8b9c9a8d, 0xdfd38693, 0x91968c8a, 0x978bdf98, 0x8fdf8c96, 0x8d98908d,
|
||||
0x9edf929e, 0x90d09b91, 0x939ddf8d, 0xdf949c90, 0x92908d99, 0x978b90df, 0x8fdf8d9a, 0x8d98908d,
|
||||
0xdf8c929e, 0x93939688, 0xdf9a9ddf, 0x9a939396, 0xdf939e98, 0x8bdf869d, 0x93df9a97, 0x919a9c96,
|
||||
0x9edf9a8c, 0x9a9a8d98, 0x8b919a92, 0x4e7ddfd1, 0x897c337d, 0xb07c727c, 0x7f7c767c, 0x8a7c1d7d,
|
||||
0x9d7c727c, 0x0f7db17c, 0x3c6fbe7e, 0x3a7db66c, 0x157d5f7d, 0xb66c516c, 0x5f7d3a7d, 0xbe7e157d,
|
||||
0x256f436d, 0x3a7db66c, 0x157d5f7d, 0x256f2b75, 0x3a7db66c, 0x157d5f7d, 0x436ebe7e, 0x897c337d,
|
||||
0xb07c727c, 0x7f7c767c, 0x187d567d, 0x5d7d8f68, 0x4e7d167d, 0x327d397d, 0xbc7c767c, 0x6c7ca57c,
|
||||
0x367da77c, 0x177d197d, 0x497d2974, 0x157d187d, 0x5d7d3b7d, 0x487d237d, 0xbcf5bd7e, 0x8d868f90,
|
||||
0x8b979896, 0xdfd6bcd7, 0xc6cfcfcd, 0xa83a74df, 0xacb4adb0, 0x93bedfd1, 0x968ddf93, 0x8c8b9798,
|
||||
0x8c9a8ddf, 0x9a898d9a, 0xf5f5d19b, 0x4b768a7e, 0x407d427d, 0x9f7c327d, 0x7f7ca47e, 0xbd7e417d,
|
||||
0x7dbf7ef5, 0x7d397d42, 0x73576959, 0x7d367d71, 0x7d326c32, 0x7d377d56, 0x6a2b755d, 0x7d3a7d40,
|
||||
0xf5bd7e1f, 0x6768bf7e, 0x337dae75, 0x896d1577, 0x74733a7d, 0x3d7d2e7d, 0xbd7e527d, 0x76bf7ef5,
|
||||
0x744269a1, 0x6e506c5b, 0x7d377d33, 0x6f357d18, 0x74496e49, 0x6e506c5b, 0x7ea37e33, 0x7ea37ea3,
|
||||
0x72f5f589, 0x718e6e7d, 0x6ca96f8c, 0x7eac6f8c, 0x6973f5bd, 0x397d646e, 0xb67c937c, 0x337d6c7c,
|
||||
0x3b655165, 0x5f7d3a7d, 0x1669167d, 0xa775337d, 0xbe7e367d, 0x3d7d1577, 0x9f6c337d, 0x557d1f6f,
|
||||
0x3e7d5f7d, 0xbd7e427d, 0x447df5f5, 0x327d157d, 0x1669be7e, 0x397d4d7d, 0x5b7d3376, 0x337d4973,
|
||||
0xaf6a3376, 0x5270987e, 0x7ebe6870, 0x6c337d97, 0x6c8c718c, 0x7e1f6f9f, 0x7df5f5bd, 0x76337d44,
|
||||
0x7d4269a1, 0x7e166933, 0xf5a37ea3, 0x7d4a6cf5, 0x7d796d33, 0x7d447336, 0x7e167d15, 0x70527098,
|
||||
0x977ebe68, 0x4e6c367d, 0x157d567d, 0x6ff5be7e, 0x714e6e25, 0x7d397d2d, 0x753b7d4a, 0x7d3e6f90,
|
||||
0x6f427d4a, 0xdf9e676f, 0x936f3a74, 0xbe7e327d, 0x658f6bf5, 0x6d337d2f, 0x733a7d47, 0x7d926d56,
|
||||
0x7e357d18, 0x69506c98, 0x7d977eba, 0x7d407d42, 0x76907039, 0x7e5b7d10, 0xf5f5f5bd, 0x786d8a7e,
|
||||
0x497d2b75, 0x377d1e7d, 0x337d5d7d, 0x897eb77e, 0x836dbf7e, 0x72df3276, 0x7e707098, 0x6f987ea1,
|
||||
0x7d9f744c, 0x6a5e6933, 0xf5977e04, 0x6c8a7ef5, 0x74547d99, 0x7d557dbc, 0x7d167d48, 0x6f387d26,
|
||||
0x708b703d, 0x7e5d7db3, 0x68bf7e89, 0xdf2b76b2, 0x1e6fa16f, 0x987ea17e, 0x447d5b7d, 0x547d3d7d,
|
||||
0xf5f5977e, 0x7e6e8a7e, 0xbe74527d, 0x427d177d, 0x197d5d7d, 0x597d347d, 0xbf7e897e, 0x056c8b70,
|
||||
0x70df6b6a, 0x7ea17e8b, 0x7caa7498, 0x7cbc7c7e, 0xf5977e97, 0x7c8a7ef5, 0x6ca87c97, 0x7d227d5a,
|
||||
0x7d557d1d, 0x7d427d3e, 0x7dba7118, 0x7e437d48, 0x77bf7e89, 0xdf0d6e36, 0xa17e746b, 0x9f7c987e,
|
||||
0x8c7c6c7c, 0x977e767c, 0x70f5f5f5, 0x7d207d76, 0x7690703b, 0x7d3e7d10, 0x936fca42, 0x2b75337d,
|
||||
0x327d367d, 0xb968be7e, 0x1f7d1170, 0xb26fbe7e, 0x1f7d7568, 0x4276be7e, 0x377d1f7d, 0xbd7e5d7d,
|
||||
0x417df5f5, 0xbd7e557d, 0x6fcaf5f5, 0x6f337d93, 0x714e6e25, 0x7d567d2d, 0x7d377d18, 0x70987e16,
|
||||
0x7e9c6da8, 0x7cad7c8c, 0x7e7a7c81, 0x7d977e8b, 0xf5be7e32, 0x0f7d3268, 0x127d7872, 0x167d467d,
|
||||
0x397d4e7d, 0xbe7e3a7d, 0x1a6e6f74, 0x987e377d, 0x337d8372, 0x576a0976, 0xbe7c8c7e, 0xa17c907c,
|
||||
0x8b7ea47e, 0x0f7d977e, 0x337d2c77, 0x237d237d, 0x7f6e367d, 0x4e7d167d, 0x557d397d, 0xa36b3d76,
|
||||
0x377d367d, 0xbd7e167d, 0x4271f5f5, 0x337d6a72, 0x907cbe7c, 0xa47ea17c, 0x907c987e, 0x727c8d7c,
|
||||
0x977e6c7c, 0x256f397d, 0x4c7d4e6e, 0xbe7e157d, 0x1a6e5274, 0x4c68377d, 0x3268337d, 0x17710f7d,
|
||||
0x4a7d367d, 0x447d427d, 0x056c337d, 0x187d567d, 0x74f5be7e, 0x7d936f3a, 0x7d407d42, 0x7db06e33,
|
||||
0x7db46936, 0x7e167d15, 0x7e8d72be, 0x7d4a7da7, 0x6c0e6b54, 0x7e127005, 0xf5f5f5bd, 0x0f7d4c68,
|
||||
0x5b7da06e, 0x576a0976, 0x407d427d, 0x466fbe7e, 0x9271ad74, 0x7768337d, 0xbe7eb469, 0x4a7d447d,
|
||||
0x9a6b3b7d, 0x337d5b76, 0x576fad73, 0xa37ea37e, 0x7df5f5f5, 0x7d157d44, 0x936fca32, 0xbe7e0f7d,
|
||||
0x926d936f, 0x357d157d, 0xad7c987e, 0x7a7c817c, 0x5d6f337d, 0x8c7eba75, 0x817cad7c, 0x937c7a7c,
|
||||
0x987c9d7c, 0x977e8b7e, 0x397d297d, 0x3e7daa68, 0xbd7e427d, 0x447df5f5, 0x3b7d4a7d, 0x936f3a74,
|
||||
0x926d327d, 0xbd7e167d, 0x7d3268f5, 0x6e327d36, 0x7d61701c, 0x68b46a55, 0x7d417d89, 0x7e427d3e,
|
||||
0x7cf5f5bd, 0x7c907cbe, 0x7da47ea1, 0x7d3a6955, 0x7d397d2b, 0xf5be7e54, 0x4e6e256f, 0x157d4c7d,
|
||||
0x987e427d, 0x9c6da870, 0xad7c8c7e, 0x7a7c817c, 0x977e8b7e, 0x237d1f7d, 0xbe7e427d, 0x2b7d3a69,
|
||||
0xf5f5bd7e, 0x7d447df5, 0x69a17633, 0x69337d42, 0x7ea37e16, 0xf5f5f5a3, 0x0f708c6a, 0x367d6268,
|
||||
0x557d8e73, 0x427d157d, 0x936f3a74, 0xbe7e327d, 0x72987ef5, 0x69337d6a, 0x7e68707d, 0x6c1b6b97,
|
||||
0xdfbb6f21, 0xac7cb57c, 0x337d7e7c, 0x0f7d3268, 0x177d2771, 0xbe7e3b7d, 0x7d237df5, 0x7d567341,
|
||||
0x755d6f35, 0x68367dba, 0x73407d58, 0x7d567d03, 0xf5bd7e5b, 0x8a7ef5f5, 0x157d447d, 0x1f7d3a7d,
|
||||
0x427d4b76, 0x327d407d, 0xa47e9f7c, 0x417d7f7c, 0x7ef5bd7e, 0x7d427dbf, 0x76597d39, 0x7d427d4b,
|
||||
0x730f7d40, 0x7d517d8e, 0x7e557d33, 0x7d4e7dbe, 0x7d837233, 0x7d447633, 0x7d576a50, 0x7d507d41,
|
||||
0x7d397d41, 0x7d3b7d4a, 0xf5897e1f, 0x466cf5f5, 0x397d4476, 0x68707d69, 0x6fcb397d, 0x6d337d93,
|
||||
0x7e2b7578, 0x7cad7c8c, 0x7e7a7c81, 0x7e337d8b, 0x7d486dbe, 0x7d48685d, 0x7d917155, 0x7e167d23,
|
||||
0xf5f5f5bd, 0x7ea37ef5, 0x7d4c7da3, 0x72be7e5f, 0x7d16695e, 0x7d577d33, 0x67537d39, 0x7d0f7d9d,
|
||||
0x7d497d32, 0x7d197d20, 0x22c3f55b, 0x1fe1bca5, 0x296d327f, 0xbf4655bb, 0x271bfd84, 0x9dc9f775,
|
||||
0x6a396019, 0xbb316b08, 0x7d4ccbf5, 0xef612dc2, 0x4e7cb1a1, 0xefc091a2, 0x0c4095b7, 0x4dcd0f8f,
|
||||
0x09fe386e, 0x8f83fce6, 0xaf8b737b, 0x4db8803a, 0xc7d3e004, 0xedd446ee, 0xe18f337f, 0xb467401c,
|
||||
0x11c025fa, 0x0ed6322f, 0x7f493793, 0xa2b52008, 0x35a038c4, 0x4a640e05, 0xe9b611d3, 0x26fa62ce,
|
||||
0xcef2d932, 0xa2f2ba50, 0x2fcac91c, 0xbcd22555, 0xa02a089a, 0xacbc800e, 0x550f8e29, 0x62c73a93,
|
||||
0x897f08c6, 0xf3799463, 0x6fd0cc73, 0xed4411f4, 0x7e2321fb, 0xaad6aec5, 0x036078b2, 0x25494cd5,
|
||||
0xc2d3bfd1, 0xd5ea81fc, 0x0886894d, 0x6cff2667, 0x41fccddb, 0xd396d716, 0x2a9d5a09, 0xe638827b,
|
||||
0xadf4635c, 0xc6003fef, 0x31454acc, 0xe1500dda, 0x46cf53d5, 0x750cd529, 0xfda3aa39, 0x4b7877a7,
|
||||
0x53d05d5a, 0x01332627, 0x1dd10160, 0x9e609da4, 0xd6f5a7b6, 0x8b382dc0, 0x004d88b4, 0x545a4018,
|
||||
0xba980aaa, 0xeea43a3d, 0xb91b3fe4, 0xa0965c99, 0x3731d8f0, 0xe8c0644a, 0x9e72955e, 0xab59a0e7,
|
||||
0x6b23cb98, 0x1fe4fad6, 0xa37f3f8e, 0x2214b7cb, 0x9c621ea9, 0x8d89f543, 0xe0d49701, 0xb9ac412a,
|
||||
0x403925dd, 0xe42d1546, 0xcf873ac1, 0x0aa7dae5, 0x21e332aa, 0x39378fd4, 0xbae1f8d7, 0xe2498f35,
|
||||
0x16c9c11c, 0xb8a652f7, 0x2fa5130b, 0x1a0a5cbf, 0x608d77c0, 0xd313f4bd, 0x9df44553, 0xf8005ec4,
|
||||
0xc8816b32, 0x41a1f393, 0xb44a9a77, 0x402201bd, 0xe0a33bf0, 0xf05a98fe, 0xe59490e9, 0x34fc3083,
|
||||
0x057cf4ff, 0x63afcc41, 0xa6e5db4c, 0xa6c33972, 0x109409ab, 0x63ed6914, 0x5b339232, 0xd0a43407,
|
||||
0x306e5208, 0xae194901, 0xcdcb1d3d, 0xf1695d07, 0x5f3b59d0, 0xa921d2a4, 0xc43e6ffa, 0xf09d7f22,
|
||||
0xe2086b83, 0x0c887070, 0xed0395e8, 0x854d8765, 0xa770cc28, 0x686f3803, 0xd12289b4, 0x55376b55,
|
||||
0x347ae04d, 0x13cd8867, 0x21fcd359, 0x6f6838a2, 0x5d878268, 0x081230b0, 0x4e650001, 0x27feb637,
|
||||
0x2a5a0d75, 0x98b98e8a, 0x37a3d205, 0x9bd9a16b, 0x626f4633, 0x1aff66d5, 0x73775d2d, 0x943acf9f,
|
||||
0x63bfbdae, 0x690441be, 0xb461c91f, 0x1c31ec2f, 0x15b44e96, 0x5a88b44a, 0xf50a5482, 0x2b90d060,
|
||||
0x6aed13b0, 0xc367c97e, 0x9aba2ed8, 0xc628c155, 0x0e5cbe5a, 0x41277292, 0x43f59984, 0x3f7e3bf8,
|
||||
0x487e1fe9, 0xfb462b23, 0xda4f6038, 0x9764f5f1, 0x15ec6247, 0x7659232c, 0xcdd0bb54, 0x5bc0d691,
|
||||
0xefcc30e6, 0xa35e5432, 0x7dbb9ab6, 0x3937f5c4, 0x49d309fd, 0x477e3255, 0x69a0206f, 0x2850cb81,
|
||||
0x406ecd8c, 0x8e2af5ac, 0xf8175347, 0x91615d3a, 0xc9ac2788, 0xf57b4d62, 0x0e7f004d, 0xb9d0f4cb,
|
||||
0x15a46dc1, 0x24e323d0, 0x40690307, 0x0218c53a, 0xae7f20f6, 0x25dc07d6, 0x1a8a4d22, 0x9ed1266b,
|
||||
0xb8cd5f73, 0x0c69a346, 0x34e036c3, 0x5c95bf6b, 0xee4f4379, 0x7f092573, 0x6a57d5e0, 0xd50f659f,
|
||||
0xd931e110, 0xab0e36a4, 0x1c1878ef, 0x852a0c8b, 0x7a1c0945, 0x932795e1, 0x9769d174, 0x74811abb,
|
||||
0xab256a5e, 0xffcb49e9, 0x40aa9400, 0x57938786, 0x41d1eb77, 0xde98b089, 0xe8ee38a6, 0x505c73c0,
|
||||
0x49ed3142, 0xf4083254, 0xa22c2a55, 0xa14c3606, 0x8b060b88, 0x89688eff, 0xf9006b5c, 0x4830826f,
|
||||
0xb9e5258a, 0x6f57089e, 0xf3cdcc27, 0x737a1d1d, 0x4e3ef76e, 0xea922ff0, 0x6a6776b4, 0xea6989ef,
|
||||
0xff16a4c3, 0x1587c95e, 0x3b28c5ad, 0x07fe3b4d, 0x3c297bdc, 0x11b84448, 0x5353674d, 0x9dad7729,
|
||||
0x0cc568f5, 0x352323c2, 0xb29acf5b, 0x73f73e82, 0x82624fee, 0xbcedf56f, 0x27a5f16e, 0xf5e3a22f,
|
||||
0xebf59351, 0x48e36eb9, 0x48a2ca0e, 0xf8613963, 0xbbb1532f, 0xd36d1b78, 0x8975b60f, 0xc39823ad,
|
||||
0x1304073b, 0x396aeeac, 0xefb59893, 0x958f8346, 0x9bc8e713, 0x7ce3f522, 0x549c45cc, 0x829a7a8f,
|
||||
0x78f8933c, 0x0806232f, 0x80ecc61e, 0xc313d91a, 0xc4d8177e, 0x086f84d8, 0x604bd645, 0x0b70533b,
|
||||
0x482a2cdb, 0xf472fa55, 0xc2a2c923, 0x3a3d288b, 0xd48cd88c, 0xf4b831b2, 0xf460a283, 0xe1800a44,
|
||||
0x316acade, 0x49950c6a, 0x769ad791, 0xdb0587c2, 0xa4fb0fd8, 0x79f84441, 0xef0687e9, 0x140761e6,
|
||||
0xcaa68da5, 0xffc4ebd9, 0x4e049033, 0x6522f813, 0x3beac8d7, 0xfc576d57, 0x1d16d6d8, 0x72035c0e,
|
||||
0x476701e9, 0x687a5a66, 0x92cf6fbf, 0x40b7bc7e, 0x488791ea, 0x3f3c9d5f, 0x473e966e, 0xe12be8d0,
|
||||
0xc5b220e3, 0x83f5b5d1, 0xf8425ce8, 0x147ffdfe, 0x3c2e9f70, 0xae377b6d, 0xf2ef4032, 0x37e31d6f,
|
||||
0xe38a8d07, 0x0bab8299, 0x35d0fa8c, 0xb3b7134f, 0x2d261472, 0x729470d9, 0x1f532499, 0xc17c11d9,
|
||||
0xa75bebb5, 0xe93f4826, 0x66bbaab8, 0x1a1283c2, 0x63630227, 0x30decdde, 0x3a408005, 0x40708778,
|
||||
0x03c00538, 0x2d4005cf, 0x1540871f, 0x8336b988, 0x0f13206e, 0x4a7a432a, 0xccab4d42, 0x88f8a974,
|
||||
0xea3c1597, 0x286a36d3, 0x4a379af7, 0x56ed62cc, 0x00a527a7, 0xcdf6e8d2, 0x496e4258, 0xad0963dc,
|
||||
0x35849058, 0xd5318630, 0x471347de, 0xd5f41679, 0x6c5dfa1c, 0xa2e3962b, 0xa2a9d0cd, 0x51f389b2,
|
||||
0x2c32d7d9, 0x0bcbb660, 0xfcc65c4d, 0xebae9861, 0xdb306771, 0xddb68d04, 0x349dd702, 0x41601e5c,
|
||||
0x45e0a6e6, 0x4d47b8b9, 0xb13de5bd, 0x9470a646, 0x4f8d79c8, 0x5198bd57, 0x464f0f41, 0xa3b94eb5,
|
||||
0x9ba67548, 0xda8ef82a, 0x5e4f5ddf, 0x87362e51, 0xa54fa800, 0x7a170efd, 0x9eaf1ed6, 0xcba3327b,
|
||||
0x0eb40a70, 0x6c485e61, 0xb5816353, 0x153a356e, 0xe6ce9561, 0x00401a68, 0xed446533, 0x4aeca02f,
|
||||
0x23a60800, 0x7cd87f07, 0x66449ba2, 0xfd73ef7f, 0x585f6023, 0xca4e9196, 0x7f9703fb, 0x5ca05a49,
|
||||
0x8fd8e743, 0x2ccc8bf2, 0x0a344fc5, 0xa8820b45, 0x6def5335, 0x6955a016, 0x0caa83f9, 0xe989cb22,
|
||||
0x404d2481, 0xfca15ea3, 0xa85a37ec, 0xac76359c, 0x418b2607, 0x1825b50c, 0x49eb49f6, 0x474b902a,
|
||||
0xd449e36e, 0x96fc5196, 0x7539f749, 0xdd08949c, 0xb1bafce2, 0x83cc94fc, 0xa6f5a778, 0xb164ab0f,
|
||||
0x40f8b398, 0xe241b707, 0xca525e65, 0x06dffc5a, 0xbf7f22ab, 0x3c02be16, 0x904e2b6e, 0x6890df7d,
|
||||
0xf923628c, 0x730e1349, 0x4813ba35, 0xe4cb5c64, 0x1fcae404, 0x58ee3503, 0x61771f68, 0x1248d918,
|
||||
0xef90f892, 0x87e0cedc, 0xb19301af, 0x4c0dcf89, 0xed85398c, 0xd05f11ad, 0x8df2b9ca, 0x4430f3c4,
|
||||
0x3b826d5e, 0x9a8c1301, 0x7a57976f, 0x4e8cecb0, 0xb49a840b, 0x90619865, 0x72d85bcb, 0x8d5800ff,
|
||||
0x3923dd0e, 0x5325f55d, 0x818f9c43, 0x3defc69e, 0xf80c6347, 0x7bc18ded, 0x702d62ec, 0xeafc05a3,
|
||||
0x99d0e9af, 0x054be68a, 0x10581c9d, 0x7f191f91, 0xac7a6274, 0x64212eed, 0xcf38d90a, 0xc213eb86,
|
||||
0x2ccd58b9, 0xbf09bf04, 0x6e7b4f74, 0x6b97d008, 0x2c7ee79c, 0xb782e7ce, 0x4114e61d, 0xfbd160bb,
|
||||
0x8c0c905e, 0xbd041c0c, 0xcdab6825, 0x5363e19a, 0xd331c54b, 0x9ca28ca4, 0xf98cd90a, 0xe34976be,
|
||||
0xd4e91fd1, 0xe4e2808b, 0x4d98c9ea, 0xc623d50a, 0x67160a46, 0x4af9b11c, 0x133681f1, 0x37e36ffc,
|
||||
0x753e969b, 0xd9f11a04, 0x07713bfa, 0x7eb82b2a, 0xc9de023f, 0x222c5422, 0x98a7a7f0, 0x60483a49,
|
||||
0x8ee12ab3, 0xeb5a1739, 0x834d7849, 0x60c2def7, 0x46a2b355, 0x61ced01e, 0x0b8c93ce, 0x70deadb9,
|
||||
0xfcc5828f, 0xc5052168, 0x33f1e2b5, 0x40bb1886, 0x282b920f, 0x6f99e8a2, 0x5fae6602, 0xb932618a,
|
||||
0x17437ece, 0x3d170b7a, 0x858cdb89, 0xd9779b2d, 0xf42c6ce5, 0x7287a3ef, 0xefd61b2b, 0xb7915615,
|
||||
0xa1fabb8b, 0x67dc4585, 0xd54b6efa, 0xe809553d, 0xacd3fb38, 0x3b4eec6f, 0x13453165, 0x9085b8f1,
|
||||
0x7cabc3cf, 0xd1913b48, 0xe8d8927c, 0x12bf3231, 0xbf4f37d6, 0x774e5f3a, 0x1229983c, 0x2bf06330,
|
||||
0xf1daf9fc, 0xf99c1801, 0x33f8ac7f, 0xe9934bb2, 0xb534d378, 0xff559112, 0xcbdec792, 0x96121910,
|
||||
0xc974af73, 0xf3205eac, 0xd0084acd, 0xaceb2095, 0x83c8ee13, 0x685a9636, 0x8aa9d8c8, 0x3f675f7c,
|
||||
0xb781f150, 0x12fccd5b, 0x1f677a9a, 0xc3d87358, 0x9c39831b, 0xc2442b23, 0x99cd89fb, 0xbb291f8a,
|
||||
0xdb08099a, 0xe93ba3cf, 0x23ed731d, 0x56a9efa9, 0x5e64f72b, 0x5c232c3f, 0xfb89bbb4, 0xe1b8f5fb,
|
||||
0xd08bab44, 0x9e55b788, 0x105ed931, 0x37e86bdf, 0x110eef10, 0xaf751d5e, 0x6338d467, 0x80e8740e,
|
||||
};
|
||||
}
|
||||
|
||||
internal class HaruiroCrypt : CxEncryption
|
||||
{
|
||||
public HaruiroCrypt () : base (0x101, 0x31D)
|
||||
{
|
||||
PrologOrder = new byte[] { 0, 2, 1 };
|
||||
OddBranchOrder = new byte[] { 5, 2, 3, 0, 1, 4 };
|
||||
EvenBranchOrder = new byte[] { 5, 0, 2, 1, 7, 3, 6, 4 };
|
||||
}
|
||||
|
||||
protected override uint[] ControlBlock { get { return s_ControlBlock; } }
|
||||
|
||||
static readonly uint[] s_ControlBlock = {
|
||||
0x9C91BADF, 0x8B8F868D, 0xDF919096, 0x8B91909C, 0xDF93908D, 0x9C90939D, 0xD2D2DF94, 0x9E8BACDF,
|
||||
0x9E9C968B, 0xDF869393, 0x9BDF8D90, 0x929E9186, 0x939E9C96, 0xDFD38693, 0x9A8D969B, 0x86938B9C,
|
||||
0xDF8D90DF, 0x969B9196, 0x8B9C9A8D, 0xDFD38693, 0x91968C8A, 0x978BDF98, 0x8FDF8C96, 0x8D98908D,
|
||||
0x9EDF929E, 0x90D09B91, 0x939DDF8D, 0xDF949C90, 0x92908D99, 0x978B90DF, 0x8FDF8D9A, 0x8D98908D,
|
||||
0xDF8C929E, 0x93939688, 0xDF9A9DDF, 0x9A939396, 0xDF939E98, 0x8BDF869D, 0x93DF9A97, 0x919A9C96,
|
||||
0x9EDF9A8C, 0x9A9A8D98, 0x8B919A92, 0x4E7DDFD1, 0x897C337D, 0xB07C727C, 0x7F7C767C, 0x8A7C1D7D,
|
||||
0x9D7C727C, 0x0F7DB17C, 0x3C6FBE7E, 0x3A7DB66C, 0x157D5F7D, 0xB66C516C, 0x5F7D3A7D, 0xBE7E157D,
|
||||
0x256F436D, 0x3A7DB66C, 0x157D5F7D, 0x256F2B75, 0x3A7DB66C, 0x157D5F7D, 0x436EBE7E, 0x897C337D,
|
||||
0xB07C727C, 0x7F7C767C, 0x187D567D, 0x5D7D8F68, 0x4E7D167D, 0x327D397D, 0xBC7C767C, 0x6C7CA57C,
|
||||
0x367DA77C, 0x177D197D, 0x497D2974, 0x157D187D, 0x5D7D3B7D, 0x487D237D, 0x7EF5BD7E, 0x6D9473BF,
|
||||
0x7D7776B5, 0x72337D5D, 0x705D7D28, 0x7D9E7353, 0x7DB76D0F, 0x7D7B7116, 0x7D956933, 0x70BE7E0F,
|
||||
0x7D187DA0, 0x69377D56, 0x7D8B70B9, 0x7D686A33, 0x7D706A55, 0x7D3B7D3A, 0x7E527D5D, 0x0872F5BD,
|
||||
0x6E6A337D, 0xAA715D7D, 0x447D167D, 0x6376337D, 0xBE7E367D, 0x3E7D2F7D, 0x177D447D, 0x3767397D,
|
||||
0x5B7D237D, 0x4C7D4C7D, 0x567D1D7D, 0x4876377D, 0x97700D6F, 0x447DBD7E, 0x367D4E7D, 0x9C7E9C7E,
|
||||
0x557D216B, 0x167D7074, 0xF5F5B67E, 0x7B71BF7E, 0x7173BE7E, 0x8B70786C, 0xBD7E7E72, 0x711C77F5,
|
||||
0x690F7D8B, 0x7D887125, 0x6C3B7D4A, 0x7D10768C, 0x72887533, 0x693A7DA5, 0x74286A2D, 0x7E796D52,
|
||||
0x9A67F5BD, 0x1F7D2569, 0x187D2C7D, 0x9C7E477D, 0x397D9C7E, 0x5D7D4173, 0x5D7D427D, 0xAD7C987C,
|
||||
0x0E7D377D, 0x507D417D, 0xBE7E387D, 0x3E7D1D7D, 0x177D307D, 0x417D7B71, 0x3B7D3E7D, 0x5F72B16B,
|
||||
0x6870337D, 0x8E71337D, 0xBC74BE7E, 0x377D367D, 0x956D167D, 0x8E71337D, 0x2F7D337D, 0x177D397D,
|
||||
0x187D527D, 0x327D5D7D, 0x167D5D7D, 0xBD7E127D, 0x7D3A7DF5, 0x7D447D1F, 0x7D3D7D5D, 0x7D427D3E,
|
||||
0x7D1F7D18, 0x7242765B, 0x7D597D93, 0x7D167D3B, 0x7D567D33, 0x7D567D12, 0x7D377D0E, 0x7EB67E5D,
|
||||
0x7D5F7DBF, 0x7D377D0E, 0x70557D33, 0x71337D68, 0x6F367D8E, 0x7DBC7493, 0x7D167D5F, 0x7D0E7D37,
|
||||
0x7E347D3B, 0xB17CF5BD, 0x747CA47E, 0xBF7EB77E, 0x367D7B71, 0x127D4173, 0x177D467D, 0x4C691E7D,
|
||||
0x7A6D256C, 0x417D377D, 0x197D507D, 0x5F7DBD7E, 0x3D7D5D7D, 0x827C337D, 0x867CBC7C, 0xA77CA47E,
|
||||
0x47733E76, 0x327D367D, 0x367D556C, 0x407D7768, 0x5B7D1E7D, 0xF5F5BD7E, 0x447DBF7E, 0x377D0E7D,
|
||||
0x557D216B, 0x3976BE7E, 0x8C6C337D, 0x3A7D7872, 0xA5728875, 0x71740F7D, 0x4E7D167D, 0x367D397D,
|
||||
0x3E7D377D, 0xBD7E427D, 0x7D397DF5, 0x7D5F7D17, 0x6F477D59, 0x7D356F9A, 0x7D567D41, 0x7D0E7D37,
|
||||
0x7D567D41, 0x7D1D7D55, 0x7D3B7D3E, 0x719C6C16, 0x68337D36, 0x7D267548, 0x7D986F36, 0x7D0E750F,
|
||||
0x7D167D46, 0x7D4A7D18, 0xF5BD7E5D, 0x367D216B, 0x177DAA6F, 0x4C7D0E76, 0x167D157D, 0xA77E056C,
|
||||
0x346C327D, 0xB670AD6E, 0x177D127D, 0x6F720F7D, 0x427D4F7D, 0x7B71BD7E, 0x2F7D327D, 0x527D387D,
|
||||
0x9768516C, 0x3B7D4A7D, 0x9C7E9C7E, 0x387D2F7D, 0x41735D7D, 0x3A7D8B68, 0x5D7D5F7D, 0x397D3D7D,
|
||||
0x157D356A, 0x4A7D3B7D, 0x3E7D237D, 0xBD7E427D, 0x7D7B71F5, 0x7D216B55, 0x7D417336, 0x7D427D5D,
|
||||
0x7D3E7D56, 0x7D337D42, 0x7D447D32, 0x73377D0E, 0x7D8B6841, 0x7D1E7D49, 0x7D567D37, 0x7D427D3E,
|
||||
0x7E367D33, 0x7E9C7E9C, 0x7EF5F5BD, 0x7D447DBF, 0x703B7D4A, 0x7D87748B, 0x71BE7E22, 0x77327D7B,
|
||||
0x730F7D2C, 0x7D4A7D77, 0x6848683B, 0x7D3E7D58, 0xF5BD7E42, 0x557D216B, 0x187D166A, 0xAD71487D,
|
||||
0x337D2B75, 0x0D6F4876, 0x297D9770, 0xF5F5BD7E, 0x5D7D5F7D, 0x397D3D7D, 0x5B7D1F7D, 0x876C1577,
|
||||
0x8B684173, 0x0F730F7D, 0x487D127D, 0x207D427D, 0xBD7E367D, 0x7D447DF5, 0x7E3B7D4A, 0x719C7E9C,
|
||||
0x74337D7B, 0x7D6271BC, 0x750F7D40, 0x7D567D92, 0x7D167D20, 0x7D207D42, 0xF5B67E36, 0xD2D2F5F5,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0x647EF5D2, 0x6C7173DF, 0x70BF7E78, 0x7E7E728B, 0x7D967EBF, 0x7D547D3D,
|
||||
0x7E237D4A, 0x7D327DBF, 0xD0567D16, 0x948A8CAB, 0x96978C96, 0xB7DF9E92, 0x948A8D9E, 0xDF957E9E,
|
||||
0x6EF5DFF5, 0x7D1372B0, 0x7C8E7C33, 0x7CBC7C72, 0x73BE7E6C, 0x6F786C71, 0x7D3B7618, 0x7E7A6933,
|
||||
0x71F5F5BD, 0x7C337D90, 0x7C827C72, 0x7DA77C6C, 0x7D4D6C36, 0x7D3B7D15, 0x7D167D5D, 0x7D417D33,
|
||||
0x71BE7E55, 0x6F397D90, 0x6E426B4C, 0xF5337D31, 0x9C7CB37C, 0x546F5D7D, 0x557D9675, 0x4A7D2F76,
|
||||
0xBE7E3B7D, 0xBC7C827C, 0xA47E867C, 0x377DA77C, 0x936F1A71, 0x367D0973, 0x4A7D316E, 0x327D3B7D,
|
||||
0x237D5D7D, 0x407D5D7D, 0x436D996E, 0x377D367D, 0x547D177D, 0x377D157D, 0xBD7E5D7D, 0xAF7CF5F5,
|
||||
0xB57C6C7C, 0x157D356A, 0x3B7D4A7D, 0x237D4A7D, 0x427D3E7D, 0x936F1A71, 0x0F7D0973, 0x347DB469,
|
||||
0x68F53B7D, 0x7D267548, 0x7D1D7D36, 0x7D3B7D3E, 0x7E167D52, 0xDFF5DFBD, 0xD2D2F5F5, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0x647EF5D2, 0x6B3E76DF, 0x7EAD7103, 0x7E296DBF, 0x7D967EBF, 0x7D227D56, 0x7E237D1D,
|
||||
0x7D3D7DBF, 0x7E547D31, 0x929EB4A1, 0x929E8696, 0x8CABDF9E, 0x949E9D8A, 0xDF957E96, 0x6AF5DFF5,
|
||||
0x7D9A6F15, 0x7D5F7D33, 0x7D207D1D, 0x7D5B7439, 0x75486836, 0x6F0F7D26, 0x6F177D27, 0x7D177D48,
|
||||
0xF5167D48, 0x936F1A71, 0x337D0973, 0x166C9C68, 0x227D0A6F, 0xF5F5BD7E, 0x4E7D387D, 0x4D6B567D,
|
||||
0x3B7D507D, 0x167D5D7D, 0x1D7D5F7D, 0x0F7D207D, 0xB77C8B7C, 0xA47E727C, 0xBE7E4A7D, 0x3B7DAC6E,
|
||||
0x7DF50F7D, 0x7D3D7D44, 0x71527D37, 0x7D247217, 0x7D527D19, 0x7D377D4E, 0x7D3B7D4A, 0x7E527D5D,
|
||||
0x754868BE, 0x6E337D26, 0x6D6A721A, 0xF5BD7E73, 0x417D427D, 0x8E74256F, 0x876C2B6E, 0x507D417D,
|
||||
0x4C69327D, 0x856E5B77, 0xF5DFBD7E, 0xD2F5F5DF, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0x7EF5D2D2, 0x3E76DF64,
|
||||
0xAD71036B, 0x5F7DBF7E, 0x207D1D7D, 0x967EBF7E, 0x227D567D, 0x237D1D7D, 0x5F7DBF7E, 0x207D1D7D,
|
||||
0x9EB4A17E, 0x9E869692, 0xBEDF9E92, 0x9A929E86, 0xF5DF957E, 0x4169F5F5, 0x527D167D, 0x317D4C7D,
|
||||
0x427D507D, 0x9675546F, 0x036B337D, 0x6870936F, 0xBD7E5470, 0x1A71F5F5, 0x0973936F, 0x4E7D337D,
|
||||
0x0F7D397D, 0x237DBE7E, 0x3A7D167D, 0x8E71586E, 0x197D337D, 0x367D5B7D, 0x5B773D76, 0x3E7D557D,
|
||||
0x527D3B7D, 0x3B7D157D, 0x167D5D7D, 0xF5F5BD7E, 0xAD6EA96C, 0x3A7D9173, 0x3569BE7E, 0x5673836C,
|
||||
0x3868327D, 0x557D5D7D, 0x367D6171, 0x0F7D4276, 0x597D9372, 0x5D7D3B7D, 0x337D167D, 0x446B567D,
|
||||
0x377D187D, 0x936F5D7D, 0xF5DFBD7E, 0xD2F5F5DF, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0x7EF5D2D2, 0x8176DF64,
|
||||
0x64718C72, 0xA604BF7E, 0xBF7E8E71, 0x597D967E, 0x537D0E7D, 0x5B7D1A7D, 0xBF7E497D, 0x5B7D197D,
|
||||
0xA17E4E7D, 0x869891BA, 0x96958A90, 0x8A90A6DF, 0x957E9094, 0x71F5F5DF, 0x7D0373AD, 0x7D5B7D4E,
|
||||
0x7C7E7C33, 0x7E7C7CA8, 0x76377DA4, 0x750D6F48, 0x773A7DA7, 0x7D2B6B15, 0x7C757C33, 0x7CA47EA2,
|
||||
0x7C857C98, 0x7D747C9A, 0x70577D33, 0x7E936813, 0x6F1A71BD, 0x7D097393, 0x6C9C6833, 0x7D0A6F16,
|
||||
0x7D3A7D22, 0x7D5F7D1F, 0xF5BD7E16, 0x6CBB68F5, 0x7D496F66, 0x7D5D7D3A, 0x7C1F7D3D, 0x7C767CB1,
|
||||
0x710F7DA7, 0x7D276F9B, 0x7D3B7D3E, 0x7D427D5D, 0x7E207D42, 0x744D6EBE, 0x7D4A7D39, 0x7E1F7D3B,
|
||||
0x7730778A, 0x7E486D0A, 0x73397D89, 0x7D317D3B, 0x7D3B7D15, 0x7E167D5D, 0xDFF5DFBD, 0xD2D2F5F5,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2, 0xD2D2D2D2,
|
||||
0xD2D2D2D2, 0xD2D2D2D2, 0x647EF5D2, 0x6F226CDF, 0x15BF7E13, 0x7EAB6B5F, 0x7D967EBF, 0x7D2B7D36,
|
||||
0x7E127D56, 0x7D237DBF, 0x7E337D54, 0x9D96B1A1, 0x889E948A, 0x9EB2DF9E, 0x90919694, 0xF5DF957E,
|
||||
0x6F4876F5, 0x68367D0D, 0x7DBD6DB9, 0x72486839, 0x68367D8C, 0x7D3B7D77, 0x6C167D5D, 0x7D617473,
|
||||
0x71687033, 0x6F1A6E8E, 0xF5BD7E49, 0x7D3F71F5, 0x6A1A6E32, 0x6A377D30, 0x7168707A, 0x6F337D8E,
|
||||
0xF5BD7E93, 0x856E3069, 0x507D417D, 0x536F3A7D, 0x6873886E, 0x3A7D237D, 0x3E7D417D, 0x0D6B3B7D,
|
||||
0x3A7D0E7D, 0x507D5D7D, 0xBD7E167D, 0x987DF5F5, 0x926D337D, 0x327D5071, 0x876AB369, 0x557D417D,
|
||||
0x046ABE7E, 0x546F0373, 0x4169327D, 0x567D187D, 0x2B75367D, 0x3E7D1E77, 0x5D7D3B7D, 0xBD7E167D,
|
||||
0xF5DFF5DF, 0xD8BC801A, 0x7054615E, 0xC328FFDF, 0xDA125C58, 0xE29F76AE, 0x3E985EC9, 0xD68942BB,
|
||||
0xACF447D9, 0x34A0EC16, 0x1774BA75, 0x6C8C73E8, 0x67F6D63C, 0x0DD99ED2, 0x325664BE, 0x0CB32A77,
|
||||
0xDA949E84, 0xBC3E8E3E, 0x22C0F818, 0xD352F14E, 0x85E442D5, 0x7BB08649, 0x327D6652, 0x34D2AC9A,
|
||||
0xB9525C54, 0x5E4D743A, 0x6461F214, 0xE5E044DF, 0xD7F67227, 0x5BDA6038, 0xE6666190, 0xD25A79B2,
|
||||
0x83876738, 0xEF5EE84A, 0x6B2CAB32, 0x3D877003, 0x3E2EE6D3, 0x0B381E70, 0xB0822C81, 0x69AB1A74,
|
||||
0x2EF5D5D2, 0xF402AFEC, 0xEEA7A289, 0x61D5E690, 0x465147E5, 0xD5949B1C, 0x31541D66, 0x148184F4,
|
||||
0x6C1CE67A, 0xDC42ED2B, 0x93BC139A, 0xD3933356, 0x670BEB65, 0x7DAB5094, 0x63D8C733, 0xD903AD70,
|
||||
0x4D670639, 0xC227AC3D, 0xAA98D504, 0x12FABF63, 0xC5352399, 0xC65E8E6D, 0x6AA6D630, 0x021531E5,
|
||||
0x39ED9C6F, 0xAE937934, 0x40D1EACE, 0x3AE7BEF1, 0xF02500F2, 0x5D11F536, 0xEF02A224, 0xF9575EF9,
|
||||
0x5573CEFB, 0x54C3877F, 0x20A894FF, 0x803C3314, 0x235C2CBA, 0x1D4FF3BB, 0xFB2D1256, 0x7056267E,
|
||||
0x05265C89, 0xA1C309B7, 0xED8FFA88, 0x1502F98C, 0x07C6FA3B, 0xC8904F76, 0x4D943763, 0xFD477F04,
|
||||
0xD5F33030, 0xC4DC9F81, 0xA95B87C7, 0x2AAD0AD7, 0x708F000B, 0x228B6CBA, 0x098CBD66, 0x55E149C7,
|
||||
0xC231F621, 0x42AE3F42, 0x10261C48, 0x5822CAEF, 0xEC4BEA29, 0x69E16806, 0xD5AE0EFA, 0xA703BADE,
|
||||
0xEF63BFFB, 0x4FC961F5, 0x9C72FB3B, 0xB61C58B9, 0x4AEC93B2, 0x755C6398, 0xFEF78F90, 0xA1F78D8B,
|
||||
0x6F090D0A, 0x1B773587, 0x706CFC97, 0x56955335, 0x004EE05F, 0xBC475257, 0x7E1503C8, 0x5B78B3CD,
|
||||
0x814E4BC2, 0xC1715B5B, 0xEFBFB8F6, 0x6854031F, 0xF30CE6D4, 0x2E1718D6, 0xD06045FD, 0x9B660A1F,
|
||||
0x9CC8A258, 0x5897DB15, 0xB6C3C2A4, 0xB57C5D74, 0x3278D081, 0x3B5D98E7, 0x039B6E88, 0x0E24DF39,
|
||||
0x7ACD36A8, 0xF44AAB04, 0x3DE85824, 0x838781C6, 0xBAA78A54, 0x3B54D906, 0x97C9152C, 0x943DE77F,
|
||||
0xF99A08C0, 0x46942D51, 0x5A1BE77B, 0x16738C96, 0x32967A15, 0x3536E659, 0x9754C8C9, 0xF428132E,
|
||||
0x6B4DB3E3, 0x971D7E51, 0x1C5B8614, 0x9BB28962, 0xFE1DB239, 0x18B88247, 0xCBD5D9A9, 0xF24A5632,
|
||||
0x46691056, 0x2F353918, 0x52BCC5FA, 0xEE39D964, 0x3F81F0EF, 0x520A0E5E, 0xD5912E95, 0x4FB17933,
|
||||
0x74B6F3C7, 0x532ED363, 0xF46FF821, 0x55A55E80, 0x71459FE5, 0xCEBC430C, 0xB5378EC0, 0x37ECB083,
|
||||
0x83305B82, 0x31CFAD9C, 0xE7E4097C, 0xC230B646, 0xB95655B4, 0x11B2DBE7, 0x2435B74A, 0x8330B2A0,
|
||||
0xC31446BA, 0xF3E427EA, 0x3C750CE8, 0x93BEE8B6, 0x404C5410, 0xBCA348C4, 0x9AE3AACF, 0xF8215AC7,
|
||||
0xBE3AEC25, 0xC4DB481F, 0x71A8582F, 0x22B3EA36, 0x113D0A98, 0x6C826BF2, 0x3BC44E56, 0x052136DF,
|
||||
0x5A94202F, 0xE7C7C837, 0xAEFFAA96, 0x481C1C2E, 0xBB6BE06C, 0x3B19DEFF, 0x95D97AD1, 0x08FA7AF9,
|
||||
0x595114F5, 0x3960066E, 0xD7F9FECF, 0xC6F3CB6C, 0xF6827F92, 0x2F21BB23, 0xE2D06DB3, 0xD8A459E7,
|
||||
0xB8DD726D, 0x96DEE22B, 0x8F41FC78, 0x0A6D7FB0, 0xD46D787F, 0xC8C17671, 0xCCBE2555, 0xCA93F523,
|
||||
0x3260A587, 0x582375FE, 0xA1EC6529, 0x6F2E3FE2, 0x2600C9A4, 0x05471CA9, 0xA2FA1B00, 0x516844D3,
|
||||
0xACEC7F36, 0xBF7E7736, 0xC8CD3AEA, 0xFC01E996, 0x79EF5BDE, 0x80837A48, 0x7544A7F6, 0xF52DC05B,
|
||||
0x48F29041, 0x3D7AF54D, 0xE7A2F6DC, 0xA3324B9E, 0x845308F4, 0x6D6B59F5, 0x1107B7E9, 0x41DB9A4A,
|
||||
0x664C17F0, 0x2D90801A, 0x5187C18A, 0xD1B6AE77, 0x6B088EAC, 0x7DE5AA05, 0x1CDEF8A3, 0x8895F28C,
|
||||
0x3E126806, 0x96DFE11E, 0x8100EC01, 0x73EF054A, 0x7DA2ED37, 0xDE911008, 0xE84A955B, 0x4EFCD2B7,
|
||||
0x67C61BA1, 0xEB08CE97, 0xB1D0F803, 0x5D2CF37D, 0x78759FB0, 0x2B4DD43A, 0xC60EE346, 0xEBDCB11E,
|
||||
0xB19A3E8B, 0x9C56B73F, 0xD6279055, 0x9463C4A0, 0xC2BCCA31, 0x28E33F02, 0xEED5B252, 0x7B6B410F,
|
||||
0xAD3640CB, 0x14FF0C8C, 0x41DD0B23, 0x050FBFF0, 0x801173BE, 0x06750586, 0x19F790EC, 0x01CF32C9,
|
||||
0x124426E5, 0x2C2716A2, 0xED496C38, 0xCBCEEBE7, 0x1379B4F9, 0xF316B595, 0x2B4A27EB, 0x1CD50E1F,
|
||||
0xD7973546, 0xE69B0AFE, 0x57BDE2C7, 0x6CB0B82A, 0x35B6B86B, 0x1A91DAAB, 0x614DFCC4, 0x6BCC4AA6,
|
||||
0x611DFD79, 0x32289B49, 0xE0BA9884, 0x1BFD823A, 0x4E75B8A0, 0xBFF03DB2, 0x369D0ED4, 0x85AADDAD,
|
||||
0x28F34CF4, 0x2CC4D6EA, 0xEC57778C, 0xF5ED1342, 0xC50F04DA, 0x43A9127A, 0x63511EF9, 0xEE53619F,
|
||||
0xAB2F892B, 0xDAD134F4, 0x865CD0E7, 0x16911E2F, 0x6559CB8E, 0x840B78D7, 0xC9C051F9, 0x28682422,
|
||||
0x5E64F8CB, 0xBF1FFC23, 0x980BE59C, 0x1534C6E2, 0xFE576703, 0xDCA27A83, 0xB7174088, 0x60741B9B,
|
||||
};
|
||||
}
|
||||
|
||||
internal class ZecchouCrypt : CxEncryption
|
||||
{
|
||||
public ZecchouCrypt () : base (0x1EC, 0x787)
|
||||
{
|
||||
PrologOrder = new byte[] { 2, 0, 1 };
|
||||
OddBranchOrder = new byte[] { 0, 4, 3, 1, 2, 5 };
|
||||
EvenBranchOrder = new byte[] { 3, 4, 0, 5, 7, 2, 1, 6 };
|
||||
}
|
||||
|
||||
protected override uint[] ControlBlock { get { return s_ControlBlock; } }
|
||||
|
||||
static readonly uint[] s_ControlBlock = {
|
||||
0x9270F55C, 0xB6862F50, 0xCBEE2F3C, 0xB3819E81, 0xFE27C837, 0x0B196E88, 0x4884FC7D, 0xFEB4A2E5,
|
||||
0x991A44E9, 0x70452B25, 0x8BB83161, 0x87AC6FB8, 0x4D9251EA, 0xB35C674A, 0x18F437D4, 0x3DB344CF,
|
||||
0x79994177, 0xB9AE14D5, 0x3D014374, 0xB24F96E1, 0x5C2515E8, 0x93FD6325, 0xB903664F, 0xC97BC457,
|
||||
0x6CA42179, 0xB4C25E64, 0xE4A9DADD, 0x3B14D037, 0xBCACA4C9, 0x97798BD9, 0xDD8F1A4F, 0x87E240E0,
|
||||
0xDE767108, 0x9AB2A99C, 0x47657059, 0xBB44019B, 0x5C6B4FC8, 0x0E01A6D3, 0xA0646531, 0x0C599669,
|
||||
0xDE6591C8, 0xC6740F94, 0x7945082C, 0x9E411FF8, 0x4B2F880F, 0x0A5BE1F8, 0xF23A3A7C, 0x29E612DA,
|
||||
0xFDCA8201, 0x106AADE3, 0x8E1F60CD, 0xC51D484F, 0x66750FBE, 0x6B926CC4, 0x78522E0F, 0x2BDF7E2C,
|
||||
0x7682A508, 0x02EC77A3, 0x5F9E25DD, 0xF0D7280E, 0x3CA52490, 0x68AA732F, 0x5E669638, 0x8BE3E7D7,
|
||||
0x52D32A49, 0x0B2D4D08, 0x753DC3A8, 0xE8B71148, 0x232A52AB, 0xF2903DE7, 0xA79B15DC, 0x971134CA,
|
||||
0x5F1B535B, 0xB7DFCCC6, 0x6CE21BF2, 0xCA08B73B, 0x31824771, 0xD5F6DAD2, 0xFFC6CD89, 0xA712BDF1,
|
||||
0x8F91EBB9, 0x316A0AA1, 0x3DB53BEE, 0x15803411, 0xBA61E60D, 0x2B2ECC5E, 0x7C3FCB9F, 0x16F8EDFD,
|
||||
0x5BD8EC08, 0x5A574D63, 0xE3EADD33, 0xF0707487, 0x491CC7EF, 0xA28D0BD7, 0x34F7AF33, 0x5B5BFD9A,
|
||||
0xAE51DEBC, 0xCD35BD18, 0xADD568A3, 0x4AFF54DB, 0x16FBAD5E, 0x972EAAE0, 0xA756D9EA, 0x5DFA6FE6,
|
||||
0xAEBC6099, 0x2D17DE69, 0x771E96B6, 0x02561A66, 0xC2D01B3F, 0x843459DB, 0x992F7899, 0x0526E411,
|
||||
0x2FDF7C17, 0xFEB029D6, 0xD2439AE8, 0x2088904B, 0x328562F8, 0x62FDD7FB, 0x6C51C1DE, 0xCB24ADC7,
|
||||
0xD3DD7784, 0xA27DC0BD, 0xBAB39B06, 0x99664B04, 0x4B47270B, 0x3004E5C7, 0x2109062B, 0xB62619D1,
|
||||
0xD2B3A2A7, 0x8E177435, 0x9E87C141, 0x16EDB804, 0xEFB118D7, 0x48547395, 0xEA4420D9, 0x113C3E10,
|
||||
0x82A1D55F, 0xC0D1B347, 0xE99E3F16, 0xAE1056B6, 0x70E7C756, 0x26BB5BE4, 0xA4F5DE57, 0xF2304702,
|
||||
0xF3BEE3F9, 0xC12DE4E5, 0x5FAB7070, 0xC2396F00, 0xDA2E2763, 0x0D67EAD6, 0x842434DB, 0xF2287493,
|
||||
0x139B632C, 0xD31AE186, 0xBE21F391, 0x0F04AD74, 0x760E3D8B, 0x6FD4AB0C, 0x9F506610, 0x6FFAE6E8,
|
||||
0x6D53455B, 0x5DE866A7, 0x3211718B, 0x2F0E1FB8, 0x6D579EF7, 0x6E41F401, 0x9533E737, 0xB23CBE44,
|
||||
0xC0F3C6E4, 0x4631C54B, 0xFE6CC1FB, 0xD1567AA8, 0x24524BA3, 0x06301DE1, 0x09A3BFD4, 0x08FFE284,
|
||||
0x32FD6D39, 0x43D5EF08, 0x449C17B0, 0x6930A066, 0x9B04D47C, 0xE5A536C3, 0x7A295350, 0x6CBC2188,
|
||||
0x806D8EE5, 0x58C3C762, 0x334606B6, 0x81512651, 0x8400513A, 0x7FB90824, 0x27CB40E6, 0xE8E2BF1E,
|
||||
0x815D76B9, 0x01A9AA15, 0xCA54128E, 0xCBF55453, 0x4AA5015F, 0xFF6457B8, 0xC66002D5, 0xAD9E485E,
|
||||
0x894B9EBF, 0x1877BCF5, 0xB0A5D55B, 0x0918A78B, 0xDC8E4F3E, 0x783D3AEC, 0x5A968FC8, 0xA25B6672,
|
||||
0xEA419133, 0xBB49AD06, 0xCBB54C31, 0x817CAED7, 0xDCA456DE, 0x66CBF223, 0x0BE19BE2, 0x8DD0CC43,
|
||||
0x7A562E48, 0xADCC9AA4, 0x9F937AE1, 0x3A290B93, 0xA99553FB, 0x6D45CC1E, 0x086F108E, 0x3DF2DD54,
|
||||
0x7210DE52, 0xF0FCE1D0, 0x359E0E55, 0x001C5D92, 0x171D6AF1, 0xC7271B28, 0x67B88D5F, 0xE26F0853,
|
||||
0x4CB7BE31, 0x5AE6C6A5, 0xEABC5EB9, 0x89212E43, 0x59208A14, 0xE6B96C15, 0xD10525A4, 0x56667092,
|
||||
0xA6395218, 0x1069D219, 0x36AAF7E4, 0xAFC507C8, 0xBF83159D, 0xF9D19AAC, 0xF1E9A556, 0x77BBCAAC,
|
||||
0xB1F4C79D, 0xD15721E7, 0x2F6F1103, 0xA9D42681, 0x75A61F30, 0xFF3E9FB1, 0x74399AE7, 0xA1FFE22C,
|
||||
0x28864699, 0xA66F4198, 0x7B52E6EA, 0x3487BEA4, 0xC9F9E82F, 0x995F7249, 0x054A04B5, 0x490886D0,
|
||||
0x1C6941E2, 0x1FFE1313, 0xE9FA70F8, 0x2FFB8BA6, 0xACF7271F, 0x7EDBCD42, 0xCEA3AE90, 0x86D20A4A,
|
||||
0xF7F9ACBF, 0x865FFE08, 0x2D1541C9, 0xE418439C, 0x5CA169EA, 0x95CEB34F, 0x52F079D3, 0x2CC683FE,
|
||||
0xC4422599, 0x2A2CC1FC, 0x3F308992, 0x72DC3141, 0x02C34D6E, 0xACD97273, 0xE4395318, 0xA256FCE4,
|
||||
0x5AAD1F02, 0xE50C02F0, 0x5E47F15A, 0x37CBD054, 0x3A202641, 0x6BC6DBCD, 0x3E39017D, 0x558C86C2,
|
||||
0x1C6CAC5F, 0x6C52FC13, 0x6A56788A, 0xA95900AA, 0x3BF53A24, 0x6AA72441, 0xE001FC31, 0xE086780F,
|
||||
0xF331A63B, 0xA84CB9AA, 0xD2FA19E9, 0x3D27E008, 0xB97F3FE6, 0x6ACF6534, 0xDA4FF671, 0x7E9B71E2,
|
||||
0x7B94AA6F, 0x4CA404D3, 0x0F0D430A, 0xFAF767BC, 0xF594274D, 0x4B450810, 0xD40A4F42, 0x1CF7CBDA,
|
||||
0x60AB016E, 0x90228816, 0x42C03FB3, 0xC1BF0A28, 0xD38BB39D, 0x03E22FC1, 0x00EA557F, 0x2AC33A59,
|
||||
0xF3DDE16D, 0xB7837409, 0xF3B643C0, 0x26D31B78, 0x41FBC6F1, 0x9295988D, 0x3BE6B767, 0x2285E0A5,
|
||||
0xD9FB8861, 0x48AC486C, 0xF68CD9DB, 0xDF3CD901, 0xDAB67306, 0x7FE5EB09, 0x10B86AC2, 0x8CAB3002,
|
||||
0x0DFEC9FE, 0x399A347B, 0xC2129291, 0x1E39F57B, 0x7A9FA43A, 0xAD0C508D, 0x42F2298D, 0x7379139E,
|
||||
0x94E54601, 0x07F02928, 0x24A5AB2D, 0xB2C84154, 0x12FC0050, 0x3155D5CE, 0xE1874881, 0x212C217A,
|
||||
0x616F12F3, 0x3B70ACBA, 0x2975F280, 0xFAC6823A, 0x35F56E57, 0x3BEF7B6F, 0x537B3850, 0xB6D065A5,
|
||||
0xA2EB4C68, 0x4CB7E715, 0x82A27532, 0x6275AC85, 0x7FFEC38F, 0x688F1404, 0x6AA26DF7, 0xC70ACD80,
|
||||
0xBA0A7258, 0x7E89CE68, 0xECF582AA, 0xD9A031D4, 0x1C7CA117, 0x242FE683, 0x52C66C4B, 0xA6F47C5A,
|
||||
0x6394301C, 0x97E085C4, 0xD530351E, 0xE7BE1F0A, 0xF394E9A9, 0x2CDFCD2C, 0x9E45C5D0, 0xD9BBC0C5,
|
||||
0xBE2B008C, 0x2CC11084, 0x76F241F3, 0x8EDE62AD, 0x71FC5FAF, 0x1E63AF01, 0x390D8007, 0xB5B8365E,
|
||||
0x6A38B215, 0x7D73F53B, 0x1A4DA747, 0xE5E0C4BD, 0x5ADB5E8E, 0x15800E9D, 0x6883557E, 0x0BD8B04A,
|
||||
0x7FC16BB6, 0xB7C0C613, 0x560F4264, 0x90CBEB83, 0xBF754442, 0x7AB9C45D, 0xBC629AE9, 0xD814C4C4,
|
||||
0xE11468C4, 0x856E9F0C, 0x257E9EF7, 0x11E12E28, 0xB372A0FC, 0xED24089E, 0x2CD13FA1, 0x270DA0C4,
|
||||
0xB02A2E71, 0x2D9126AE, 0x1C4367AA, 0x216EC6BF, 0x9996D214, 0x0F7DB47F, 0xEB678F06, 0x59825E13,
|
||||
0xE4AA1FB7, 0xA100D8EC, 0x24190CAD, 0xC2AB661D, 0x1B97A351, 0x1D36029B, 0x6507B8CF, 0x5D584C5B,
|
||||
0x1E6676F5, 0x98177D11, 0x9AC0D28E, 0x8208A12E, 0xDC1207F0, 0xBFCCDA43, 0x3F1CD63F, 0x49D23890,
|
||||
0xB1777585, 0x9C4E9BD5, 0xDDF710F6, 0x23160493, 0xD913FB31, 0xC515E622, 0xF483128B, 0x61F3BF2E,
|
||||
0x751A2797, 0xB2B093B9, 0x4EA13F28, 0xE46E324E, 0x029509C1, 0x8CB4460F, 0xBEA15A37, 0x7700207F,
|
||||
0xA57412F9, 0x0883D935, 0x453B9DC8, 0xD53ADFA0, 0xAFF4FDB0, 0xB1B86FDE, 0x57D11FD9, 0xBF4611A5,
|
||||
0x32419C89, 0x19535C60, 0x91FE8B49, 0xECCAC288, 0xA80BC4DA, 0x91C950E7, 0x220764A2, 0xE5ACFA83,
|
||||
0xF2084145, 0x58FB667D, 0x4C938932, 0x1C2701C4, 0xE2B9A3D5, 0x7BC777F0, 0x9D800459, 0xEC5A23EA,
|
||||
0xD968C81D, 0xA6D03890, 0x6C369684, 0xCDA7E91D, 0xD2F04633, 0xE7632868, 0xE6373A8D, 0xF03D3A43,
|
||||
0x3AB1F137, 0x9E989421, 0xE8604080, 0xE2A54C4F, 0xD87F6535, 0xE972BF2B, 0x77A96E1D, 0x0BFBB602,
|
||||
0x839590CD, 0x32003F39, 0x3820E913, 0xD1375906, 0xC4EEFB78, 0x04A51627, 0xD1612DB4, 0xA0D72CC4,
|
||||
0xE5F36021, 0x55838820, 0x380ADCA8, 0x41F33E77, 0x5995E0B9, 0x204AAADF, 0x941ED08A, 0x5940B193,
|
||||
0x54D5DE7F, 0x2C9D0E08, 0x6A99ED29, 0x8669BF46, 0x788428F0, 0x8FA2C173, 0x3269D3DF, 0xFE8AA1B8,
|
||||
0x767BF63A, 0x6794DE8D, 0x17B0C542, 0x50217DF8, 0xF3314021, 0xA5C066F2, 0xEF5424BD, 0x87E33E5C,
|
||||
0x39EA028B, 0x0F8DB8F3, 0xF0587767, 0xDC17DD25, 0x0D4DCFFA, 0xB691C585, 0xF0FE755F, 0xFD1D1C2D,
|
||||
0x827AFEC7, 0x0236DB4A, 0x74D6725F, 0x0F8E0B62, 0xCA2F8EBD, 0x927C07C4, 0x4D240BA6, 0x7451F975,
|
||||
0x4D2F21AB, 0x9F1F1879, 0xE7893491, 0x92D3CA97, 0xB4FC4E4E, 0x279A6216, 0x2DEF215B, 0x783991D3,
|
||||
0x1FAC97B9, 0xAD96C9B5, 0x22CB8FE7, 0x6EEB78B9, 0x2A4D0F38, 0xBDB1643D, 0xDBF09299, 0xE392A586,
|
||||
0x7E660D9E, 0x2216ED36, 0x6572751F, 0xF38599DE, 0x3A467EA0, 0xC6795CA9, 0x4AD044B3, 0x82CB59F7,
|
||||
0xF02376BE, 0xC0711A8D, 0x1A7C8670, 0xAD4AF7DF, 0xD6500F2D, 0x22C2A8AD, 0x9C663A5F, 0x5D73768D,
|
||||
0xD9EE73CD, 0x047E1533, 0xECB910DB, 0xFDF2645C, 0x761C80CF, 0x24EC3B7B, 0x772B89A3, 0x6DE2BD5C,
|
||||
0x8F6666D1, 0x2291E961, 0x235B6635, 0xE82D3A68, 0xDCA52C6F, 0xD2BF0617, 0xCA2CD768, 0xD83CAF80,
|
||||
0x97308EC9, 0xCCD0882D, 0x6F4483DD, 0x5546026B, 0xCD3982C2, 0x4EDBB490, 0x150B2684, 0x0ED54971,
|
||||
0x3B8F24DE, 0xDC86531E, 0x001EED75, 0x1C0BEC91, 0x1D171CE7, 0xC8D24D9D, 0x4D798200, 0x70B0F4F6,
|
||||
0x3DC6CD4B, 0xECF5D3D9, 0x9CBB5B72, 0x33DE4F41, 0x90CED478, 0x5FD36868, 0x1FB23723, 0x40DDCC71,
|
||||
0xD8712397, 0x745D9EB1, 0xC87BDAC8, 0x2B95A8A0, 0x50143C35, 0x274CFF72, 0x17F1ED1D, 0xD2FF3744,
|
||||
0xAF4C4F48, 0x302165B1, 0xF03D5489, 0x41376BFE, 0xC1EF54B8, 0x1D09B9EC, 0x34E9DD09, 0xBAC7A594,
|
||||
0x0752E96F, 0x7165005A, 0x38D14E60, 0x203A3661, 0x8EEAE1E9, 0x3BD33A6D, 0xD943B0FC, 0xD8EAF601,
|
||||
0xA0FD332A, 0x206B03E1, 0x2C70D472, 0x875F68E1, 0xCBB802A4, 0x58ADE48C, 0x4C20AF9D, 0x17BB5E21,
|
||||
0x36A492CF, 0x1030D7D2, 0x90DCD297, 0x2F7A9352, 0xB029252C, 0x7A05CF9D, 0x551E2CB2, 0x891D2B43,
|
||||
0x1A17FADF, 0x15B3B985, 0xC6058A53, 0x4FE824CA, 0x8F4E012B, 0xA4C8855C, 0xC7A1E221, 0x36B254DE,
|
||||
0x9EB5BBE7, 0x22E7354F, 0x7156BAA2, 0xE77AB5D4, 0xDD86ABD9, 0x58CCD168, 0xBB41A85D, 0x0F2EAC84,
|
||||
0xB6412B9D, 0x0237D93F, 0x1EF229A9, 0xC7301842, 0x3DB32AEA, 0x4DFCF9BA, 0x6021C869, 0x2AD00EA7,
|
||||
0x4E631C02, 0x0F0B877A, 0xE4D9EB17, 0x132B9EB3, 0x18A5BC60, 0x1E6ADDD9, 0x5CACAF44, 0x9C042275,
|
||||
0x70746C87, 0x85523E54, 0x9A3EA645, 0x35FB4558, 0x2F67B4AD, 0x73F4A2BB, 0x05F436CF, 0xE9A0C8B7,
|
||||
0xD21B864A, 0x54AB17BD, 0xE38B0C47, 0x79A39EE0, 0xBF04CB35, 0x5B27F2D9, 0xA26C0F5A, 0x023FE871,
|
||||
0xADBB1C8D, 0x28A11B64, 0xE1302E70, 0x2725B3EE, 0xCD53962A, 0x4CB14D5A, 0x5DCF5926, 0xF0422432,
|
||||
0x10BC250F, 0xB42FC381, 0xEF74D666, 0x645B605A, 0x5C9644F7, 0x2F520956, 0x022E456E, 0x938A54FA,
|
||||
0x02295E3F, 0x2274FFF1, 0xD6482A4E, 0x2ED0D289, 0xB4910F2A, 0x7C2844BF, 0x57E43DB2, 0x0CF0BB92,
|
||||
0x4C4A6551, 0x10484461, 0xB83C1DC1, 0xAEAC9F3E, 0xBFFD4DD9, 0xEDC2ADBB, 0x9CCA5BBD, 0x38C9FEF9,
|
||||
0x7366F30A, 0xD2C0253C, 0x4FE44654, 0x32BA9535, 0x15C11484, 0x83621217, 0x07B51233, 0xC42D5EE2,
|
||||
0x2B5A92B5, 0x2E0322EE, 0xBC90A537, 0x1F76BDD0, 0x821F1E60, 0xBB5E2A97, 0xAB9E91BB, 0x61C6B775,
|
||||
0x3E0811A1, 0xA0EC4696, 0xBD98758F, 0x0F09EBAB, 0xA45FEE55, 0x0C97E07B, 0x97E83B29, 0xA140D735,
|
||||
0x4ED5A2A8, 0xF25AFCDA, 0xD599F5BA, 0xD9811EA0, 0x259798B8, 0x1DC27987, 0xDADDE453, 0x44155F12,
|
||||
0x15FFD7D2, 0xE5AD7B75, 0x81689720, 0x3002B9C6, 0x3FFD0479, 0x921A4C33, 0x07613253, 0xD729DEB7,
|
||||
0xB1453181, 0x8EAE4454, 0x687945CB, 0xC9066E24, 0xEF740136, 0x3E480CC9, 0x595E537F, 0xCC96D88E,
|
||||
0x7D3E276A, 0x86CC6BB3, 0x442659B7, 0x2AF9FCA1, 0x49A093E0, 0x6FAF85D3, 0xF8F363CB, 0xA6E9AC53,
|
||||
0x5A4B85F6, 0xBE80C019, 0xE1885E08, 0x09C7BCD3, 0xE742E00B, 0xBBC8886A, 0xB71AE97C, 0x69FC4DE6,
|
||||
0x07B3E838, 0xF1E769A0, 0x83077273, 0x73389D3B, 0xED478AF8, 0xFED38179, 0x65F99CD4, 0x23397FAE,
|
||||
0x1194665A, 0x7895A7EC, 0xB7FF6CA3, 0x1A16415B, 0x0C71A4FA, 0x37291B64, 0xD893C03B, 0x06E491E7,
|
||||
0x68CE71E0, 0x832E6457, 0xC13E3E58, 0xDE5E3EEA, 0x752955C9, 0x901487DD, 0x571F9234, 0xD35FDAD2,
|
||||
0x86EBC300, 0x886D856C, 0xF4395FDC, 0x40CB706D, 0x716CA9CA, 0xF8E9E161, 0xE7CFFC60, 0x878CE2AA,
|
||||
0xB0247CE7, 0x0AF6795A, 0x1CD6D24D, 0x9660CE91, 0x2896C734, 0x43E51A9F, 0xAA50E2B6, 0x0170BB89,
|
||||
0x0A7BD881, 0x488D056C, 0x96127C2D, 0xF2A28577, 0x3C250228, 0xA8CBDC64, 0x002BE31D, 0x210E3ECF,
|
||||
0xE4C6B808, 0xA72CE405, 0x69CDF067, 0x035512EE, 0xADCAB9EA, 0x95D3F12B, 0xD4B83A4F, 0x2EDD1857,
|
||||
0xACF74798, 0x43FE446F, 0x7022F679, 0x179B1195, 0x709AD316, 0x488403A8, 0x38157EB7, 0xB5CE2750,
|
||||
0x71F2AA5C, 0xAA48B1C4, 0xE1124C6B, 0xFF2EA2D0, 0x57840A94, 0x4A81179E, 0x53E2FA12, 0x1462A9A2,
|
||||
0xDD361AA5, 0x61DC6CF0, 0x60B7308D, 0xB3938A0A, 0x3A72DDC4, 0xD3CA6348, 0xDCD667DC, 0x3AEF7E0E,
|
||||
0x4513EB3E, 0xE02FC58B, 0x0744443F, 0x18FAEE12, 0x131B8126, 0x8CC83D6B, 0x97B19076, 0xE24FFB2F,
|
||||
0x900489D6, 0x8D75141A, 0x9661E2CA, 0x1EB3AF28, 0xD04404F4, 0xDF9F559E, 0xE7B0F8F0, 0xE49179F7,
|
||||
0xAA2E63F7, 0xFA5B5DF3, 0xB19D6E10, 0x19149357, 0xFBE8A488, 0x6AADC6F8, 0x7AFD6F0D, 0xAB583722,
|
||||
0x10644431, 0xAF20D09A, 0xEE025A46, 0xB0DC5F77, 0x01BF3B9E, 0xC545A1D8, 0x88C25D8B, 0x34C2588B,
|
||||
0x3ECA1AF5, 0xA67174B8, 0xE7AAB5B2, 0xC2D24A63, 0x240220E2, 0x3755BD79, 0x946818CD, 0x4D7A3DF3,
|
||||
0x2FBEB825, 0x4877F84D, 0x44D66C5B, 0x3781D6B1, 0xD82F5408, 0xFF0BBF0A, 0x906BABE2, 0xD26588FB,
|
||||
0x23EF583E, 0xC7E2C2B1, 0xF7194967, 0x41FF8804, 0x6C26A2A8, 0xECA20589, 0x9C9AF706, 0xE9D39305,
|
||||
0x82DB5FA2, 0xB46DD348, 0x0BDF1796, 0xF5CBFEA4, 0x3CCDE738, 0x90B6AD5D, 0xE18E90DB, 0x7A4C639D,
|
||||
0x30164160, 0x5F477A89, 0x8391C827, 0xCA39591C, 0x5D2A5E8F, 0xDE096E9C, 0xC7B9EAED, 0x8E995AAD,
|
||||
0x49F78270, 0x2A0A06A0, 0x0D59B4A1, 0x8C468DAF, 0x188A5F5A, 0x042A046C, 0x6CF18FE0, 0x11561BBC,
|
||||
0x038B273B, 0xF2C758D6, 0x870BBFA6, 0x1BF0945F, 0xC984561B, 0x2A5F3786, 0x542644FD, 0x33D29960,
|
||||
0x41A99BEA, 0x655CE25C, 0xFF60AF4E, 0x771332BC, 0xAC9C6B99, 0x41D07D4E, 0x426B0782, 0x2CF04930,
|
||||
0x6EA4A08A, 0xCDBC5B3D, 0xE2E1E0F7, 0x8CB1CC6A, 0x646E3524, 0x1874F91C, 0x6AD36E87, 0xE649A9FC,
|
||||
0xACD87134, 0x3B3FCE3B, 0x4CC72A28, 0x156B9C7E, 0x97211158, 0x7B64B8E5, 0xF22AB8E9, 0xE3E8F795,
|
||||
0xAF025C49, 0x36BB8118, 0xE7E9F17D, 0x15B5DDE2, 0x9F250A5D, 0xABDD38BC, 0xEFB04E1A, 0x186994F5,
|
||||
0x86284E75, 0x97AA4AC4, 0xA8E5CD52, 0x8BAC3DDE, 0x722920E7, 0x8D1C7103, 0x29B24FE8, 0xECABDAB8,
|
||||
0x75B2DB9E, 0xC34642CB, 0x69F06889, 0x4B2BFEDC, 0xE9C4A628, 0xBDAF413E, 0xB074A534, 0xB1A8DA88,
|
||||
};
|
||||
}
|
||||
|
||||
internal class WalpurgisCrypt : CxEncryption
|
||||
{
|
||||
public WalpurgisCrypt () : base (0x2C4, 0x757)
|
||||
{
|
||||
PrologOrder = new byte[] { 1, 0, 2 };
|
||||
OddBranchOrder = new byte[] { 4, 3, 0, 5, 1, 2 };
|
||||
EvenBranchOrder = new byte[] { 3, 2, 6, 0, 1, 5, 7, 4 };
|
||||
}
|
||||
|
||||
protected override uint[] ControlBlock { get { return s_ControlBlock; } }
|
||||
|
||||
static readonly uint[] s_ControlBlock = {
|
||||
0x9C91BADF, 0x8B8F868D, 0xDF919096, 0x8B91909C, 0xDF93908D, 0x9C90939D, 0xD2D2DF94, 0x9E8BACDF,
|
||||
0x9E9C968B, 0xDF869393, 0x9BDF8D90, 0x929E9186, 0x939E9C96, 0xDFD38693, 0x9A8D969B, 0x86938B9C,
|
||||
0xDF8D90DF, 0x969B9196, 0x8B9C9A8D, 0xDFD38693, 0x91968C8A, 0x978BDF98, 0x8FDF8C96, 0x8D98908D,
|
||||
0x9EDF929E, 0x90D09B91, 0x939DDF8D, 0xDF949C90, 0x92908D99, 0x978B90DF, 0x8FDF8D9A, 0x8D98908D,
|
||||
0xDF8C929E, 0x93939688, 0xDF9A9DDF, 0x9A939396, 0xDF939E98, 0x8BDF869D, 0x93DF9A97, 0x919A9C96,
|
||||
0x9EDF9A8C, 0x9A9A8D98, 0x8B919A92, 0x4E7DDFD1, 0x897C337D, 0xB07C727C, 0x7F7C767C, 0x8A7C1D7D,
|
||||
0x9D7C727C, 0x0F7DB17C, 0x3C6FBE7E, 0x3A7DB66C, 0x157D5F7D, 0xB66C516C, 0x5F7D3A7D, 0xBE7E157D,
|
||||
0x256F436D, 0x3A7DB66C, 0x157D5F7D, 0x256F2B75, 0x3A7DB66C, 0x157D5F7D, 0x436EBE7E, 0x897C337D,
|
||||
0xB07C727C, 0x7F7C767C, 0x187D567D, 0x5D7D8F68, 0x4E7D167D, 0x327D397D, 0xBC7C767C, 0x6C7CA57C,
|
||||
0x367DA77C, 0x177D197D, 0x497D2974, 0x157D187D, 0x5D7D3B7D, 0x487D237D, 0xBCF5BD7E, 0x8D868F90,
|
||||
0x8B979896, 0xD6BCD7DF, 0xCECFCDDF, 0xBEB4DFCF, 0xBEDFD1B6, 0x8DDF9393, 0x8B979896, 0x9A8DDF8C,
|
||||
0x898D9A8C, 0xF5D19B9A, 0x7D5F7DF5, 0x7D816C16, 0x7E056C33, 0x7D936FBE, 0x73267755, 0x76337D9F,
|
||||
0x7D576A09, 0x6E346C36, 0x6F306AAD, 0x7E4A7D98, 0x770371BE, 0x6F337D32, 0x7DA77E93, 0x718C740F,
|
||||
0x7D487DBA, 0x7D397D16, 0x715B7D5D, 0x7D707369, 0x7DB17455, 0x7E427D54, 0x936FF5BD, 0x327D397D,
|
||||
0x507D567D, 0x157D5C68, 0x8F71427D, 0x306A367D, 0x4A7D9A68, 0x557D377D, 0x1F7D187D, 0x0A73BE7E,
|
||||
0xB776167D, 0x62710F7D, 0xBE7E407D, 0x1C70556C, 0x0A73367D, 0x0F7D2968, 0x5D7D076A, 0x447D427D,
|
||||
0x8F71337D, 0xA96C327D, 0x0F7D9871, 0x636E856E, 0x467D4C7D, 0xBD7E427D, 0x7D936FF5, 0x71A96C55,
|
||||
0x7D397D98, 0x6F177D37, 0x700F7D93, 0x7E5B7DAF, 0x7D447DBD, 0x7D327D15, 0x7D167D23, 0x7D936F3A,
|
||||
0x69B67033, 0x730F7D69, 0x7D5971A4, 0x7D3B7D4A, 0x7D167D5D, 0x7D337D56, 0x7D5B7D19, 0x730A7337,
|
||||
0x7D3A7D96, 0x7D5F7D1F, 0x7E427D3E, 0x6FF5F5BD, 0x6A557D93, 0x7D447630, 0x76427D4A, 0x6A507D44,
|
||||
0x70337D57, 0x7D9C6DA8, 0x7D59680F, 0xDF167D5D, 0x336EAC7D, 0x4476337D, 0x576A507D, 0x7EDF327D,
|
||||
0x7C8B7C88, 0x7CA47EB7, 0x7CBC7C88, 0x7CBA7C72, 0xDF877EA6, 0x4369397D, 0x177D1970, 0x9A75BE7E,
|
||||
0x367DA77E, 0xBE7C327D, 0x767C8A7C, 0x7F7C917C, 0xA96C337D, 0x337D9871, 0x0F7D4369, 0x4A7D5A75,
|
||||
0x5D7D3B7D, 0xBD7E427D, 0x7D216BF5, 0x7D557D18, 0x7D4E7D38, 0x73187D56, 0x7E157D44, 0x7D4276BE,
|
||||
0x6C256933, 0x710F7DB6, 0x7D3E7D62, 0x7D936F3B, 0x7DAF700F, 0x7D337D5B, 0x7D9C7E56, 0x7D157D44,
|
||||
0x7D237D32, 0x7D556A41, 0x7D187D56, 0x7E5D7D37, 0x417DF5BD, 0xBE7E557D, 0x196E6071, 0x447D367D,
|
||||
0x2777337D, 0x487D836A, 0x547D287D, 0x2272496E, 0xBE7E327D, 0x337D936F, 0xBA755D6F, 0x9C670F7D,
|
||||
0x3B7D207D, 0x3E7D5D7D, 0xBD7E427D, 0x7D1B7DDF, 0x7D527D3E, 0x7D397D17, 0x7E557D41, 0x719275BE,
|
||||
0x7E367D3F, 0x7DF5F5BD, 0x7D4A7D44, 0x6A09763B, 0x7D427D57, 0x7D557D40, 0x7D427D1F, 0x6B487D18,
|
||||
0x7D3A6995, 0x6F187D56, 0x7DBA755D, 0x7D81740F, 0x7D427D5B, 0x7E367D20, 0x732677BE, 0x68367D9F,
|
||||
0x73407D58, 0x7D567D03, 0x69167D59, 0x6FBF697D, 0x7D927112, 0x6F18770F, 0x7D487D53, 0x76887516,
|
||||
0x6F557D7F, 0x7D586822, 0x7D157D4C, 0xF5BD7E16, 0x337D447D, 0x7F768875, 0x4C74367D, 0x397D8B71,
|
||||
0x3B7D4A7D, 0x936F1A71, 0x557D0973, 0x317D3B73, 0x427D157D, 0x447D9C7E, 0x567D4E7D, 0x576A187D,
|
||||
0x327D1573, 0x237D9171, 0xBD7E167D, 0xE418F5F5, 0x5855C1E9, 0x0F7B077A, 0xA3587DF1, 0xD8245F50,
|
||||
0xAA38C449, 0xB2E5B613, 0x10D3855C, 0xECAABBA2, 0xA5B0D57F, 0xF4F9A753, 0x6B1B173B, 0xEC955CD0,
|
||||
0x7BD4C507, 0x55952A45, 0x3628D124, 0x5EB27966, 0xF3FC4226, 0x0E9E1724, 0x40F9F8AA, 0x776B886C,
|
||||
0x7598325A, 0x1DC64A71, 0x6D1F874C, 0x5B812BA2, 0x5D793B23, 0x98D4DE2B, 0xD3F4568C, 0x4BA1B8BA,
|
||||
0x730BADCD, 0xC748FD9A, 0xE7157887, 0x7729E399, 0xE967E416, 0xFA2B7FD2, 0xC3D08FAB, 0xF7DBF012,
|
||||
0xBB7345A4, 0x75D0C47E, 0xC18DF4A6, 0xDBF614F1, 0x4D9F0588, 0x56F40E9C, 0xAB27708F, 0xB5AD30B1,
|
||||
0xFC3B4413, 0x3BC84DDA, 0x01CCC334, 0xEF5F1A43, 0xE596EC03, 0x7B39364C, 0x9242B02A, 0x1C532415,
|
||||
0x67C4E337, 0xD4FD4395, 0x2E80AC3C, 0x5A491010, 0x50BC0A3A, 0x1663BE1E, 0xE9E632DB, 0xEBC86067,
|
||||
0x9490B21A, 0x293EFEC1, 0x38F45171, 0x5AC44996, 0xD401738D, 0x7C81AB7D, 0xA0C2D8ED, 0xA2423B69,
|
||||
0x38E70130, 0x60046F9F, 0x7A6D2E84, 0xEACBD890, 0x653C6007, 0xC1A63D7C, 0x1184AC97, 0xBAA3731C,
|
||||
0x75F6ECDD, 0xCB228299, 0x4FAE4014, 0xC5863B64, 0xB1750EB1, 0xF3CA715E, 0x3354A77A, 0x9C3AA37D,
|
||||
0xEAD8E9ED, 0x15ABE5C6, 0xFA667916, 0xBDD94BD5, 0x181C2E7E, 0x90662F5E, 0xE877AD75, 0xC77ED233,
|
||||
0x6D67CAE9, 0x986B1D6A, 0x5E70CE82, 0x9365CB3F, 0xCD9DF4BD, 0x2B1D3D79, 0x904DCCE5, 0xFA594694,
|
||||
0x8923605A, 0x395BEB43, 0xC4115B86, 0x8375BF0D, 0x8465ECBB, 0x1A6C48C1, 0x43B292FF, 0x0059F91F,
|
||||
0x1B7F7220, 0x1AE08F4E, 0xF70BDC41, 0x844294B6, 0x3F787DFF, 0xEC1040F7, 0x19FFB6E5, 0x4E4E2C80,
|
||||
0x0114CB07, 0x760C64F0, 0x791FB43B, 0x3BAE624D, 0x69C58E7C, 0x4AFE7A9C, 0x96F85CB7, 0xB7C3B5DE,
|
||||
0x18BBDC5B, 0x792AEEFF, 0xFFA7C7E8, 0x2A8C40BF, 0x897E7E14, 0x1DDB7D94, 0xD78E63BF, 0x691C84A1,
|
||||
0x92B73490, 0xC54530B8, 0x9317A22A, 0x79556E27, 0x91782C90, 0x0835C7B9, 0x671E98C5, 0x3DEBCC47,
|
||||
0xA1668E99, 0xEEC12A48, 0x3C633E4D, 0x93F31999, 0xA57D1F2A, 0x49C707C9, 0xCC7EF17B, 0x99C0767B,
|
||||
0x762620D5, 0x1FDF0544, 0x827AD289, 0xDBF9AD6A, 0x8B797E54, 0xDBB85373, 0xFA85E56F, 0xA1122BA8,
|
||||
0x97CCCEFA, 0x419B5700, 0xC33601D3, 0x22B67C56, 0x501E97FF, 0xF8DB804E, 0x4D2411AC, 0x92D9FD1F,
|
||||
0x3A9EE6C1, 0xFCB0F37D, 0x5CED169D, 0x53383B8A, 0x230539F6, 0x6F3ECFB2, 0xA33402F9, 0x96B85EA3,
|
||||
0xD289F49A, 0xDC0218D4, 0xA7F2DDB3, 0x96350399, 0x6761DC70, 0x822E2CEE, 0xC0D2B008, 0x52AB265F,
|
||||
0x4BEA6E63, 0xF3E2E0DD, 0x5834CACC, 0x52D3B1D6, 0x35E5E5A3, 0x6B203081, 0x57BE6FFA, 0xAA6BEEBB,
|
||||
0x0198F5E6, 0xE9CC50EC, 0x9DBCC1EF, 0x0361D842, 0xA63EF46C, 0x52795D93, 0x187BCD57, 0xAC71B9CC,
|
||||
0x6867ACDA, 0xC17A2CFF, 0x28910F0D, 0xE79B4A75, 0x3E86E729, 0x47C6F6F9, 0x9DF62818, 0xC18D3742,
|
||||
0xE0C6DA5E, 0x8DE1A1C1, 0xFCB72DF0, 0xF7E94544, 0x1C8387A1, 0x5D03A736, 0x9C36079E, 0x003D1208,
|
||||
0x4A4138D1, 0x1BA18B5A, 0xD21A12E3, 0x456EE383, 0x4BE5F876, 0x8E57C676, 0x37C08E87, 0x3A7DA308,
|
||||
0x3CDEE98D, 0xD4C9BEAE, 0x97575F9B, 0x538B27B0, 0x54D94CCA, 0x3F552A60, 0x0F948D70, 0xEE2FABD5,
|
||||
0x80A23AC9, 0x8C100E3B, 0x6B72A328, 0x9BCC54F6, 0x780BCE78, 0x87BBD3DE, 0xFB504FCF, 0xC6382CB0,
|
||||
0xB4FBF823, 0x141C79AC, 0x126F2695, 0xD72998A9, 0x2BC00748, 0x2085DC6E, 0xD4FA4D06, 0x27260F04,
|
||||
0xF58698BD, 0x7BBE1AEA, 0x96CC1F2D, 0x6B46CA1C, 0x34A76FED, 0x0A6A8E3D, 0x5D59EA75, 0x26E2EE3A,
|
||||
0x2FCAFEDD, 0xF932B777, 0xA4A521A5, 0x9733C1DF, 0x5CB15407, 0xE94BADB7, 0x745B46A4, 0xFD928A77,
|
||||
0xE94AF9FC, 0xA3E29101, 0x9A2EF61C, 0x45ABFE9B, 0xE9F3F322, 0x91FA7AAE, 0xE32F6E9D, 0x2999137B,
|
||||
0x00860239, 0x3972E7C5, 0xC01A6D6E, 0xA0D7EE25, 0xF8464535, 0x11F0B1B4, 0x716CC952, 0xD08375B1,
|
||||
0x96689233, 0x3AC4A6AA, 0x4B19E877, 0x4A0B3B11, 0x56EBFF25, 0xA5E43B88, 0x51C77810, 0x42CC87C3,
|
||||
0xF18A4BF4, 0x9E64D1B3, 0x6B434AEA, 0x55D5FB0D, 0x88BF9190, 0x644A1B81, 0xA16F7022, 0x0F98CC43,
|
||||
0x581F3B61, 0xCBCC9B1E, 0xBDE1B266, 0xEC841EF2, 0x154CDA14, 0x8FF283B6, 0xFB137A90, 0x717BC3B3,
|
||||
0x8EC4AF5C, 0x4120B228, 0xCAA4988B, 0x768E8127, 0xEB559275, 0xA7041EB7, 0xE8C93ECD, 0x7E32997E,
|
||||
0x2FA7DC83, 0x3DF2C2B7, 0x15BB634F, 0x1958BF3F, 0x65DF5D2C, 0xA66814C2, 0x575760B6, 0xF7B663CD,
|
||||
0x855F25E0, 0xBA7EF0E0, 0x9150B418, 0x94712BE7, 0x0DC59CD4, 0x4442BBC0, 0x3AEDFF17, 0x5B3F77C4,
|
||||
0x159EE967, 0xCB3C9060, 0x19FAE916, 0x63D6D989, 0x92929D3B, 0xE46003C6, 0xEA68B9A7, 0x23AD12E4,
|
||||
0x1214B44B, 0xC1648E24, 0xB7FC4DE8, 0x40AEC48D, 0x6919D7D8, 0xC67D0795, 0xDE108587, 0x87D0D1C8,
|
||||
0x09EEFB3A, 0x2B868642, 0x1D028503, 0xFC5D4883, 0x2AE0411F, 0xD381601B, 0xF7A93597, 0xE8A03AC9,
|
||||
0x02C2A33D, 0xB15C8E7E, 0xBE6AA25E, 0x5A8427AB, 0x1EBFFA40, 0xB38DA2BF, 0x96746A32, 0x8505923B,
|
||||
0x55D539FB, 0xE8236816, 0xB5F8732A, 0x136EE66F, 0x78D48F56, 0x3902102A, 0x541D818E, 0xC78FD59E,
|
||||
0xC25548D4, 0x61FCC207, 0xCCA00282, 0x22D47064, 0xD8717B69, 0x649B521B, 0xC87EB1CD, 0x548C426D,
|
||||
0xA81E88A7, 0x690C88E7, 0x373E1371, 0xAA985E4E, 0xDA9A5FED, 0xF0EDD3FE, 0xF5599E10, 0xFF883063,
|
||||
0xCF769B7C, 0x7A1E8EF9, 0x962FDBEA, 0xAC0C4619, 0x046D6042, 0xC44CE77F, 0xFA212720, 0x456890D3,
|
||||
0xFDD4905A, 0xE9DB583D, 0x87C8E54E, 0xD2ABEBB0, 0xCBF048B4, 0x7148C0B1, 0x60B19AC3, 0xE1BC946D,
|
||||
0x6594A1B4, 0xB6A7151E, 0xE0CC2D6B, 0x055E77BB, 0x9E3BD179, 0x491AF6E6, 0x2F619C2F, 0x3915A45C,
|
||||
0xA3120756, 0x1F255C43, 0x292AE6F8, 0x29B8D74A, 0x5ACFEFB6, 0xC5BA661D, 0x5A8792EF, 0x8FEB6B0B,
|
||||
0x02272389, 0x8D520780, 0xC0BC3669, 0xDF085DDD, 0xC4CA84C9, 0x8DDCD1EC, 0x3D13DD8F, 0xD1E57ACB,
|
||||
0xF59544D5, 0x94D4D743, 0x0289E632, 0xF35BBE5C, 0xA2C44D91, 0x040E29AA, 0xB591F756, 0xA914C2AF,
|
||||
0x314E752A, 0x87223AB8, 0x4A0244ED, 0x0D6A13A0, 0xA254C0C4, 0x393A5AA7, 0x0808D977, 0x3C071C72,
|
||||
0x91AA7DE6, 0x61DE1B86, 0xC916C364, 0xFF5839E8, 0x912B2504, 0x98084B62, 0xE800B711, 0xEEF8A2EC,
|
||||
0xA0029054, 0x4D049080, 0xE2B0C68A, 0x5CF4C335, 0xA5E59DC3, 0xB65B9304, 0x04E720AE, 0xCDCB56B2,
|
||||
0xA2AA3B28, 0x2EFD9A26, 0x31269C83, 0x5F7C837F, 0x93DF22DD, 0xE842E161, 0xF7A99044, 0xC3E56753,
|
||||
0xDA11F984, 0x18DDFAA3, 0x4D7C3D98, 0x2157376F, 0x499A3088, 0xFB3860FB, 0xF8B03FB7, 0xE41180BE,
|
||||
0x764302F7, 0xC5F5584D, 0xBE1E2094, 0xE4A7F906, 0x65DBEAF8, 0x2D637C7F, 0x280221A5, 0x84CC7B78,
|
||||
0xBF4679FA, 0x30548C78, 0x71A965AC, 0x7850CCE0, 0xAB4F61CE, 0xD4A77595, 0x27BB16AA, 0x70789815,
|
||||
0xEA1F2B41, 0xFE311834, 0x86211CEF, 0xECDA74A9, 0xA2BDE105, 0x01A24EA5, 0xCEFBA9BB, 0xE57BD8B8,
|
||||
0x293DE400, 0xFF339AAC, 0xF33B3FEB, 0x65C01C98, 0xF96DF494, 0x06A0032F, 0x7559633B, 0xB6E2A69C,
|
||||
0x1A8A1C14, 0xF328AB36, 0xAD93F268, 0xFAA59EFF, 0x8A9F90AF, 0xCD59ACDE, 0xDEDAF78A, 0xF4959AD9,
|
||||
0xC5F03307, 0xFE1F74E7, 0x7544D89B, 0x3898D08C, 0x1E8153F7, 0xFBDE0D1F, 0x692FB7B1, 0xF23BF8B3,
|
||||
0x32F2CA8E, 0xCA61053C, 0x78E6BE24, 0x9ED63418, 0x686EDDC5, 0x776E66C4, 0xDFF39BB8, 0x16B7ECEA,
|
||||
0xD2AE6CDB, 0x65934FA2, 0x7EFA5E61, 0xC28835FA, 0x982974F5, 0xBE142660, 0x063E9D92, 0xB81565FC,
|
||||
0x8040FF8D, 0x4E352A70, 0x3C30AFAA, 0x797F7EC5, 0xC9A58037, 0x8A0922B1, 0x93A7618C, 0x285138CF,
|
||||
0x9940569C, 0xAD842D38, 0x62A162B5, 0x224C24F5, 0xB43E0EDC, 0xD5DEF08E, 0x222D7772, 0xF6106939,
|
||||
0xE2B1007E, 0x577ADA0A, 0x0E141520, 0x4BBD9AF8, 0xFACEADEF, 0x2F61908C, 0x4FFDA94A, 0x5CE578F9,
|
||||
0x3B4447E5, 0xDE3BE0A2, 0xC6BB428A, 0xDCC8BAA0, 0x3D2C977A, 0x9AA0E03F, 0x21E08188, 0x3F0C91BC,
|
||||
0xF29132EF, 0x7F286998, 0x11C44EBB, 0xE7522002, 0xD7C96EAD, 0x8E012562, 0x0908730A, 0xF37F4819,
|
||||
0x52633625, 0xA1DF4D9C, 0x5FDBDC28, 0x3DEA1F5D, 0x200014EC, 0x759435DF, 0x29374D1A, 0x64F674E5,
|
||||
0xDEEC207E, 0xEC59FC6E, 0x3DC7C9F1, 0x5C0DCB08, 0x5DEEA73F, 0x206D61CC, 0xC61BCC70, 0xBCD25371,
|
||||
0x1ADB2A5A, 0x306A635C, 0x22B85F64, 0x9A611F9B, 0xEC55AFAF, 0x5F8215E8, 0xECFA67AE, 0xB36181B8,
|
||||
0x73DCCC09, 0xE9A281CB, 0x849FC579, 0xFB4CF7A8, 0x19B911B2, 0xED4DE9A3, 0xCA9952B1, 0xAA9D83E3,
|
||||
0xF3863991, 0xD2D0EAFF, 0x12130B23, 0x0F6E966E, 0xAC889E14, 0x72F1A314, 0x413AAFD8, 0x606C1FC5,
|
||||
0x8D9E90FC, 0xCE6CCE66, 0x7A6E8096, 0x2491FE56, 0x27C9E2A3, 0xBFEBEF50, 0x69B84656, 0x3E5FD2E0,
|
||||
0x36524CF8, 0x21DC206C, 0xD6F2AD6C, 0x20F09DF7, 0x3D82A566, 0xD5F8BEAA, 0x8C5B62CF, 0x6AC5DAE0,
|
||||
0x4A7E53E6, 0xB53036B9, 0x58FB09B0, 0xD96C0BE2, 0x7636A0D0, 0xEE0E675E, 0x99AAF6E2, 0xB7270E1C,
|
||||
0x1369474E, 0xB5E5995F, 0xA1E635D4, 0x1D57DF67, 0xDBD1E043, 0xF2CF6D16, 0x41D39259, 0x22EE5E19,
|
||||
0x565609E6, 0xC5244ADF, 0xCE084F3C, 0x2AAC5970, 0xF16EE209, 0x72CDD167, 0xDEC3F17A, 0x66D87D56,
|
||||
0x4507638F, 0xC6D2C821, 0x38A4A132, 0xA6542711, 0x159060A8, 0xC040C052, 0xF6D3CC7B, 0xE9E55492,
|
||||
0x7DD5FB28, 0x4710BECF, 0x64A911F0, 0xB8E13220, 0xA36C4FA8, 0x5650D1C4, 0xFD788567, 0x3C9E8C71,
|
||||
0x9807B47A, 0xAF2AC13C, 0x3271B069, 0x6D24D008, 0xF51C1066, 0x0B50DB66, 0x50A06E4B, 0xE07BB80C,
|
||||
0x9DA46F2B, 0x145B24D6, 0x7D020D90, 0xC42AB2E4, 0x3DBAADAD, 0xE14F9B5F, 0x4BBA116D, 0xBB8B4860,
|
||||
0xFBD7245C, 0xC787A549, 0xA04FE281, 0x63A975DA, 0x5ADEB3C8, 0x9818807E, 0xB31E37FF, 0xB6DE1529,
|
||||
0xA1404B6B, 0x46FFE0BC, 0x4FC6D385, 0x9EC773BF, 0x6807D5A6, 0xEBA12141, 0xBC5094A1, 0xA2AEB853,
|
||||
0x692218A3, 0x38C05882, 0xEA53C30F, 0x06D23FFD, 0xFE64336C, 0xD2CF8252, 0x45C037DD, 0x3E60B4DD,
|
||||
0xC9831838, 0x0481D31B, 0x8D7B4FC3, 0x5808AE40, 0xA20EDC61, 0x6FAFE585, 0xD60C1DAA, 0xF357B98B,
|
||||
0x2153C6CC, 0x3A3BFD31, 0xD260836A, 0x7A4FFB2F, 0x72CA0680, 0xC13EF5DD, 0xB8BB7C6A, 0xD810F198,
|
||||
0xCFEB5A3D, 0x178B319D, 0x3E22934E, 0x42CCC19C, 0xF9C9E86B, 0xF4A10A85, 0x5D51C9BC, 0xBEF6356C,
|
||||
0x1D654666, 0xC6014560, 0xF0293175, 0x6EDF8384, 0xBF6AE2C2, 0x6E6CF958, 0xE35065BC, 0x73FDC61B,
|
||||
0xC0026A7B, 0xD8548B7A, 0x75106D00, 0xBC138512, 0x3876C161, 0xC45D44A9, 0x25A48AAE, 0xB45826E6,
|
||||
0x6B75FF9E, 0x63AB03A8, 0x56442D69, 0xD362721D, 0x43313F10, 0x3270858C, 0xABE62F09, 0x53973FB9,
|
||||
};
|
||||
}
|
||||
|
||||
/* CxEncryption base branch order
|
||||
|
@ -4,6 +4,6 @@
|
||||
xmlns:fmt="clr-namespace:GameRes.Formats.KiriKiri"
|
||||
xmlns:p="clr-namespace:GameRes.Formats.Properties"
|
||||
MaxWidth="250">
|
||||
<ComboBox Name="Scheme" ItemsSource="{Binding Source={x:Static fmt:Xp3Opener.KnownSchemes}, Path=Keys, Mode=OneWay}"
|
||||
<ComboBox Name="Scheme" ItemsSource="{Binding}"
|
||||
SelectedValue="{Binding Source={x:Static p:Settings.Default}, Path=XP3Scheme, Mode=TwoWay}" Width="180"/>
|
||||
</Grid>
|
||||
|
@ -1,10 +1,10 @@
|
||||
using System.Windows;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using GameRes.Formats.KiriKiri;
|
||||
using GameRes.Formats.Properties;
|
||||
using GameRes.Formats.Strings;
|
||||
|
||||
|
||||
namespace GameRes.Formats.GUI
|
||||
{
|
||||
/// <summary>
|
||||
@ -15,8 +15,10 @@ namespace GameRes.Formats.GUI
|
||||
public WidgetXP3 ()
|
||||
{
|
||||
InitializeComponent();
|
||||
if (null == Scheme.SelectedItem)
|
||||
Scheme.SelectedItem = arcStrings.ArcNoEncryption;
|
||||
var keys = new string[] { arcStrings.ArcNoEncryption };
|
||||
Scheme.ItemsSource = keys.Concat (Xp3Opener.KnownSchemes.Keys.OrderBy (x => x));
|
||||
if (-1 == Scheme.SelectedIndex)
|
||||
Scheme.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
public ICrypt GetScheme ()
|
||||
|
@ -54,6 +54,7 @@ namespace GameRes.Formats.Lucifen
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class EncryptionScheme
|
||||
{
|
||||
public LpkOpener.Key BaseKey;
|
||||
@ -62,6 +63,13 @@ namespace GameRes.Formats.Lucifen
|
||||
public bool ImportGameInit;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class LpkScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, EncryptionScheme> KnownSchemes;
|
||||
public Dictionary<string, Dictionary<string, LpkOpener.Key>> KnownKeys;
|
||||
}
|
||||
|
||||
internal class LuciOptions : ResourceOptions
|
||||
{
|
||||
public string Scheme;
|
||||
@ -88,6 +96,7 @@ namespace GameRes.Formats.Lucifen
|
||||
public override bool IsHierarchic { get { return false; } }
|
||||
public override bool CanCreate { get { return false; } }
|
||||
|
||||
[Serializable]
|
||||
public class Key
|
||||
{
|
||||
public uint Key1, Key2;
|
||||
@ -102,63 +111,12 @@ namespace GameRes.Formats.Lucifen
|
||||
BaseKey = new Key (0xA5B9AC6B, 0x9A639DE5), ContentXor = 0x5d, RotatePattern = 0x31746285,
|
||||
ImportGameInit = true
|
||||
};
|
||||
public static readonly Dictionary<string, EncryptionScheme> KnownSchemes =
|
||||
new Dictionary<string, EncryptionScheme> {
|
||||
{ "Default", DefaultScheme },
|
||||
{ "Terios games", new EncryptionScheme {
|
||||
BaseKey = new Key (0x39A5B67D, 0xD63AB5E9), ContentXor = 0xa6, RotatePattern = 0x36147352,
|
||||
ImportGameInit = false } },
|
||||
};
|
||||
public static Dictionary<string, EncryptionScheme> KnownSchemes = new Dictionary<string, EncryptionScheme>();
|
||||
static Dictionary<string, Dictionary<string, Key>> KnownKeys = new Dictionary<string, Dictionary<string, Key>>();
|
||||
|
||||
EncryptionScheme CurrentScheme = KnownSchemes["Default"];
|
||||
EncryptionScheme CurrentScheme = DefaultScheme;
|
||||
Dictionary<string, Key> CurrentFileMap = new Dictionary<string, Key>();
|
||||
|
||||
static Dictionary<string, Dictionary<string, Key>> KnownKeys =
|
||||
new Dictionary<string, Dictionary<string, Key>> {
|
||||
{ "Ne~pon? x Raipon!", new Dictionary<string, Key> {
|
||||
{ "SYS.LPK", new Key (0x67DB35ED, 0xBE4D6A37) },
|
||||
{ "CHR.LPK", new Key (0x9E3BAD56, 0x95FE9DC3) },
|
||||
{ "PIC.LPK", new Key (0xD9B5E6C3, 0xBA53E5D5) },
|
||||
{ "BGM.LPK", new Key (0xEB6DE3B5, 0xCD571DE9) },
|
||||
{ "SE.LPK", new Key (0x9AB3AD5E, 0xAD3D4D96) },
|
||||
{ "VOICE.LPK", new Key (0x75CBD59D, 0x5ED59ACA) },
|
||||
{ "DATA.LPK", new Key (0xDE6AD53E, 0x9E3B5E3D) },
|
||||
{ "DESKTOP.LPK",new Key (0xACD5B36D, 0xD56ADB5D) } } },
|
||||
{ "Doki Doki Rooming", new Dictionary<string, Key> {
|
||||
{ "SYS.LPK", new Key (0x8030AB96, 0xB9F6638E) },
|
||||
{ "CHR.LPK", new Key (0xA7B9178B, 0xF79C547C) },
|
||||
{ "PIC.LPK", new Key (0x34B73229, 0xB690E07D) },
|
||||
{ "BGM.LPK", new Key (0x41E7505F, 0x1E10C3C5) },
|
||||
{ "SE.LPK", new Key (0x34DF875E, 0x435603E8) },
|
||||
{ "VOICE.LPK", new Key (0x30701D73, 0xFB524CE5) },
|
||||
{ "ANIME.LPK", new Key (0x867ABB47, 0xA25F4248) },
|
||||
{ "DATA.LPK", new Key (0x5BCB1333, 0x99325DFA) } } },
|
||||
{ "Shinsetsu Ryouki no Ori Dai 2 Shou", new Dictionary<string, Key> {
|
||||
{ "SYS.LPK", new Key (0x3986AFC9, 0xFC8C32E7) },
|
||||
{ "CHR.LPK", new Key (0x1B478946, 0x489E83F9) },
|
||||
{ "PIC.LPK", new Key (0x3F9D8075, 0xA75CBDA3) },
|
||||
{ "BGM.LPK", new Key (0xEAB5949C, 0x48ABE813) },
|
||||
{ "SE.LPK", new Key (0x5A95B36B, 0x249F4BEB) },
|
||||
{ "VOICE.LPK", new Key (0x6B954634, 0xA1CF23CE) },
|
||||
{ "DATA.LPK", new Key (0x8395C7CB, 0xE4CF9E3B) } } },
|
||||
{ "Ore-tachi ni Tsubasa wa Nai", new Dictionary<string, Key> {
|
||||
{ "SYS.LPK", new Key (0x524657EA, 0x782B5A5C) },
|
||||
{ "CHR.LPK", new Key (0x8C982BCA, 0x46BC4CDD) },
|
||||
{ "PIC.LPK", new Key (0xB78C913C, 0x57ECB345) },
|
||||
{ "BGM.LPK", new Key (0x45E32E7D, 0x4F538CE3) },
|
||||
{ "SE.LPK", new Key (0x9A5AF6DE, 0xCB1866C7) },
|
||||
{ "VOICE.LPK", new Key (0x3EB61D34, 0xB451AB16) },
|
||||
{ "DATA.LPK", new Key (0x7CE5AC6A, 0x49A3A35B) } } },
|
||||
{ "Shuffle! Essence+", new Dictionary<string, Key> {
|
||||
{ "SYS.LPK", new Key (0xA3635FC4, 0xA14A4686) },
|
||||
{ "CHR.LPK", new Key (0x4E34463C, 0xB4D8BD6D) },
|
||||
{ "PIC.LPK", new Key (0xF592B54B, 0xACCD3A1C) },
|
||||
{ "BGM.LPK", new Key (0xC50D2FD6, 0xC89DE7A9) },
|
||||
{ "SE.LPK", new Key (0xE9CD4E1B, 0x98AD9D63) },
|
||||
{ "VOICE.LPK", new Key (0x865A8D4E, 0x742DA395) },
|
||||
{ "DATA.LPK", new Key (0xCEA56246, 0xDE46F9A6) } } },
|
||||
};
|
||||
|
||||
public override ArcFile TryOpen (ArcView file)
|
||||
{
|
||||
string name = Path.GetFileName (file.Name).ToUpperInvariant();
|
||||
@ -411,6 +369,22 @@ namespace GameRes.Formats.Lucifen
|
||||
}
|
||||
return KnownSchemes[title];
|
||||
}
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new LpkScheme { KnownSchemes = KnownSchemes, KnownKeys = KnownKeys }; }
|
||||
set
|
||||
{
|
||||
var scheme = (LpkScheme)value;
|
||||
KnownSchemes = scheme.KnownSchemes;
|
||||
KnownKeys = scheme.KnownKeys;
|
||||
foreach (var key in KnownSchemes.Keys)
|
||||
{
|
||||
if (null == KnownSchemes[key])
|
||||
KnownSchemes[key] = DefaultScheme;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal class IndexReader
|
||||
|
@ -51,6 +51,12 @@ namespace GameRes.Formats.Majiro
|
||||
public string Password;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class RctScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, string> KnownKeys;
|
||||
}
|
||||
|
||||
[Export(typeof(ImageFormat))]
|
||||
public class RctFormat : ImageFormat
|
||||
{
|
||||
@ -60,12 +66,13 @@ namespace GameRes.Formats.Majiro
|
||||
|
||||
public bool OverlayFrames = true;
|
||||
|
||||
public static readonly Dictionary<string, string> KnownKeys = new Dictionary<string, string> {
|
||||
{ "Akatsuki no Goei", "おぬぐり食べる?" },
|
||||
{ "Amber Quartz", "夕焼け。学校の屋上。そこに伸びる二つの影。" },
|
||||
{ "Nagisa no", "青い空に向かって、溜息を一つこぼす。" },
|
||||
{ "White ~blanche comme la lune~", "たった3枚の紙" },
|
||||
};
|
||||
public static Dictionary<string, string> KnownKeys = new Dictionary<string, string>();
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new RctScheme { KnownKeys = KnownKeys }; }
|
||||
set { KnownKeys = ((RctScheme)value).KnownKeys; }
|
||||
}
|
||||
|
||||
public override ImageMetaData ReadMetaData (Stream stream)
|
||||
{
|
||||
|
@ -117,6 +117,12 @@ namespace GameRes.Formats.Malie
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class LibScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, uint[]> KnownKeys;
|
||||
}
|
||||
|
||||
[Export(typeof(ArchiveFormat))]
|
||||
public class DatOpener : ArchiveFormat
|
||||
{
|
||||
@ -268,44 +274,12 @@ namespace GameRes.Formats.Malie
|
||||
return Math.Min (length, read-offset_pad);
|
||||
}
|
||||
|
||||
public static readonly IReadOnlyDictionary<string, uint[]> KnownKeys = new Dictionary<string, uint[]>()
|
||||
public static Dictionary<string, uint[]> KnownKeys = new Dictionary<string, uint[]>();
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
{ "Paradise Lost", new uint[] {
|
||||
0x745A5511, 0xFC188446, 0x6729696A, 0xB7C80D5E, 0x9AA598A4, 0xB8331AAC, 0xBD2B2BA7, 0x28A3BC2C,
|
||||
0x06AF3A2D, 0x2A88FE0C, 0x42233394, 0xB4B55BE4, 0xDE164D52, 0xCC525C19, 0x8D565E95, 0x95D39451,
|
||||
0xCA28EF0B, 0x26A96629, 0x2E0CC6AB, 0x2F4ACAE9, 0x2D2D56F9, 0x01ABCE8B, 0x4AA23F83, 0x1088CCE5,
|
||||
0x99CA5A5A, 0xADF20357, 0xB3149706, 0x635597A5, 0x2F4ACAE9, 0xCA28EF0B, 0x26A96629, 0x2E0CC6AB,
|
||||
0x42233394, 0xB4B55BE4, 0x06AF3A2D, 0x2A88FE0C, 0xFC188446, 0x6729696A, 0xB7C80D5E, 0x745A5511,
|
||||
0xB8331AAC, 0xBD2B2BA7, 0x28A3BC2C, 0x9AA598A4, 0xAA23F831, 0x088CCE52, 0xD2D56F90, 0x1ABCE8B4,
|
||||
0x31497066, 0x35597A56, 0x574E5147, 0x7859354B,
|
||||
} },
|
||||
{ "Kajiri Kamui Kagura Premier Trial", new uint[] { // 神咒神威神楽 超先行 体験版
|
||||
0x146EB6BB, 0xED25AA5F, 0x289548E2, 0x097772BB, 0xBAABAC37, 0xB3A93919, 0x2335262B, 0x983BB0A0,
|
||||
0xB95D8A37, 0x5B5DF692, 0xD52F944A, 0xA47104BB, 0xD8505D55, 0xD61BD9D4, 0x9C8C919A, 0x9315CC1D,
|
||||
0xE60EEC28, 0x2EAAEB0D, 0xECEA4E46, 0x48CD498A, 0xA91C412E, 0xEE57628D, 0xD6D77DA4, 0xB54BE512,
|
||||
0xCA255238, 0x825DDCAE, 0x7586F675, 0x27232466, 0x48CD498A, 0xE60EEC28, 0x2EAAEB0D, 0xECEA4E46,
|
||||
0xD52F944A, 0xA47104BB, 0xB95D8A37, 0x5B5DF692, 0xED25AA5F, 0x289548E2, 0x097772BB, 0x146EB6BB,
|
||||
0xB3A93919, 0x2335262B, 0x983BB0A0, 0xBAABAC37, 0x6D77DA4B, 0x54BE512A, 0x91C412EE, 0xE57628DD,
|
||||
0x586F6752, 0x7232466A, 0x4C573077, 0x61417557,
|
||||
} },
|
||||
{ "Zettai Meikyuu Grimm", new uint[] { // 絶対迷宮グリム・ディレクターズカット版
|
||||
0x4E7821AE, 0xA80DC2D4, 0x8609511B, 0xF13BF262, 0x2EAD1925, 0x22AB3F33, 0x21AE9614, 0xB5BB16A6,
|
||||
0xF931273C, 0x10D75406, 0xE16A4304, 0xA88DF89D, 0x8B531756, 0x8C929155, 0x9F9990D7, 0x4B0A5ADD,
|
||||
0x2D6EC5A9, 0x8BAB4649, 0x48AACFCC, 0xC86BA585, 0x2A237E27, 0x7E4C49CF, 0x0435D501, 0xB85A90C1,
|
||||
0x21825446, 0xFC4EFC98, 0xA324A455, 0x67E66435, 0xC86BA585, 0x2D6EC5A9, 0x8BAB4649, 0x48AACFCC,
|
||||
0xE16A4304, 0xA88DF89D, 0xF931273C, 0x10D75406, 0xA80DC2D4, 0x8609511B, 0xF13BF262, 0x4E7821AE,
|
||||
0x22AB3F33, 0x21AE9614, 0xB5BB16A6, 0x2EAD1925, 0x435D501B, 0x85A90C12, 0xA237E277, 0xE4C49CF0,
|
||||
0x324A4556, 0x7E66435D, 0x2C296B76, 0x2D4C5D5A,
|
||||
} },
|
||||
{ "Dies irae", new uint[] {
|
||||
0x6F388B64, 0xBB5B3676, 0x2317DD18, 0x7CCD3736, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x9B9B379C, 0x45B25DAD, 0x9B3B118B, 0xEE8C3E66, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFBA30F99, 0xA6E6CDE7, 0x116C976B, 0x66CEC462,
|
||||
0x88C5F746, 0x1F334DCD, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x9B3B118B, 0xEE8C3E66, 0x9B9B379C, 0x45B25DAD, 0xBB5B3676, 0x2317DD18, 0x7CCD3736, 0x6F388B64,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x16C976B6, 0x6CEC462F, 0xBA30F99A, 0x6E6CDE71,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
} },
|
||||
};
|
||||
get { return new LibScheme { KnownKeys = KnownKeys }; }
|
||||
set { KnownKeys = ((LibScheme)value).KnownKeys; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -50,6 +50,12 @@ namespace GameRes.Formats.Marble
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class MblScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, string> KnownKeys;
|
||||
}
|
||||
|
||||
[Export(typeof(ArchiveFormat))]
|
||||
public class MblOpener : ArchiveFormat
|
||||
{
|
||||
@ -150,13 +156,13 @@ namespace GameRes.Formats.Marble
|
||||
}
|
||||
}
|
||||
|
||||
public static Dictionary<string, string> KnownKeys = new Dictionary<string, string> {
|
||||
{ arcStrings.ArcDefault, "" },
|
||||
{ "Chikatetsu Fuusa Jiken", "naze" }, // 地下鉄封鎖事件
|
||||
{ "Eien no Owari ni", "eientamasoft" }, // 永遠の終わりに
|
||||
{ "Sakura Machizaka Stories", "sakura桜" }, // 桜待坂Stories vol.1/vol.2
|
||||
{ "Trouble Succubus", "とらぶるサッキュバス-0928-2007" }, // とらぶるサッキュバス
|
||||
};
|
||||
public static Dictionary<string, string> KnownKeys = new Dictionary<string, string>();
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new MblScheme { KnownKeys = KnownKeys }; }
|
||||
set { KnownKeys = ((MblScheme)value).KnownKeys; }
|
||||
}
|
||||
|
||||
public override Stream OpenEntry (ArcFile arc, Entry entry)
|
||||
{
|
||||
|
@ -9,7 +9,7 @@
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<ComboBox Name="EncScheme" Grid.Row="0" Margin="0,3,0,0" Width="180" HorizontalAlignment="Right"
|
||||
ItemsSource="{Binding Source={x:Static m:MblOpener.KnownKeys}, Mode=OneWay}"
|
||||
ItemsSource="{Binding}"
|
||||
DisplayMemberPath="Key" SelectedValuePath="Value"
|
||||
SelectedValue="{Binding ElementName=PassPhrase, Path=Text, Mode=TwoWay}"/>
|
||||
<TextBox Name="PassPhrase" Grid.Row="1" Margin="0,3,0,3" Width="{Binding ElementName=EncScheme, Path=ActualWidth}" HorizontalAlignment="Right"
|
||||
|
@ -1,4 +1,8 @@
|
||||
using System.Windows.Controls;
|
||||
using GameRes.Formats.Marble;
|
||||
using GameRes.Formats.Strings;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace GameRes.Formats.GUI
|
||||
{
|
||||
@ -10,6 +14,10 @@ namespace GameRes.Formats.GUI
|
||||
public WidgetMBL ()
|
||||
{
|
||||
InitializeComponent ();
|
||||
var keys = new[] { new KeyValuePair<string, string> (arcStrings.ArcDefault, "") };
|
||||
EncScheme.ItemsSource = keys.Concat (MblOpener.KnownKeys);
|
||||
if (-1 == EncScheme.SelectedIndex)
|
||||
EncScheme.SelectedIndex = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -56,6 +56,12 @@ namespace GameRes.Formats.NScripter
|
||||
public string Password { get; set; }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class NsaScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, string> KnownKeys;
|
||||
}
|
||||
|
||||
public enum Compression
|
||||
{
|
||||
Unknown = 256,
|
||||
@ -70,19 +76,19 @@ namespace GameRes.Formats.NScripter
|
||||
{
|
||||
public override string Tag { get { return "NSA"; } }
|
||||
|
||||
public static readonly Dictionary<string, string> KnownKeys = new Dictionary<string, string>()
|
||||
{
|
||||
{ "Kimi ga Aruji de Shitsuji ga Ore de",
|
||||
"kopkl;fdsl;kl;mwekopj@pgfd[p;:kl:;,lwret;kl;kolsgfdio@pdsflkl:,rse;:l,;:lpksdfpo" },
|
||||
{ "Kiss yori Amakute Fukai Mono",
|
||||
"dfklmdsgkmlkmljklgfnlsdfnklsdfjkl;sdfmkldfskfsdmklsdfjklfdsjklsdfsdfl;" },
|
||||
};
|
||||
|
||||
public NsaOpener ()
|
||||
{
|
||||
Extensions = new string[] { "nsa", "dat" };
|
||||
}
|
||||
|
||||
public static Dictionary<string, string> KnownKeys = new Dictionary<string, string>();
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new NsaScheme { KnownKeys = KnownKeys }; }
|
||||
set { KnownKeys = ((NsaScheme)value).KnownKeys; }
|
||||
}
|
||||
|
||||
public override ArcFile TryOpen (ArcView file)
|
||||
{
|
||||
List<Entry> dir = null;
|
||||
|
@ -41,26 +41,48 @@ namespace GameRes.Formats.NitroPlus
|
||||
{
|
||||
public byte[] RawName;
|
||||
public int FolderId;
|
||||
public byte[] Order;
|
||||
}
|
||||
|
||||
internal class NpaArchive : ArcFile
|
||||
{
|
||||
public NpaTitleId GameId { get; private set; }
|
||||
public EncryptionScheme Scheme { get; private set; }
|
||||
public int Key { get; private set; }
|
||||
public byte[] KeyTable { get { return m_key_table.Value; } }
|
||||
|
||||
private Lazy<byte[]> m_key_table;
|
||||
|
||||
public NpaArchive (ArcView arc, ArchiveFormat impl, ICollection<Entry> dir,
|
||||
NpaTitleId game_id, int key)
|
||||
EncryptionScheme scheme, int key)
|
||||
: base (arc, impl, dir)
|
||||
{
|
||||
GameId = game_id;
|
||||
Scheme = scheme;
|
||||
Key = key;
|
||||
m_key_table = new Lazy<byte[]> (() => NpaOpener.GenerateKeyTable (game_id));
|
||||
m_key_table = new Lazy<byte[]> (() => NpaOpener.GenerateKeyTable (scheme));
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class EncryptionScheme
|
||||
{
|
||||
public NpaTitleId TitleId;
|
||||
public uint NameKey;
|
||||
public byte[] Order;
|
||||
|
||||
public EncryptionScheme (NpaTitleId id, uint key, byte[] order)
|
||||
{
|
||||
TitleId = id;
|
||||
NameKey = key;
|
||||
Order = order;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class NpaScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string, EncryptionScheme> KnownSchemes;
|
||||
}
|
||||
|
||||
public enum NpaTitleId
|
||||
{
|
||||
NotEncrypted,
|
||||
@ -71,7 +93,7 @@ namespace GameRes.Formats.NitroPlus
|
||||
|
||||
public class NpaOptions : ResourceOptions
|
||||
{
|
||||
public NpaTitleId TitleId { get; set; }
|
||||
public EncryptionScheme Scheme { get; set; }
|
||||
public bool CompressContents { get; set; }
|
||||
public int Key1 { get; set; }
|
||||
public int Key2 { get; set; }
|
||||
@ -86,19 +108,13 @@ namespace GameRes.Formats.NitroPlus
|
||||
public override bool IsHierarchic { get { return true; } }
|
||||
public override bool CanCreate { get { return true; } }
|
||||
|
||||
/// <summary>
|
||||
/// Known encryption schemes.
|
||||
/// Order should match NpaTitleId enumeration.
|
||||
/// </summary>
|
||||
public static readonly string[] KnownSchemes = new string[] {
|
||||
arcStrings.ArcNoEncryption,
|
||||
"Chaos;Head", "Chaos;Head Trial 1", "Chaos;Head Trial 2", "Muramasa Trial", "Muramasa",
|
||||
"Sumaga", "Zoku Satsuriku no Django", "Zoku Satsuriku no Django Trial", "Lamento",
|
||||
"Sweet Pool", "Sumaga Special", "Demonbane", "MuramasaAD", "Axanael",
|
||||
"Kikokugai", "Sonicomi Trial 2", "Sumaga 3% Trial", "Sonicomi Version 1.0",
|
||||
"Guilty Crown Lost Xmas", "Guilty Crown Lost Xmas Trailer", "DRAMAtical Murder",
|
||||
"Kimi to Kanojo to Kanojo no Koi", "Phenomeno", "Nekoda -Nyanda-",
|
||||
};
|
||||
public static Dictionary<string, EncryptionScheme> KnownSchemes = new Dictionary<string, EncryptionScheme>();
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new NpaScheme { KnownSchemes = KnownSchemes }; }
|
||||
set { KnownSchemes = ((NpaScheme)value).KnownSchemes; }
|
||||
}
|
||||
|
||||
public const int DefaultKey1 = 0x4147414e;
|
||||
public const int DefaultKey2 = 0x21214f54;
|
||||
@ -118,9 +134,13 @@ namespace GameRes.Formats.NitroPlus
|
||||
if (dir_size >= file.MaxOffset)
|
||||
return null;
|
||||
|
||||
EncryptionScheme enc = null;
|
||||
var game_id = NpaTitleId.NotEncrypted;
|
||||
if (encrypted)
|
||||
game_id = QueryGameEncryption();
|
||||
{
|
||||
enc = QueryGameEncryption();
|
||||
game_id = enc.TitleId;
|
||||
}
|
||||
|
||||
int key = GetArchiveKey (game_id, key1, key2);
|
||||
|
||||
@ -161,8 +181,8 @@ namespace GameRes.Formats.NitroPlus
|
||||
}
|
||||
cur_offset += 4 + name_size + 17;
|
||||
}
|
||||
if (game_id != NpaTitleId.NotEncrypted)
|
||||
return new NpaArchive (file, this, dir, game_id, key);
|
||||
if (enc != null)
|
||||
return new NpaArchive (file, this, dir, enc, key);
|
||||
else
|
||||
return new ArcFile (file, this, dir);
|
||||
}
|
||||
@ -194,8 +214,8 @@ namespace GameRes.Formats.NitroPlus
|
||||
entry.Offset = data_offset;
|
||||
entry.UnpackedSize = (uint)size;
|
||||
Stream destination = output;
|
||||
if (NpaTitleId.NotEncrypted != npa_options.TitleId)
|
||||
destination = new EncryptedStream (output, entry, npa_options.TitleId, index.Key);
|
||||
if (null != npa_options.Scheme)
|
||||
destination = new EncryptedStream (output, entry, npa_options.Scheme, index.Key);
|
||||
try
|
||||
{
|
||||
if (entry.IsPacked)
|
||||
@ -234,7 +254,7 @@ namespace GameRes.Formats.NitroPlus
|
||||
header.Write (npa_options.Key1);
|
||||
header.Write (npa_options.Key2);
|
||||
header.Write (npa_options.CompressContents);
|
||||
header.Write (npa_options.TitleId != NpaTitleId.NotEncrypted);
|
||||
header.Write (npa_options.Scheme != null);
|
||||
header.Write (index.TotalCount);
|
||||
header.Write (index.FolderCount);
|
||||
header.Write (index.FileCount);
|
||||
@ -300,34 +320,16 @@ namespace GameRes.Formats.NitroPlus
|
||||
return key1 * key2;
|
||||
}
|
||||
|
||||
internal static byte GetKeyFromEntry (NpaEntry entry, NpaTitleId game_id, int arc_key)
|
||||
internal static byte GetKeyFromEntry (NpaEntry entry, EncryptionScheme scheme, int arc_key)
|
||||
{
|
||||
int key;
|
||||
switch (game_id)
|
||||
{
|
||||
case NpaTitleId.AXANAEL:
|
||||
case NpaTitleId.KIKOKUGAI:
|
||||
case NpaTitleId.SONICOMITR2:
|
||||
case NpaTitleId.SONICOMI:
|
||||
case NpaTitleId.LOSTX:
|
||||
case NpaTitleId.DRAMATICALMURDER:
|
||||
case NpaTitleId.PHENOMENO:
|
||||
key = 0x20101118;
|
||||
break;
|
||||
case NpaTitleId.TOTONO:
|
||||
key = 0x12345678;
|
||||
break;
|
||||
default:
|
||||
key = unchecked((int)0x87654321);
|
||||
break;
|
||||
}
|
||||
int key = (int)scheme.NameKey;
|
||||
var name = entry.RawName;
|
||||
for (int i = 0; i < name.Length; ++i)
|
||||
key -= name[i];
|
||||
|
||||
key *= name.Length;
|
||||
|
||||
if (game_id != NpaTitleId.LAMENTO) // if the game is not Lamento
|
||||
if (scheme.TitleId != NpaTitleId.LAMENTO) // if the game is not Lamento
|
||||
{
|
||||
key += arc_key;
|
||||
key *= (int)entry.UnpackedSize;
|
||||
@ -335,13 +337,9 @@ namespace GameRes.Formats.NitroPlus
|
||||
return (byte)key;
|
||||
}
|
||||
|
||||
public static byte[] GenerateKeyTable (NpaTitleId title_id)
|
||||
public static byte[] GenerateKeyTable (EncryptionScheme scheme)
|
||||
{
|
||||
int index = (int)title_id;
|
||||
if (index < 0 || index >= OrderTable.Length)
|
||||
throw new ArgumentOutOfRangeException ("title_id", "Invalid title id specified");
|
||||
|
||||
byte[] order = OrderTable[index];
|
||||
byte[] order = scheme.Order;
|
||||
if (null == order)
|
||||
throw new ArgumentException ("Encryption key table not defined", "title_id");
|
||||
|
||||
@ -363,7 +361,7 @@ namespace GameRes.Formats.NitroPlus
|
||||
table[ecx] = table[edx];
|
||||
table[edx] = tmp;
|
||||
}
|
||||
if (NpaTitleId.TOTONO == title_id)
|
||||
if (NpaTitleId.TOTONO == scheme.TitleId)
|
||||
{
|
||||
var totono_table = new byte[256];
|
||||
for (int i = 0; i < 256; ++i)
|
||||
@ -381,7 +379,7 @@ namespace GameRes.Formats.NitroPlus
|
||||
public override ResourceOptions GetDefaultOptions ()
|
||||
{
|
||||
return new NpaOptions {
|
||||
TitleId = GetTitleId (Settings.Default.NPAScheme),
|
||||
Scheme = GetScheme (Settings.Default.NPAScheme),
|
||||
CompressContents = Settings.Default.NPACompressContents,
|
||||
Key1 = (int)Settings.Default.NPAKey1,
|
||||
Key2 = (int)Settings.Default.NPAKey2,
|
||||
@ -398,21 +396,25 @@ namespace GameRes.Formats.NitroPlus
|
||||
return new GUI.CreateNPAWidget();
|
||||
}
|
||||
|
||||
NpaTitleId QueryGameEncryption ()
|
||||
EncryptionScheme QueryGameEncryption ()
|
||||
{
|
||||
var options = Query<NpaOptions> (arcStrings.ArcEncryptedNotice);
|
||||
return options.TitleId;
|
||||
return options.Scheme;
|
||||
}
|
||||
|
||||
public static NpaTitleId GetTitleId (string title)
|
||||
{
|
||||
Debug.Assert (KnownSchemes.Length == OrderTable.Length,
|
||||
"Number of known encryptions schemes does not match available order tables.");
|
||||
var index = Array.IndexOf (KnownSchemes, title);
|
||||
if (index != -1)
|
||||
return (NpaTitleId)index;
|
||||
var scheme = GetScheme (title);
|
||||
return scheme != null ? scheme.TitleId : NpaTitleId.NotEncrypted;
|
||||
}
|
||||
|
||||
public static EncryptionScheme GetScheme (string title)
|
||||
{
|
||||
EncryptionScheme scheme;
|
||||
if (KnownSchemes.TryGetValue (title, out scheme))
|
||||
return scheme;
|
||||
else
|
||||
return NpaTitleId.NotEncrypted;
|
||||
return null;
|
||||
}
|
||||
|
||||
static readonly byte[] BaseTable = {
|
||||
@ -433,60 +435,6 @@ namespace GameRes.Formats.NitroPlus
|
||||
0x8C,0xE9,0xB5,0xE6,0x31,0x93,0x46,0x5E,0x1D,0x1B,0x4B,0x71,0xD6,0x92,0x3A,0xA6,
|
||||
0x2D,0x00,0x9D,0xBB,0x6E,0xF0,0x99,0xCE,0x21,0x0A,0xD0,0xF6,0xFE,0xA2,0x8A,0x96,
|
||||
};
|
||||
|
||||
static readonly byte[][] OrderTable = {
|
||||
null, // NotEncrypted
|
||||
// CHAOSHEAD
|
||||
new byte[] { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
|
||||
// CHAOSHEADTR1
|
||||
new byte[] { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1e,0x4e,0x66,0xb6 },
|
||||
// CHAOSHEADTR2
|
||||
new byte[] { 0x05,0x05,0x05,0x05,0x05,0x0b,0x0b,0x0b,0x0b,0x0b,0x00,0x00,0x00,0x00,0x00,0x00 },
|
||||
// MURAMASATR
|
||||
new byte[] { 0x3c,0xe0,0x2e,0x2f,0x20,0x2e,0x2f,0x20,0x8e,0x80,0x80,0xf2,0xf2,0xf2,0xfa,0xfc },
|
||||
// MURAMASA
|
||||
new byte[] { 0x35,0x70,0x2e,0x66,0x67,0x65,0x66,0x67,0x85,0x89,0x89,0x3b,0x3b,0x8b,0x81,0x85 },
|
||||
// SUMAGA
|
||||
new byte[] { 0x3c,0xe0,0x2e,0x2f,0x2f,0x2f,0x2f,0x20,0x8e,0x8f,0x8f,0xf2,0xf2,0xf2,0xfc,0xfc },
|
||||
// DJANGO
|
||||
new byte[] { 0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0x1e,0x4e,0x66,0xb6 },
|
||||
// DJANGOTR
|
||||
new byte[] { 0xed,0xee,0xee,0xef,0xed,0xee,0xee,0xee,0xfe,0xde,0xee,0xef,0xed,0xee,0xfe,0xdf,0x1e,0x4e,0x66,0xb6 },
|
||||
// LAMENTO
|
||||
new byte[] { 0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0x1e,0x4e,0x66,0xb6 },
|
||||
// SWEETPOOL
|
||||
new byte[] { 0x38,0x9c,0x2a,0x8b,0x8b,0x8b,0x8b,0x8c,0x8a,0x8b,0x8b,0xae,0xae,0xae,0xa8,0xa8 },
|
||||
// SUMAGASP
|
||||
new byte[] { 0xab,0x6f,0x9d,0x9e,0x9f,0x9d,0x9e,0xaf,0x8d,0xff,0xff,0x71,0x71,0x71,0x79,0x7b },
|
||||
// DEMONBANE
|
||||
new byte[] { 0x96,0xb9,0x47,0x48,0x99,0x97,0x9c,0xaa,0x88,0xca,0xea,0x73,0x73,0x7b,0xc9,0xc6 },
|
||||
// MURAMASAAD
|
||||
new byte[] { 0x00,0x04,0x04,0x68,0x68,0x68,0x68,0x68,0x6f,0x6f,0x9f,0x96,0x96,0x96,0x96,0x9b },
|
||||
// AXANAEL
|
||||
new byte[] { 0x08,0x0c,0x0c,0xc0,0xf0,0xf0,0xf0,0xf0,0xf7,0xf7,0xf7,0xfe,0xfe,0xfe,0xfe,0xf3 },
|
||||
// KIKOKUGAI
|
||||
new byte[] { 0x0f,0x07,0x07,0x90,0xf7,0xf7,0xf7,0xf7,0xf2,0x47,0x47,0x49,0xc9,0xc9,0xc9,0xc3 },
|
||||
// SONICOMITR2
|
||||
new byte[] { 0x08,0x0a,0x0a,0x40,0xfa,0xfa,0x50,0x50,0x55,0xf7,0xf7,0xf9,0x29,0x2c,0x7c,0x73 },
|
||||
// SUMAGA3P
|
||||
new byte[] { 0x0f,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
|
||||
// SONICOMI
|
||||
new byte[] { 0x0e,0x0b,0x0e,0x77,0x2e,0x2e,0x80,0x86,0xb9,0x2e,0x2e,0x29,0x89,0x82,0xad,0xaa },
|
||||
// LOSTX
|
||||
new byte[] { 0x38,0xba,0x4b,0x5b,0x55,0xae,0xee,0xe0,0x67,0x48,0x08,0x0a,0x6a,0x3d,0x32,0x8d },
|
||||
// LOSTXTRAILER
|
||||
new byte[] { 0x34,0x7a,0xbb,0xcb,0x11,0x65,0xea,0x5c,0x27,0x0f,0xcf,0xc6,0x66,0x39,0x39,0xfd },
|
||||
// DRAMATICALMURDER
|
||||
new byte[] { 0x05,0x0d,0x0d,0x13,0xb5,0x3d,0x8d,0x2d,0x20,0xc7,0xc7,0xcf,0x1f,0xef,0xef,0x48 },
|
||||
// TOTONO
|
||||
new byte[] { 0x6e,0x60,0x90,0xac,0xb3,0xe3,0x83,0xd6,0xde,0x7a,0x7a,0x7f,0xef,0xbf,0xb2,0xd6 },
|
||||
// some installation npa
|
||||
//new byte[] { 0xa9,0xd3,0x34,0x84,0xd6,0xea,0xaa,0xdc,0xa0,0x64,0x24,0x26,0xd6,0xae,0xae,0x76 },
|
||||
// PHENOMENO
|
||||
new byte[] { 0x30,0x96,0xdb,0x2b,0x3d,0x81,0x02,0x74,0x47,0x2b,0xeb,0xee,0x6e,0x35,0x35,0x5d },
|
||||
// NEKODA
|
||||
new byte[] { 0xdc,0xdc,0xec,0xcd,0xdb,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0x1e,0x4e,0x66,0xb6 },
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -512,7 +460,8 @@ namespace GameRes.Formats.NitroPlus
|
||||
public Indexer (IEnumerable<Entry> source_list, NpaOptions options)
|
||||
{
|
||||
m_entries = new List<NpaEntry> (source_list.Count());
|
||||
m_key = NpaOpener.GetArchiveKey (options.TitleId, options.Key1, options.Key2);
|
||||
var title_id = null != options.Scheme ? options.Scheme.TitleId : NpaTitleId.NotEncrypted;
|
||||
m_key = NpaOpener.GetArchiveKey (title_id, options.Key1, options.Key2);
|
||||
|
||||
foreach (var entry in source_list)
|
||||
{
|
||||
@ -610,32 +559,32 @@ namespace GameRes.Formats.NitroPlus
|
||||
public EncryptedStream (NpaArchive arc, NpaEntry entry)
|
||||
{
|
||||
m_read_mode = true;
|
||||
m_encrypted_length = GetEncryptedLength (entry, arc.GameId);
|
||||
m_encrypted_length = GetEncryptedLength (entry, arc.Scheme.TitleId);
|
||||
if (m_encrypted_length > entry.Size)
|
||||
m_encrypted_length = (int)entry.Size;
|
||||
int key = NpaOpener.GetKeyFromEntry (entry, arc.GameId, arc.Key);
|
||||
int key = NpaOpener.GetKeyFromEntry (entry, arc.Scheme, arc.Key);
|
||||
|
||||
m_stream = arc.File.CreateStream (entry.Offset, entry.Size);
|
||||
m_encrypted = new Lazy<byte[]> (() => InitEncrypted (key, arc.GameId, arc.KeyTable));
|
||||
m_encrypted = new Lazy<byte[]> (() => InitEncrypted (key, arc.Scheme.TitleId, arc.KeyTable));
|
||||
m_base_pos = m_stream.Position;
|
||||
}
|
||||
|
||||
public EncryptedStream (Stream output, NpaEntry entry, NpaTitleId game_id, int arc_key)
|
||||
public EncryptedStream (Stream output, NpaEntry entry, EncryptionScheme scheme, int arc_key)
|
||||
{
|
||||
m_read_mode = false;
|
||||
m_encrypted_length = GetEncryptedLength (entry, game_id);
|
||||
int key = NpaOpener.GetKeyFromEntry (entry, game_id, arc_key);
|
||||
m_encrypted_length = GetEncryptedLength (entry, scheme.TitleId);
|
||||
int key = NpaOpener.GetKeyFromEntry (entry, scheme, arc_key);
|
||||
|
||||
m_stream = output;
|
||||
m_encrypted = new Lazy<byte[]> (() => new byte[m_encrypted_length]);
|
||||
m_base_pos = m_stream.Position;
|
||||
|
||||
byte[] decrypt_table = NpaOpener.GenerateKeyTable (game_id);
|
||||
byte[] decrypt_table = NpaOpener.GenerateKeyTable (scheme);
|
||||
byte[] encrypt_table = new byte[256];
|
||||
for (int i = 0; i < 256; ++i)
|
||||
encrypt_table[decrypt_table[i]] = (byte)i;
|
||||
|
||||
if (NpaTitleId.LAMENTO == game_id)
|
||||
if (NpaTitleId.LAMENTO == scheme.TitleId)
|
||||
{
|
||||
Encrypt = (i, x) => encrypt_table[(x + key) & 0xff];
|
||||
}
|
||||
|
@ -1,10 +1,9 @@
|
||||
<Grid x:Class="GameRes.Formats.GUI.WidgetNPA"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:fmt="clr-namespace:GameRes.Formats.NitroPlus"
|
||||
xmlns:p="clr-namespace:GameRes.Formats.Properties"
|
||||
MaxWidth="250">
|
||||
<ComboBox Name="Scheme" Width="180"
|
||||
ItemsSource="{Binding Source={x:Static fmt:NpaOpener.KnownSchemes}, Mode=OneWay}"
|
||||
ItemsSource="{Binding}"
|
||||
SelectedValue="{Binding Source={x:Static p:Settings.Default}, Path=NPAScheme, Mode=TwoWay}"/>
|
||||
</Grid>
|
||||
|
@ -1,8 +1,8 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls;
|
||||
using System.Linq;
|
||||
using GameRes.Formats.Properties;
|
||||
using GameRes.Formats.NitroPlus;
|
||||
using GameRes.Formats.Strings;
|
||||
|
||||
namespace GameRes.Formats.GUI
|
||||
{
|
||||
@ -15,8 +15,8 @@ namespace GameRes.Formats.GUI
|
||||
{
|
||||
var selected = Settings.Default.NPAScheme;
|
||||
InitializeComponent();
|
||||
var sorted = NpaOpener.KnownSchemes.Skip (1).OrderBy (x => x);
|
||||
Scheme.ItemsSource = NpaOpener.KnownSchemes.Take(1).Concat (sorted);
|
||||
var keys = new string[] { arcStrings.ArcNoEncryption };
|
||||
Scheme.ItemsSource = keys.Concat (NpaOpener.KnownSchemes.Keys.OrderBy (x => x));
|
||||
if (NpaTitleId.NotEncrypted == NpaOpener.GetTitleId (selected))
|
||||
Scheme.SelectedIndex = 0;
|
||||
else
|
||||
|
@ -55,6 +55,12 @@ namespace GameRes.Formats.Selene
|
||||
public string PassPhrase { get; set; }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class KcapScheme : ResourceScheme
|
||||
{
|
||||
public Dictionary<string,string> KnownSchemes;
|
||||
}
|
||||
|
||||
[Export(typeof(ArchiveFormat))]
|
||||
public class PackOpener : ArchiveFormat
|
||||
{
|
||||
@ -66,17 +72,19 @@ namespace GameRes.Formats.Selene
|
||||
|
||||
static private string DefaultPassPhrase = "Selene.Default.Password";
|
||||
|
||||
public static readonly Dictionary<string,string> KnownSchemes = new Dictionary<string,string> {
|
||||
{ arcStrings.KCAPDefault, "" },
|
||||
{ "Okaa-san ga Ippai!", "hahadata256pasyamada2zikan" },
|
||||
{ "Itazura Mahjong", "mjdata999pasyamada2zikan" },
|
||||
};
|
||||
public static Dictionary<string,string> KnownSchemes = new Dictionary<string,string>();
|
||||
|
||||
public PackOpener ()
|
||||
{
|
||||
Extensions = new string[] { "pack" };
|
||||
}
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new KcapScheme { KnownSchemes = KnownSchemes }; }
|
||||
set { KnownSchemes = ((KcapScheme)value).KnownSchemes; }
|
||||
}
|
||||
|
||||
public override ArcFile TryOpen (ArcView file)
|
||||
{
|
||||
int count = file.View.ReadInt32 (4);
|
||||
|
@ -4,7 +4,6 @@
|
||||
xmlns:s="clr-namespace:GameRes.Formats.Strings"
|
||||
xmlns:p="clr-namespace:GameRes.Formats.Properties"
|
||||
xmlns:fmt="clr-namespace:GameRes.Formats.Selene"
|
||||
xmlns:local="clr-namespace:GameRes.Formats.GUI"
|
||||
MaxWidth="260">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
@ -22,6 +21,6 @@
|
||||
<Label Content="{x:Static s:arcStrings.LabelScheme}" Target="{Binding ElementName=EncScheme}"
|
||||
Grid.Column="0" Grid.Row="1" HorizontalAlignment="Right"/>
|
||||
<ComboBox Name="EncScheme" Grid.Column="1" Grid.Row="1" Margin="0,3,0,0"
|
||||
ItemsSource="{Binding Source={x:Static fmt:PackOpener.KnownSchemes}, Path=Keys, Mode=OneWay}"
|
||||
ItemsSource="{Binding}"
|
||||
SelectedValue="{Binding Source={x:Static p:Settings.Default}, Path=KCAPScheme, Mode=TwoWay}" />
|
||||
</Grid>
|
||||
|
@ -1,7 +1,9 @@
|
||||
using System.Windows;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using GameRes.Formats.Properties;
|
||||
using GameRes.Formats.Selene;
|
||||
using GameRes.Formats.Strings;
|
||||
|
||||
namespace GameRes.Formats.GUI
|
||||
{
|
||||
@ -13,7 +15,9 @@ namespace GameRes.Formats.GUI
|
||||
public WidgetKCAP ()
|
||||
{
|
||||
InitializeComponent ();
|
||||
if (null == EncScheme.SelectedItem)
|
||||
var keys = new[] { arcStrings.ArcDefault };
|
||||
EncScheme.ItemsSource = keys.Concat (PackOpener.KnownSchemes.Keys);
|
||||
if (-1 == EncScheme.SelectedIndex)
|
||||
EncScheme.SelectedIndex = 0;
|
||||
EncScheme.SelectionChanged += OnSchemeChanged;
|
||||
}
|
||||
|
@ -60,6 +60,12 @@ namespace GameRes.Formats.ShiinaRio // 椎名里緒
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class WarcScheme : ResourceScheme
|
||||
{
|
||||
public EncryptionScheme[] KnownSchemes;
|
||||
}
|
||||
|
||||
[Export(typeof(ArchiveFormat))]
|
||||
public class WarOpener : ArchiveFormat
|
||||
{
|
||||
@ -69,6 +75,12 @@ namespace GameRes.Formats.ShiinaRio // 椎名里緒
|
||||
public override bool IsHierarchic { get { return false; } }
|
||||
public override bool CanCreate { get { return false; } }
|
||||
|
||||
public override ResourceScheme Scheme
|
||||
{
|
||||
get { return new WarcScheme { KnownSchemes = Decoder.KnownSchemes }; }
|
||||
set { Decoder.KnownSchemes = ((WarcScheme)value).KnownSchemes; }
|
||||
}
|
||||
|
||||
public override ArcFile TryOpen (ArcView file)
|
||||
{
|
||||
if (!file.View.AsciiEqual (4, " 1."))
|
||||
@ -542,64 +554,8 @@ namespace GameRes.Formats.ShiinaRio // 椎名里緒
|
||||
}
|
||||
}
|
||||
|
||||
internal class CachedResource
|
||||
{
|
||||
Dictionary<string, byte[]> ResourceCache = new Dictionary<string, byte[]>();
|
||||
Dictionary<string, byte[]> RegionCache = new Dictionary<string, byte[]>();
|
||||
|
||||
public static Stream Open (string name)
|
||||
{
|
||||
var assembly = typeof(CachedResource).Assembly;
|
||||
string qualified_name = "GameRes.Formats.Resources." + name;
|
||||
Stream stream = assembly.GetManifestResourceStream (qualified_name);
|
||||
if (null != stream)
|
||||
return stream;
|
||||
stream = assembly.GetManifestResourceStream (qualified_name + ".z");
|
||||
if (null != stream)
|
||||
using (stream)
|
||||
return ZLibCompressor.DeCompress (stream);
|
||||
throw new FileNotFoundException ("Resource not found", name);
|
||||
}
|
||||
|
||||
public byte[] Load (string name)
|
||||
{
|
||||
byte[] res;
|
||||
if (!ResourceCache.TryGetValue (name, out res))
|
||||
{
|
||||
using (var stream = Open (name))
|
||||
{
|
||||
res = new byte[stream.Length];
|
||||
stream.Read (res, 0, res.Length);
|
||||
ResourceCache[name] = res;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
// FIXME: this approach disregards possible differences in regions width or height
|
||||
public byte[] LoadRegion (string name, int width, int height)
|
||||
{
|
||||
byte[] region;
|
||||
if (!RegionCache.TryGetValue (name, out region))
|
||||
{
|
||||
using (var png = Open (name))
|
||||
{
|
||||
region = new byte[width*height*4];
|
||||
var decoder = new PngBitmapDecoder (png, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
|
||||
var bitmap = decoder.Frames[0];
|
||||
width = Math.Min (width, bitmap.PixelWidth);
|
||||
height = Math.Min (height, bitmap.PixelHeight);
|
||||
int stride = bitmap.PixelWidth * bitmap.Format.BitsPerPixel / 8;
|
||||
Int32Rect rect = new Int32Rect (0, 0, width, height);
|
||||
bitmap.CopyPixels (rect, region, stride, 0);
|
||||
RegionCache[name] = region;
|
||||
}
|
||||
}
|
||||
return region;
|
||||
}
|
||||
}
|
||||
|
||||
internal class EncryptionScheme
|
||||
[Serializable]
|
||||
public class EncryptionScheme
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string OriginalTitle { get; set; }
|
||||
@ -611,59 +567,6 @@ namespace GameRes.Formats.ShiinaRio // 椎名里緒
|
||||
public byte[] Region;
|
||||
public byte[] DecodeBin;
|
||||
public byte[] DecodeExtra;
|
||||
|
||||
private static CachedResource Resource = new CachedResource();
|
||||
|
||||
public static readonly string DefaultCrypt = "Crypt Type 20011002 - Copyright(C) 2000 Y.Yamada/STUDIO よしくん";
|
||||
public static readonly uint[] ZeroKey = new uint[] { 0, 0, 0, 0, 0 };
|
||||
|
||||
public static EncryptionScheme Create (string name, int version, int entry_name_size,
|
||||
string key1, uint[] key2,
|
||||
string image, string region_src, string decode_bin = null,
|
||||
string original_title = "", uint? decode_patch = null)
|
||||
{
|
||||
var scheme = new EncryptionScheme
|
||||
{
|
||||
Name = name,
|
||||
Version = version,
|
||||
OriginalTitle = original_title,
|
||||
EntryNameSize = entry_name_size,
|
||||
CryptKey = Encodings.cp932.GetBytes (key1),
|
||||
HelperKey = key2,
|
||||
ShiinaImage = Resource.Load (image),
|
||||
Region = Resource.LoadRegion (region_src, 48, 48),
|
||||
};
|
||||
if (null != decode_bin)
|
||||
{
|
||||
scheme.DecodeBin = Resource.Load (decode_bin);
|
||||
if (null != decode_patch)
|
||||
{
|
||||
scheme.DecodeBin = scheme.DecodeBin.Clone() as byte[];
|
||||
LittleEndian.Pack (decode_patch.Value, scheme.DecodeBin, 0x1020);
|
||||
}
|
||||
}
|
||||
if (version >= 2490)
|
||||
scheme.DecodeExtra = Resource.Load ("ShiinaRio5.png");
|
||||
return scheme;
|
||||
}
|
||||
|
||||
public static EncryptionScheme Create (int version, string name, string original_title, uint[] key2, uint? decode_patch = null)
|
||||
{
|
||||
string decode = version < 2410 ? "DecodeV1.bin"
|
||||
: version < 2490 ? "DecodeV241.bin"
|
||||
: "DecodeV249.bin";
|
||||
string image = version < 2390 ? "ShiinaRio1.png"
|
||||
: version < 2490 ? "ShiinaRio3.jpg"
|
||||
: "ShiinaRio4.jpg";
|
||||
int entry_name_size = version <= 2390 ? 0x10 : 0x20;
|
||||
return Create (name, version, entry_name_size, DefaultCrypt, key2,
|
||||
image, "ShiinaRio2.png", decode, original_title, decode_patch);
|
||||
}
|
||||
|
||||
public static EncryptionScheme Create (int version, string name)
|
||||
{
|
||||
return Create (version, name, "", ZeroKey);
|
||||
}
|
||||
}
|
||||
|
||||
internal class Decoder
|
||||
@ -1246,71 +1149,6 @@ namespace GameRes.Formats.ShiinaRio // 椎名里緒
|
||||
return (uint)((m_scheme.EntryNameSize + 0x18) * max_index_entries);
|
||||
}
|
||||
|
||||
public static EncryptionScheme[] KnownSchemes = new EncryptionScheme[]
|
||||
{
|
||||
EncryptionScheme.Create (2360, "ShiinaRio v2.36 and older"),
|
||||
EncryptionScheme.Create (2370, "ShiinaRio v2.37", "椎名里緒 v2.37",
|
||||
new uint[] { 0xF182C682, 0xE882AA82, 0x718E5896, 0x8183CC82, 0xDAC98283 }),
|
||||
|
||||
EncryptionScheme.Create (2480, "Bloody Rondo", "BLOODY†RONDO",
|
||||
new uint[] { 0xFBFBF8F6, 0xFBE6EDF0, 0xFBF0FA, 0, 0 }),
|
||||
|
||||
EncryptionScheme.Create (2460, "Chikan Circle", "痴漢サークル",
|
||||
new uint[] { 0x6B6B6E70, 0x6E724058, 0x587E736B, 0x00003653, 0 }),
|
||||
EncryptionScheme.Create (2470, "Chikan Circle 2", "痴漢サークル2",
|
||||
new uint[] { 0x6464617F, 0x617D4F57, 0x57717C64, 0x00003A5C, 0 }, 0x20080108),
|
||||
EncryptionScheme.Create (2470, "Chikan Circle 3", "痴漢サークル3",
|
||||
new uint[] { 0x6565607E, 0x607C4E56, 0x56707D65, 0x00003A4A, 0 }, 0x20090706),
|
||||
|
||||
EncryptionScheme.Create (2450, "Chuuchuu Nurse", "ちゅうちゅうナース",
|
||||
new uint[] { 0xB0D1ECD1, 0xECD1F7D1, 0xF7D1B0D1, 0x08D23AD0, 0x13D20BD0 }),
|
||||
EncryptionScheme.Create (2470, "Damatte Watashi no Muko ni Nare!", "黙って私のムコになれ!",
|
||||
new uint[] { 0x44075C13, 0x010B4107, 0x05064907, 0x4C07D706, 0x6F074D07 }),
|
||||
EncryptionScheme.Create (2470, "Hana to Otome ni Shukufuku wo Royal Bouquet", "花と乙女に祝福を ロイヤルブーケ",
|
||||
new uint[] { 0xE3A7F1AC, 0xB2AA96AC, 0x4FAAECA7, 0xD5A7BAB0, 0x44A754A7 }),
|
||||
EncryptionScheme.Create (2400, "Helter Skelter", "ヘルタースケルター",
|
||||
new uint[] { 0x747C887C, 0xA47EA17C, 0xAF7CA77C, 0xA17C747C, 0x0000A47E }),
|
||||
EncryptionScheme.Create (2390, "Hitozuma Onna Kyoushi Reika", "人妻女教師・麗香",
|
||||
new uint[] { 0x3772936F, 0x4C746870, 0x12688b71, 0x0A687E72, 0x3A6B4076 }),
|
||||
EncryptionScheme.Create (2470, "Mahou Shoujo no Taisetsu na Koto", "魔法少女の大切なこと。",
|
||||
new uint[] { 0x51879387, 0x869EBC9E, 0xF480DD93, 0xD993C981, 0xD793A093 }),
|
||||
EncryptionScheme.Create (2460, "Mikoko", "みここ",
|
||||
new uint[] { 0x7DAC51AC, 0x51AC7DAC, 0x7DAC7DAC, 0x7DAC51AC, 0x51AC7DAC }),
|
||||
EncryptionScheme.Create (2470, "Najimi no Oba-chan", "馴染みのオバちゃん",
|
||||
new uint[] { 0x6161647A, 0x64784A52, 0x52747961, 0x00004C43, 0 }),
|
||||
EncryptionScheme.Create (2390, "Nagagutsu wo Haita Deco", "長靴をはいたデコ",
|
||||
new uint[] { 0x486D887E, 0x0F7DBC73, 0x5D7D327D, 0x997C427D, 0x877EAD7C }),
|
||||
EncryptionScheme.Create (2470, "Nakadashi Trilogy", "なかだしトリロジー",
|
||||
new uint[] { 0x928ADB9E, 0xB087BB87, 0x928ADB9E, 0xB087BB87, 0xB087BB87 }),
|
||||
EncryptionScheme.Create (2470, "Onedari Onapet", "おねだりオナペット",
|
||||
new uint[] { 0xD59CB69C, 0xF69CA09C, 0x779D579D, 0x7C9D679D, 0x0000799D }),
|
||||
EncryptionScheme.Create (2480, "Onegan!", "おねガン!",
|
||||
new uint[] { 0xC881AB81, 0x90804880, 0xAB814A82, 0x4880C881, 0x4A829080 }),
|
||||
EncryptionScheme.Create (2470, "Oreimo Plus", "俺妹プラス",
|
||||
new uint[] { 0x24371528, 0x2822D722, 0x1528F922, 0xD7222437, 0xF9222822 }),
|
||||
EncryptionScheme.Create (2470, "Pure Love!", "ぴゅあらっ!",
|
||||
new uint[] { 0x31500050, 0x35507250, 0x87821350, 0x9D9E9780, 0x00009784 }),
|
||||
EncryptionScheme.Create (2470, "Ren'ai Saimin", "恋愛催眠",
|
||||
new uint[] { 0x6E423C5D, 0x7A5C0947, 0x6E423C5D, 0x7A5C0947, 0x6E423C5D }),
|
||||
|
||||
EncryptionScheme.Create (2470, "Ran→Sem", "RAN→SEM~白濁デルモ妻のミイラ捕り~",
|
||||
new uint[] { 0x63636678, 0x667A4850, 0x50767B63, 0x00004E5D, 0 }, 0x20100427),
|
||||
EncryptionScheme.Create (2470, "Rin x Sen", "RIN×SEN~白濁女教師と野郎ども~",
|
||||
new uint[] { 0x6666637D, 0x637F4D55, 0x55737E66, 0x00004F58, 0 }),
|
||||
|
||||
EncryptionScheme.Create (2480, "Sensei! Shite Ageru", "先生っ! シてあげる",
|
||||
new uint[] { 0x70562056, 0x87470744, 0x02449045, 0x76446644, 0x8F472F44 }),
|
||||
EncryptionScheme.Create (2480, "Tanetsuke Mura", "種憑け村",
|
||||
new uint[] { 0x7C7C7967, 0x7965574F, 0x4F69647C, 0x00005144, 0 }),
|
||||
EncryptionScheme.Create (2470, "You~Gaku", "よう∽ガク",
|
||||
new uint[] { 0x4DE2AB4D, 0x98AB5D46, 0x66496349, 0x485D685D, 0x5F4D4C5D }),
|
||||
EncryptionScheme.Create (2410, "Zansho Omimai Moushiagemasu", "残暑お見舞い申し上げます。",
|
||||
new uint[] { 0x3A123012, 0x6C3A6C36, 0x3C36323C, 0x6C360F16, 0x369DD012 }),
|
||||
EncryptionScheme.Create (2490, "Shojo Mama", "処女ママ",
|
||||
new uint[] { 0x4B535453, 0xA15FA15F, 0, 0, 0 }),
|
||||
EncryptionScheme.Create ("ShiinaRio v2.49", 2490, 0x20, EncryptionScheme.DefaultCrypt,
|
||||
new uint[] { 0x4B535453, 0xA15FA15F, 0, 0, 0 },
|
||||
"ShiinaRio4.jpg", "ShiinaRio2.png", "DecodeV249.bin"),
|
||||
};
|
||||
public static EncryptionScheme[] KnownSchemes = new EncryptionScheme[0];
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ using System.ComponentModel.Composition.Hosting;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using GameRes.Collections;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
|
||||
namespace GameRes
|
||||
{
|
||||
@ -59,6 +60,17 @@ namespace GameRes
|
||||
public IEnumerable<AudioFormat> AudioFormats { get { return m_audio_formats; } }
|
||||
public IEnumerable<ScriptFormat> ScriptFormats { get { return m_script_formats; } }
|
||||
|
||||
public IEnumerable<IResource> Formats
|
||||
{
|
||||
get
|
||||
{
|
||||
return ((IEnumerable<IResource>)ArcFormats).Concat (ImageFormats).Concat (AudioFormats).Concat (ScriptFormats);
|
||||
}
|
||||
}
|
||||
|
||||
public int CurrentSchemeVersion { get; private set; }
|
||||
public string SchemeID { get { return "GARbroDB"; } }
|
||||
|
||||
public Exception LastError { get; set; }
|
||||
|
||||
public event ParametersRequestEventHandler ParametersRequest;
|
||||
@ -173,5 +185,46 @@ namespace GameRes
|
||||
signature |= (uint)file.ReadByte() << 24;
|
||||
return signature;
|
||||
}
|
||||
|
||||
public void DeserializeScheme (Stream input)
|
||||
{
|
||||
var bin = new BinaryFormatter();
|
||||
var db = (SchemeDataBase)bin.Deserialize (input);
|
||||
if (db.Version <= CurrentSchemeVersion)
|
||||
return;
|
||||
|
||||
foreach (var format in Formats)
|
||||
{
|
||||
ResourceScheme scheme;
|
||||
if (!db.SchemeMap.TryGetValue (format.Tag, out scheme))
|
||||
continue;
|
||||
format.Scheme = scheme;
|
||||
}
|
||||
CurrentSchemeVersion = db.Version;
|
||||
}
|
||||
|
||||
public void SerializeScheme (Stream output)
|
||||
{
|
||||
var db = new SchemeDataBase {
|
||||
Version = CurrentSchemeVersion,
|
||||
SchemeMap = new Dictionary<string, ResourceScheme>()
|
||||
};
|
||||
foreach (var format in Formats)
|
||||
{
|
||||
var scheme = format.Scheme;
|
||||
if (null != scheme)
|
||||
db.SchemeMap[format.Tag] = scheme;
|
||||
}
|
||||
var bin = new BinaryFormatter();
|
||||
bin.Serialize (output, db);
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SchemeDataBase
|
||||
{
|
||||
public int Version;
|
||||
|
||||
public Dictionary<string, ResourceScheme> SchemeMap;
|
||||
}
|
||||
}
|
||||
|
@ -82,6 +82,9 @@ namespace GameRes
|
||||
/// <summary>Filename extensions peculiar to the resource.</summary>
|
||||
public IEnumerable<string> Extensions { get; protected set; }
|
||||
|
||||
/// <summary>Resource settings suitable for serialization.</summary>
|
||||
public virtual ResourceScheme Scheme { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Create empty Entry that corresponds to implemented resource.
|
||||
/// </summary>
|
||||
@ -139,6 +142,11 @@ namespace GameRes
|
||||
{
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ResourceScheme
|
||||
{
|
||||
}
|
||||
|
||||
public enum ArchiveOperation
|
||||
{
|
||||
Abort,
|
||||
|
Loading…
Reference in New Issue
Block a user