xar unarchiver (.xar, .pkg, .xip)
1# czar
2
3clean-room implementation of a [XAR](https://en.wikipedia.org/wiki/Xar_%28archiver%29) unarchiver
4
5## status
6
7- [x] Header
8 - [x] Magic
9 - [x] Header size
10 - [x] Version
11 - [x] TOC length (compressed)
12 - [x] TOC length (uncompressed)
13 - [x] Checksum algorithm
14 - [x] None
15 - [x] SHA1
16 - [x] MD5
17- [x] TOC
18 - [x] Extraction
19 - [x] Parsing
20 - [x] Checksum validation
21- [x] Heap
22 - [x] Extraction
23 - [x] gzip/zlib
24 - [x] bzip2
25 - [x] Checksum validation
26- [ ] File Metadata
27
28## current features
29
30- archive info
31- file listing
32- checksum validation
33- decompression
34
35## usage
36
37```
38Usage: czar [options] <xar_file>
39Options:
40 --strict Fail extraction if any checksum validation fails
41 --no-extract Only validate checksums, don't extract files
42 --help, -h Show this help message
43```
44
45Files are extracted to `./<xar_file>.extracted/`
46
47### examples
48
49```bash
50# Extract archive with checksum validation
51./czar archive.xar
52
53# Validate checksums only (no extraction)
54./czar --no-extract archive.xar
55
56# Strict mode - fail if any checksum is invalid
57./czar --strict archive.xar
58```
59
60---
61
62This project, initially authored by Mara Robin Broda in 2018, is licensed under the GNU Lesser General Public License v3.0