IPSW-DIFF(1)

NAME
ipsw-diff - Diff IPSWs, OTAs, or patched OTA DMG directories

SYNOPSIS
ipsw diff [flags]

DESCRIPTION
Diff IPSWs, OTAs, or patched OTA DMG directories

OPTIONS
--allow-list=[]
    Filter MachO sections to diff (e.g. TEXT.text)

--block-list=[]
    Remove MachO sections to diff (e.g. TEXT.info_plist)

--cache-dir=""
    Override default cache directory (default: $XDG_CACHE_HOME/ipsw/diffs or ~/Library/Caches/ipsw/diffs)

--cache-max-size="5GiB"
    LRU eviction threshold for the cache directory (e.g. 5GiB, 500MB)

--clean[=false]
    Delete the cached DB for this IPSW pair before running

--ent[=false]
    Diff MachO entitlements

--feat[=false]
    Diff feature flags

--files[=false]
    Diff files

--fw[=false]
    Diff other firmwares

-h, --help[=false]
    help for diff

--html[=false]
    Output diff as HTML

--insecure[=false]
    Allow insecure connections when fetching AEA keys

--json[=false]
    Output diff as JSON

-k, --kdk=[]
    Path to KDKs to diff

--key-db=""
    Path to AEA keys JSON database (for OTA diffs)

--key-val=""
    Base64 encoded AEA symmetric encryption key (for OTA diffs)

--launchd[=false]
    Diff launchd configs

--loc[=false]
    Diff localized string resources (.strings, .stringsdict, .loctable)

-m, --markdown[=false]
    Output diff as Markdown

--no-cache[=false]
    Disable persistent cache; use a temp SQLite DB cleaned on exit

-o, --output=""
    Folder to save diff output

-s, --signatures=""
    Path to symbolicator signatures folder

--starts[=false]
    Diff MachO function starts

--strs[=false]
    Diff MachO cstrings

-t, --title=""
    Title of the diff

OPTIONS INHERITED FROM PARENT COMMANDS
--color[=false]
    colorize output

--config=""
    config file (default is $HOME/.config/ipsw/config.yaml)

--no-color[=false]
    disable colorize output

-V, --verbose[=false]
    verbose output

EXAMPLE
    # Diff two IPSWs
    ❯ ipsw diff <old.ipsw> <new.ipsw> --fw --launchd --output <output/folder> --markdown
    # Diff two OTAs (darwin only, requires full OTAs)
    ❯ ipsw diff <old.ota> <new.ota> --output <output/folder> --markdown
    # Diff two OTAs with AEA key database
    ❯ ipsw diff <old.ota> <new.ota> --key-db keys.json --output <output/folder> --markdown
    # Diff two ota patch rsr output directories
    ❯ ipsw diff <old_rsr_dir> <new_rsr_dir> --files --output <output/folder> --markdown
    # Diff two IPSWs with KDKs
    ❯ ipsw diff <old.ipsw> <new.ipsw> --output <output/folder> --markdown
    	--kdk /Library/Developer/KDKs/KDK_15.0_24A5264n.kdk/System/Library/Kernels/kernel.release.t6031
    	--kdk /Library/Developer/KDKs/KDK_15.0_24A5279h.kdk/System/Library/Kernels/kernel.release.t6031

SEE ALSO
ipsw(1)

HISTORY
30-Jun-2026 Auto generated by spf13/cobra