Update GCF output string for encrypted GCFs (#417)

* Update GCF output string for encrypted GCFs

* Use Array.Exists since some early GCFs have only some files encrypted
This commit is contained in:
HeroponRikiBestest
2026-06-26 17:45:18 -07:00
committed by GitHub
parent c45f6a1bae
commit 8ca25c6370

View File

@@ -1,3 +1,4 @@
using System;
using System.IO;
namespace BinaryObjectScanner.FileType
@@ -16,19 +17,19 @@ namespace BinaryObjectScanner.FileType
// Filename is worth reporting, since it's descriptive and has to match the Steam2 CDN in order to work.
string fileName = Path.GetFileName(file);
uint depotId = _wrapper.Model.Header.CacheID;
uint manifestVersion = _wrapper.Model.Header.LastVersionPlayed;
uint depotVersion = _wrapper.Model.Header.LastVersionPlayed;
// At the moment, all samples of GCF files on redump are unencrypted. Combined with being uncertain about
// whether this is the best way to check whether the GCF is encrypted, this block will be left commented
// out until further research is done.
// bool encrypted = false;
// if (_wrapper.Files != null && _wrapper.Files.Length > 0)
// encrypted = _wrapper.Files[0].Encrypted;
// While there is a depot-level encrypted flag on the GCF, it's unfortunately completely unreliable.
// Technically speaking, there are some known GCFs that only have some files encrypted. HL2 discs from
// 2004 have several GCFs like this, one being base_source_engine.gcf (depot 200). Thus, it's necessary
// to iterate all file info to check if any files are encrypted
bool encrypted = false;
if (_wrapper.Files != null && _wrapper.Files.Length > 0)
encrypted = Array.Exists(_wrapper.Files, fileInfo => fileInfo.Encrypted);
// string encryptedString = encrypted ? "encrypted" : "unencrypted";
// string returnString = $"{fileName} - {depotId} (v{manifestVersion}, {encryptedString})";
string returnString = $"{fileName} - {depotId} (v{manifestVersion})";
// Only note encryption status if the GCF is encrypted
string encryptedString = encrypted ? ", encrypted" : "";
string returnString = $"{fileName} - {depotId} (v{depotVersion}{encryptedString})";
return returnString;
}
}