使用谷歌浏览器可以通过chrome://resources/*
访问大量有趣的文件。
在Linux上该内容位于/opt/google/chrome/resources.pak
。我知道我可以从http://chromium.googlecode.com/svn/trunk/获取所有来源,但我想解压缩resource.pak
文件。
file resources.pak
报道只是垃圾。
为了清楚起见,问题不在于从获取这些资源的位置。问题是什么是resources.pak文件格式以及如何解压缩它?
答案 0 :(得分:22)
取自https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-dev/agGjTt4Dmcw
4字节版本号
4字节数量的资源
1字节编码
对于每种资源:
2字节资源id
文件中的4字节资源偏移
最后有一个额外的资源条目,ID 0给出了最后一个资源的结尾(基本上是文件的长度)
这个python模块可以解压缩和重新打包文件:
来自data_pack.py
答案 1 :(得分:1)
chrome-pak-customizer(由MrU在上面的评论中指出)似乎可以很好地解压缩Chrome的.pak
文件。如果您使用的是Windows,则可以从releases页下载chrome-pak.7z
并解压缩。然后将.pak
文件拖放到unpack.bat
脚本中以对其进行解压缩。
对于其他平台,您似乎需要从源代码构建工具。
答案 2 :(得分:0)
我发现resource.pak V5具有新格式:
struct header {
// 5 is the latest version
uint32_t version;
// 0 = BINARY, 1 = UTF8, 2 = UTF16
uint8_t encoding;
// 3 bytes padding
uint8_t padding[3];
uint16_t resource_count;
uint16_t alias_count;
};
后面跟着resource_count
resource
和alias_count
alias
。
struct resource {
uint16_t resource_id;
uint32_t file_offset;
};
struct alias {
uint16_t resource_id;
uint16_t entry_index;
};
其中uint32_t
= 4个字节,uint16_t
= 2个字节,uint8_t
= 1,所有小端整数。
来源可从https://github.com/chromium/chromium/blob/master/ui/base/resource/data_pack.cc获得。