Как распаковать ресурс.пак из гугл хрома?
Есть множество интересных файлов, доступных через chrome://resources/*
используя гугл хром
На Linux Это содержание в /opt/google/chrome/resources.pak
, Я знаю, что могу получить все источники с http://chromium.googlecode.com/svn/trunk/ но я хотел бы распаковать resource.pak
файл.
file resources.pak
отчеты просто барахло.
Просто чтобы быть ясным, вопрос не в том, откуда взять эти ресурсы. Вопрос в том, что такое формат файла resources.pak и как его распаковать?
4 ответа
Взяты из https://groups.google.com/a/chromium.org/forum/?fromgroups=
Номер версии 4 байта
4 байта число ресурсов
1-байтовая кодировка
Для каждого ресурса:
2-байтовый идентификатор ресурса
Смещение ресурса 4 байта в файле
В конце есть дополнительная запись ресурса с идентификатором 0, указывающим конец последнего ресурса (который по сути является длиной файла)
Этот модуль Python может распаковывать и перепаковывать файлы:
data_pack.py от grit-i18n
Chrome-pak-customizer (на который указал MrU в комментариях выше), кажется, хорошо работает для распаковки Chrome .pak
файлы. Если вы используете Windows, вы можете скачать и распаковать chrome-pak.7z
со страницы релизов. Затем бросьте .pak
файл на unpack.bat
скрипт для его распаковки.
Для других платформ, похоже, вам понадобится собрать инструмент из исходного кода.
Я обнаружил, что 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
s, и alias_count
alias
es.
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.
Этот файл python в хроме может помочь. https://source.chromium.org/chromium/chromium/src/+/main:tools/grit/pak_util.py
Вам нужно скачать весь каталог, а затем запустить его.
пример:
pak_util.py extract resources.pak -o /tmp/rescources.out/