From 8f39ecd879022e1101eeac8522b85bad6e61515c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Alvarez?= Date: Sat, 17 Dec 2022 18:36:41 -0500 Subject: [PATCH] patterns: Added pattern file for Apple PBZX compressed streams (#63) This is used by Apple for Xcode .xip files (cpio in pbzx in xar), OTA updates of iOS, and other files. --- patterns/pbzx.hexpat | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 patterns/pbzx.hexpat diff --git a/patterns/pbzx.hexpat b/patterns/pbzx.hexpat new file mode 100644 index 0000000..a61cbc7 --- /dev/null +++ b/patterns/pbzx.hexpat @@ -0,0 +1,30 @@ +// pbzx compression stream +// Used by Apple on .xip files and OTA updates. +// +// Copyright (c) 2022 Nicolás Alvarez +// +// SPDX-License-Identifier: GPL-2.0-or-later + +#include + +#pragma endian big + +#define SHOW_DATA 0 + +struct Chunk { + u64 uncompressed_size; + u64 compressed_size; + if (SHOW_DATA) { + u8 data[compressed_size] [[sealed]]; + } else { + padding[compressed_size]; + } +}; + +struct PBZX { + char magic[4]; + u64 chunk_size; + Chunk chunks[while(!std::mem::eof())]; +}; + +PBZX pbzx @ 0;