This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# Phase 0.9E-R2 SIECAF structural analysis
|
||||
|
||||
Date: 2026-07-19
|
||||
|
||||
Result: all pairwise comparisons are `SIECAF_LAYOUT_DIFFERENT`.
|
||||
|
||||
## Evidence and scope
|
||||
|
||||
`tools/inspect_siecaf_header.py` is a host-only read-only parser. Its fixed
|
||||
little-endian layouts are bound to:
|
||||
|
||||
- PS5 DevWiki `Archive.dat` structure documentation;
|
||||
- `c0w-ar/ps5-bar-tool` commit
|
||||
`36d014672bc87577a6e0d750c2cccadc3fae0854`, tree
|
||||
`d3e973b60432fdc32bd16e3b7424e82dcc38a23f`;
|
||||
- public `include/bar_file.h` blob
|
||||
`fdbc368353a7797464873ada306f0297257eb95e`.
|
||||
|
||||
The public header names the 64-bit value after the magic `unknown`, and the
|
||||
later signed 32-bit field `version`. Versions 3 and 6 were observed and are
|
||||
parsed using that same public fixed-width layout. Other versions fail closed.
|
||||
|
||||
The parser reads only the 0x58-byte header, 0x40-byte metadata records, and
|
||||
0x30-byte hash records. It never decrypts, guesses keys, extracts content,
|
||||
executes `ps5-bar-tool`, writes output files, or opens a network connection.
|
||||
The 16-byte header field named `key` by the public source and the complete raw
|
||||
header are not emitted; only their SHA-256 fingerprints are recorded. This
|
||||
preserves exact structural comparison without committing cryptographic header
|
||||
material.
|
||||
|
||||
It checks exact magic, table arithmetic with uint64 overflow guards, table and
|
||||
declared-data bounds, 64 KiB alignment, coherent aligned/unaligned sizes,
|
||||
metadata `(section_id, part_number)` identity, hash-table index coverage,
|
||||
duplicates, overlaps, gaps, and trailing data. Repeated section IDs with
|
||||
different part numbers are reported but are valid multipart records.
|
||||
|
||||
## Header comparison
|
||||
|
||||
| Field | Local | Official Y2JB 1.6 4.03 | owendswang v1.4 autoloader 7.61 |
|
||||
|---|---:|---:|---:|
|
||||
| inner size | 504365056 | 504496128 | 504627200 |
|
||||
| version | 3 | 3 | 6 |
|
||||
| segment count | 62 | 64 | 58 |
|
||||
| data offset | 65536 | 65536 | 65536 |
|
||||
| declared data size | 504299520 | 504430592 | 504561664 |
|
||||
| header SHA-256 | `4454809c9831770901491368f08b648129aef7ee3148aff17df8716ff3a5cd76` | `1af2bd937e5b6a2386331893f7ea1295661858cb91c90ee728141a4fec2dbf9b` | `db2a9677f051b372e208261d767ac45f653374426a5594ce3306568138ebd3ae` |
|
||||
|
||||
All three parse as `SIECAF_VALID_STRUCTURE`. None has gaps, overlaps, trailing
|
||||
data, duplicate metadata composite keys, or duplicate hash-table IDs.
|
||||
|
||||
## Normalized fingerprints
|
||||
|
||||
| Object | Segment table SHA-256 | Hash blocks SHA-256 | Layout SHA-256 | Structural SHA-256 |
|
||||
|---|---|---|---|---|
|
||||
| local | `ee35a92fe5e46c307310715fc5bd0edb9ac46c2046b7d77e9c1c437446e399ea` | `6e052f186dc8e683d501e376d79dcec1ba0d3268c257b6071e96eae738a7be24` | `c6dac8313ef99accba68b4a36871f0d8ae99676df0b721d4447ecb05a12a6539` | `7bb1b70187d1f48370b9bae218429af79105585bd043307824c0d84982e6922f` |
|
||||
| official | `d31def8e731d7bba0eaf23177f7c7245ef17f5d37ade53c9ca18744154bc8e25` | `c3236f5d85a4d7741be5a1fda5ce96d2bb7f005b0e48fed043af5ea48fb045d2` | `de6cc47686e5e301b725267b9b777c80a07a788e51f214cfb6e9d7f6e2e11110` | `9c453e1fa99ef1f1e6fe1d992f9b0a2ede4dbd4b9a2ad8551c08c8c61ed9be2a` |
|
||||
| community | `f0aed4ae115866010902671a511983c3e6e21d1a7ab187bae7f36566979beb89` | `434b209865af8c5815b1277073db59348fddf65086908b2fd00dee5324459bcb` | `be7fdf87361c17fa52d3b4b263f4ee0cce69e924f8dab0ab66c554b4d9557549` | `4884c54e280969371ae1d0b84533be5a7c50a61dff6931cf595fdb5862655218` |
|
||||
|
||||
Pairwise outcomes:
|
||||
|
||||
- local versus official: `SIECAF_LAYOUT_DIFFERENT`;
|
||||
- local versus community: `SIECAF_LAYOUT_DIFFERENT`;
|
||||
- official versus community: `SIECAF_LAYOUT_DIFFERENT`.
|
||||
|
||||
`manifests/runtime/phase-0.9e-r2-siecaf-fingerprints.json` contains every
|
||||
non-secret normalized input field, metadata record, section hash, redacted
|
||||
header-field hashes, parser warning/error array, and comparison. Structural
|
||||
hashes are non-authorizing fingerprints:
|
||||
even `SIECAF_STRUCTURAL_EXACT` would not prove decrypted-content identity or
|
||||
deployment. Here, not even normalized layout equality exists.
|
||||
Reference in New Issue
Block a user