ladislav-zezula / CascLib

An open-source implementation of library for reading CASC storages from Blizzard games since 2014
MIT License
424 stars 121 forks source link

BLTE_ENCODED_HEADER can contain completely garbage data. #251

Closed ZingBallyhoo closed 1 year ago

ZingBallyhoo commented 1 year ago

Very related to https://github.com/ladislav-zezula/CascLib/issues/249 For the Overwatch extraction tools we maintain our own casc library, but the same issue applies here.

As well as seeing lots of zeroed headers recently, some installs also have headers that are completely garbage data. The actual BLTE data is completely fine. Which headers are zeroed and which are garbage is not consistent between installs, and I personally haven't been able to repro at all. Scan & repair does nothing, game doesnt care either.

I've been collecting reports from users on which files are broken and with what header data, no idea if its useful at all but I have attached some. Ctrl+F for Size Wrong Other Samples to find garbage headers

install-issues.txt install-issues(1).txt install-issues(2).txt install-issues(3).txt install-issues_2_5_1.txt

ladislav-zezula commented 1 year ago

Hmm. This must be some new sooper-trooper feature in the Battle.NET app. Otherwise I can't explain the sudden rise of these issues.

Fixed: https://github.com/ladislav-zezula/CascLib/pull/252

ladislav-zezula commented 1 year ago

The CASC Library of yours that works on Overwatch - is that open source? Personally I never had time and will to implement Overwatch files loading, mainly because last time I checked, every version of Overwatch was encrypted by a different encryption key.

I assume it's all about loading and parsing the ROOT file and the related files. Any chance to add it to CascLib?

ZingBallyhoo commented 1 year ago

The CASC Library of yours that works on Overwatch - is that open source?

Yep. https://github.com/overtools/TACTLib. Overwatch code is here https://github.com/overtools/TACTLib/tree/master/TACTLib/Core/Product/Tank.

last time I checked, every version of Overwatch was encrypted by a different encryption key.

Still the same :). Except there's now 2 key generation functions per build. One for Overwatch GUID -> CKey, and one for dependency graph.

Any chance to add it to CascLib?

At least for our uses, not really. Trying to avoid getting more unmanaged (non-C#) dependencies 😅