mirror of
https://github.com/crskycode/GARbro.git
synced 2026-07-08 01:30:18 +08:00
(PackOpener): correctly handle version 3 archives without encryption.
This commit is contained in:
@@ -135,6 +135,8 @@ namespace GameRes.Formats.Qlie
|
|||||||
// currently, user is prompted to choose encryption scheme only if there's 'key.fkey' file found.
|
// currently, user is prompted to choose encryption scheme only if there's 'key.fkey' file found.
|
||||||
if (key_file != null)
|
if (key_file != null)
|
||||||
arc_key = QueryEncryption();
|
arc_key = QueryEncryption();
|
||||||
|
if (null == arc_key)
|
||||||
|
key_file = null;
|
||||||
|
|
||||||
var key_data = new byte[0x100];
|
var key_data = new byte[0x100];
|
||||||
file.View.Read (file.MaxOffset-0x41C, key_data, 0, 0x100);
|
file.View.Read (file.MaxOffset-0x41C, key_data, 0, 0x100);
|
||||||
@@ -170,7 +172,7 @@ namespace GameRes.Formats.Qlie
|
|||||||
entry.IsEncrypted = 0 != file.View.ReadInt32 (index_offset+0x14);
|
entry.IsEncrypted = 0 != file.View.ReadInt32 (index_offset+0x14);
|
||||||
entry.Hash = file.View.ReadUInt32 (index_offset+0x18);
|
entry.Hash = file.View.ReadUInt32 (index_offset+0x18);
|
||||||
entry.KeyFile = key_file;
|
entry.KeyFile = key_file;
|
||||||
if (3 == pack_version && entry.Name.Contains ("pack_keyfile"))
|
if (3 == pack_version && null != arc_key && entry.Name.Contains ("pack_keyfile"))
|
||||||
{
|
{
|
||||||
// note that 'pack_keyfile' itself is encrypted using 'key.fkey' file contents.
|
// note that 'pack_keyfile' itself is encrypted using 'key.fkey' file contents.
|
||||||
key_file = ReadEntryBytes (file, entry, name_key, arc_key);
|
key_file = ReadEntryBytes (file, entry, name_key, arc_key);
|
||||||
|
|||||||
Reference in New Issue
Block a user