Support latest WoW clients: BLTE mode F frames and flexible MFST root header sizes#8
Merged
Merged
Conversation
Copilot created this pull request from a session on behalf of
Xerrion
July 9, 2026 09:04
View session
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Newer WoW client builds failed to extract because the library hard-rejected two things they now use: BLTE mode
Fblocks and root files whose MFST header isn't exactly 24 bytes.BLTE mode
F(recursive frames)decode_block_with_keyspreviously returnedInvalidFormat("recursive BLTE (mode F) not supported")Fpayloads are a complete nested BLTE stream; they are now decoded recursively viadecode_blte_with_keys, propagating the TACT keystore so encrypted nested blocks also decryptFlexible MFST root header size
detect_formatrequiredheader_size == 24to recognize the 10.1.7+ MFST layout; any build extending the header would be misclassified as the pre-10.1.7 12-byte format and misparsedheader_sizefield is now honored (sanity-checked to 12–1024 and within data bounds), with blocks starting at that offsetUnknown MFST versions (>2) still error with
UnsupportedVersionrather than silently misparsing.Tests and docs
Fsupport