Commit Graph
51 Commits
Author SHA1 Message Date
blacktop 69c8858f7c feat(img4): add Cryptex1 FourCC and IM4P payload constants 2026-05-21 13:03:40 -06:00
blacktop 4f23763438 feat(extract): auto-decrypt remote kernelcaches via wiki keys
`ipsw download ipsw --kernel` now fetches firmware keys from
theapplewiki and decrypts encrypted kernelcaches inline. Unencrypted
members in the same IPSW pass through unchanged.

- pkg/img4: DecryptPayload reuses Payload.GetData for decompression,
  removing the duplicate LZSS/LZFSE branches.
- pkg/kernelcache: ParseImg4Data switches to img4.ParsePayload and
  exports ErrEncryptedKernelCache so callers can detect the missing-key
  case via errors.Is.
- internal/commands/extract: new keyed remote path with all-or-nothing
  preflight; the encryption-status peek lets unencrypted variants
  succeed even when the wiki has no entry for them.

  closes #1193
2026-04-27 15:57:23 -06:00
blacktop 05c76b2d7e feat(img4): parse IM4C and Apple cert constraint OID in im4m info
Adds parsing for two cert-chain shapes that were previously opaque:

  - X.509 extension 1.2.840.113635.100.6.1.15 (Apple IMG4 manifest cert
    spec): the MANP/OBJP constraint groups that bound which manifest
    properties a signing cert is permitted to vouch for. Constraints are
    pinned values, [0] required-any, or [1] optional-any.

  - IM4C (Image4 Certificate): the non-X.509 cert format used by
    peripheral firmware tickets (Yonkers/Savage). Decodes version, raw
    EC public key, ECDSA signature, and the same CRTP constraint groups.

  Also:
  - analyzeSignature now identifies DER-encoded ECDSA curves by parsing
    SEQUENCE{r,s} and inferring P-256/384/521 from integer width
  - isPrintableString rejects invalid UTF-8 — RuneError is IsPrint()==true
    so binary nonces (e.g. ynon=0xAA*16) were rendering as garbage glyphs

  Closes #1170
2026-04-09 15:42:29 -06:00
blacktop 8e6f2c554b chore: modernize to 1.26
Refactor string concatenation to use strings.Builder for improved performance in multiple files
2026-02-12 10:02:01 -07:00
blacktop 57d36998e3 chore: add viper config to all commands 2025-07-15 17:19:37 -06:00
blacktop 07e21ebce7 fix: re-type IM4P duing ipsw img4 create cmd 2025-07-03 11:57:37 -06:00
blacktop c2cdf2656f fix: ipsw download tss cmd, now correctly checking signed status and downloading SHSH blobs 2025-07-03 11:17:20 -06:00
blacktop 6d70c32899 Update manifest.go 2025-06-29 23:24:59 -06:00
blacktop 899a23df1d chore: cleanup ipsw img4 im4m extract cmd 2025-06-29 23:22:21 -06:00
blacktop 22d065f7ae Update manifest.go 2025-06-29 20:19:56 -06:00
blacktop 6a3286dd5e chore: greatly improve UX of ipsw img4 im4m verify command 2025-06-29 20:05:58 -06:00
blacktop b608695911 chore: hide ipsw img4 person and ipsw img4 im4m verify for now 2025-06-29 14:11:28 -06:00
blacktop ef97109890 fix: update ipsw img4 to use NEW comp pkg 2025-06-29 13:40:50 -06:00
blacktop 9bded99574 fix: ipsw img4 create --extra format 2025-06-29 11:20:00 -06:00
blacktop 2d3285588b Update payload.go 2025-06-29 11:01:46 -06:00
blacktop 8a5ea3f0c3 Update manifest.go 2025-06-29 11:01:40 -06:00
blacktop 192c41fd76 Update payload.go 2025-06-29 08:48:23 -06:00
blacktop d410a83726 Update payload.go 2025-06-29 08:10:19 -06:00
blacktop 77b7d88063 fix: a few more minor fixes to img4 code 2025-06-28 19:19:12 -06:00
blacktop 2dce5604a3 fix: minor fixes to img4 code 2025-06-28 18:13:26 -06:00
blacktop 0a7cc83986 Update recovery.go 2025-06-28 17:35:22 -06:00
blacktop 46d127973b fix: ipsw img4 create --compress 'none' using lzss instead 2025-06-28 15:58:37 -06:00
blacktop ee1afb36ec fix: few more ipsw img4 related fixes 2025-06-28 15:44:51 -06:00
blacktop ad8a441200 Update img4_test.go 2025-06-28 15:10:07 -06:00
blacktop f6a62195b3 fix: few more fixes to ipsw img4 cmd #777 2025-06-28 15:05:41 -06:00
blacktop 9b7b53d8a3 Update img4.go 2025-06-28 12:35:01 -06:00
blacktop 5914534b7d fix: ipsw img4 im4m parsing bug #777 2025-06-28 10:45:17 -06:00
blacktopandGitHub 3cded00f59 feat: revamp ipsw img4 commands to bring inline with tools like img4lib (#784) 2025-06-28 01:54:40 -06:00
blacktop c3333a2ae2 chore: improve ipsw img4 info 2025-06-22 23:34:30 -06:00
blacktop 9a2e06279e fix: ipsw img4 create cmd #777 2025-06-22 22:46:27 -06:00
blacktop ad2d95c0cd fix: ipsw img4 extraction 2025-06-22 22:14:51 -06:00
blacktop 3fca9879e3 chore: more ipsw img4 cmd fixes 2025-06-22 15:41:27 -06:00
blacktop cc26b75e48 chore: improve ipsw img4 im4r command 2025-06-22 10:57:46 -06:00
blacktop 6a07e83e3b chore: some ipsw img4 sub-cmd reorg 2025-06-21 16:48:05 -06:00
blacktop d32f3e35f2 chore: add ability to print/extract im4p extra data #777 2025-06-21 11:58:41 -06:00
blacktop 39c7bf0383 Update img4.go 2025-06-20 19:36:21 -06:00
blacktop 07af0fe169 Update img4.go 2025-06-20 19:17:54 -06:00
blacktop 185387d5e1 chore: img4 pkg refactor/cleanup 2025-06-20 19:12:07 -06:00
blacktop 28b7a135f4 chore: add ipsw img4 validate and ipsw im4m personalize and verify + lzss Compress support 2025-06-20 18:54:37 -06:00
blacktop 1776766aaa chore: add ipsw img4 create cmds 2025-06-20 15:50:23 -06:00
blacktop a51fd931f7 feat: support mounting on linux for OLD HFS+ DMGs 2025-06-20 13:05:24 -06:00
blacktop d1f5ac85a1 feat: add ipsw img3 cmd to parse/decrypt img3 files 2025-06-18 23:09:34 -06:00
blacktop 6cca9a980d refactor: replace interface{} with any and simplify loop constructs 2025-03-26 22:53:29 -06:00
blacktop 190024704e feat: add --json flag to ipsw fw tc cmd + fix macOS img4 support 2024-10-05 13:30:31 -06:00
blacktop 10321063bf chore: working on fw cmds 2024-06-29 11:32:18 -06:00
blacktop 74a7cd6f32 feat: 🆕 ipsw pongo command 2023-01-26 20:24:38 -07:00
blacktop ba86cb6a5d feat: add support for macOS 13.x KernelManagement kernelcaches via ipsw kernel dec --km flag 2022-12-03 18:06:18 -07:00
blacktop c1eafc7f57 feat: allow --pattern flag to also filter --kbag in extract cmd 2022-07-04 15:33:44 +10:00
blacktop 952e432c18 feat: add 🆕 ipsw img4 kbag cmd to extract kbags from im4p files 2022-07-01 23:23:02 +10:00
blacktop fe4de6276b feat: 🆕 img4 dec cmd 2020-03-30 17:59:37 -04:00