An open-source Python command-line tool that sends and receives files with Apple AirDrop over Wi-Fi, using reverse-engineered protocol compatibility.
blacktop/ipsw
A command-line toolkit for Apple firmware research, covering IPSW/OTA downloads, Mach-O and dyld cache analysis, kernelcaches, and connected iOS devices.
- Stars
- 3,871
- Forks
- 326
- Open issues
- 23
- Last commit
- 4 hours ago
What is it?
ipsw is a Go command-line toolkit for researchers who examine Apple firmware and operating system internals. It downloads and unpacks IPSW and OTA firmware packages for iOS and macOS, and it can also fetch macOS installers, Xcode, and KDKs.
Once firmware is in hand, the tool inspects Mach-O binaries, disassembles ARM64 code, and works with dyld shared caches. It can extract dylibs, dump Objective-C headers, and read Swift metadata. For the kernel, it extracts KEXTs, lists syscalls and symbols, and compares kernelcaches between builds.
The CLI also talks to connected iOS devices to list apps, transfer files over AFC, capture syslogs, and mount developer images. Other commands cover IMG4 parsing, AEA decryption, crash log symbolication, and optional LLM-assisted decompilation. A separate ipswd daemon exposes a REST API for automation.
Key features
- 01Download IPSWs, OTAs, macOS installers, Xcode, and KDKs from the command line.
- 02Inspect Mach-O load commands, symbols, signatures, and entitlements, and disassemble ARM64 code.
- 03Extract dylibs and dump Objective-C headers from dyld shared caches.
- 04Extract KEXTs and compare kernelcaches across firmware builds.
- 05List apps, transfer files, and capture logs from connected iOS devices.
- 06Expose a REST API through the ipswd daemon for automation.
Use cases
- Extracting the kernelcache from a new iOS firmware release for analysis.
- Dumping Objective-C headers for private frameworks from a dyld shared cache.
- Diffing two firmware builds to see which components changed.
- Symbolicating iOS crash logs during debugging or security research.
Quick start
- 1
Install on macOS with Homebrew (extras build)
brew install blacktop/tap/ipsw - 2
Install on Linux with snap
sudo snap install ipsw - 3
Download the latest IPSW for iPhone 15 Pro
ipsw download ipsw --device iPhone16,1 --latest
Things to know
- Some commands depend on the host OS or build variant, and Frida support needs a separate build.
- Building from source requires Go 1.26 or later and a C toolchain for CGO.
In collections
Topics
FAQ
- What is ipsw?
- A command-line toolkit for Apple firmware research, covering IPSW/OTA downloads, Mach-O and dyld cache analysis, kernelcaches, and connected iOS devices. ipsw is a Go command-line toolkit for researchers who examine Apple firmware and operating system internals. It downloads and unpacks IPSW and OTA firmware packages for iOS and macOS, and it can also fetch macOS installers, Xcode, and KDKs.
- Is ipsw free to use? What license does it have?
- ipsw is open source under the MIT license. Check the license terms before using it in commercial products.
- Is ipsw still maintained?
- Actively maintained. The last commit to ipsw was on Nov 7, 2026.
- What can I use ipsw for?
- Extracting the kernelcache from a new iOS firmware release for analysis. Dumping Objective-C headers for private frameworks from a dyld shared cache. Diffing two firmware builds to see which components changed. Symbolicating iOS crash logs during debugging or security research.
- How do I install ipsw?
- Install on macOS with Homebrew (extras build): brew install blacktop/tap/ipsw Install on Linux with snap: sudo snap install ipsw Download the latest IPSW for iPhone 15 Pro: ipsw download ipsw --device iPhone16,1 --latest
- Where can I get ipsw?
- The source code and installation instructions are on GitHub: https://github.com/blacktop/ipsw
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A cross-platform C++ library with Python and Rust bindings to parse, modify and abstract ELF, PE, Mach-O and Android executable formats.
A Rust library and CLI that export iMessage data to TXT or HTML and run diagnostics on the iMessage database.
A full-featured system emulator and virtual machine host for iOS, macOS and visionOS, built on QEMU to run Windows, Linux and other systems.
A fast, scriptable command-line tool for the App Store Connect API to automate iOS, macOS, tvOS and visionOS releases.
A Rust-based firmware analysis tool that identifies and optionally extracts files and data embedded inside other files.