chrome-pak-customizer icon indicating copy to clipboard operation
chrome-pak-customizer copied to clipboard

Brotli support?

Open ericlaw1979 opened this issue 3 years ago • 3 comments

A while back, Chromium started using Brotli compression on textual resources. It doesn't look like the unpacker handles that?

If I strip 8 bytes off the front of the file extracted from unpack.bat, I can then use brotli.exe to uncompress the resource.

ericlaw1979 avatar Feb 11 '22 21:02 ericlaw1979

References: https://github.com/chromium/chromium/blob/c4d3c31083a2e1481253ff2d24298a1dfe19c754/tools/grit/grit/node/base.py#L657 https://github.com/chromium/chromium/blob/c4d3c31083a2e1481253ff2d24298a1dfe19c754/ui/base/resource/resource_bundle.h#L58 https://datatracker.ietf.org/doc/html/rfc7932#page-31

Format of brotli compressed resource: 2 bytes header: {0x1e, 0x9b} 6 bytes decompressed size: truncated to 6 bytes, little-endian. compressed brotli stream

For unpacking we can detect the header bytes and truncate header and decompressed size from output, ~~but for packing we have to parse the brotli stream, iterating all meta blocks, and restore the decompressed size, which takes time to implement.~~

Update: seems impossible to get uncompressed size without decompression https://github.com/google/brotli/issues/861

Maybe we can make a chromium-specific brotli compression tool for this chromium-specific brotli compression format.

myfreeer avatar Feb 12 '22 03:02 myfreeer

See experimental work at https://github.com/myfreeer/chrome-pak-customizer/tree/3.x

myfreeer avatar Mar 13 '22 13:03 myfreeer