
iOS/macOS Research Swiss Army Knife
iOS/macOS Research Swiss Army Knife
ipsw 🤔ipsw is a comprehensive command-line research framework for iOS and macOS. It provides an extensive toolkit for security researchers, reverse engineers, jailbreak developers, and iOS enthusiasts to download, parse, and analyze Apple firmware and interact with iOS devices.
Using blacktop tap (includes extras)
brew install blacktop/tap/ipsw
Using official Homebrew formula
brew install ipsw
sudo snap install ipsw
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
# Download latest iOS IPSW
ipsw download ipsw --device iPhone16,1 --latest
# Extract kernelcache
ipsw extract --kernel iPhone16,1_18.2_22C150_Restore.ipsw
# Analyze dyld_shared_cache
ipsw dyld info /path/to/dyld_shared_cache_arm64
# Get device information
ipsw idev list
ipsw download ipsw --device iPhone16,1 --latest
ipsw extract --kernel iPhone16,1_18.2_22C150_Restore.ipsw
ipsw diff iPhone16,1_18.1_22B83_Restore.ipsw iPhone16,1_18.2_22C150_Restore.ipsw
ipsw macho info /path/to/binary
ipsw macho disass /path/to/binary --symbol _main
ipsw macho search /path/to/binary --string "password"
ipsw dyld info /path/to/dyld_shared_cache
ipsw dyld extract /path/to/dyld_shared_cache --dylib Foundation
ipsw dyld objc class /path/to/dyld_shared_cache --class NSString
idev)ipsw idev list
ipsw idev afc ls /
ipsw idev apps ls
ipsw idev backup create
ipsw idev syslog
ipsw img4 dec iBoot.img4
ipsw fw sep iPhone16,1_18.2_22C150_Restore.ipsw
ipsw fw iboot iPhone16,1_18.2_22C150_Restore.ipsw
ipsw appstore cert ls
ipsw appstore device reg --name "My Device" --udid 1234567890
ipsw appstore profile create --name "Development Profile"
ipsw symbolicate crash.ips --dsym /path/to/symbols
ipsw class-dump /path/to/binary
ipsw ssh debugserver
ipsw consists of two main components:
ipsw - Main CLI tool with complete analysis capabilitiesipswd - REST API daemon for remote operations and automationipsw supports YAML configuration files and environment variables:
# Create config directory
mkdir -p ~/.config/ipsw
# Copy example config
cp config.example.yml ~/.config/ipsw/config.yaml
❱ ipsw macho disass /System/Library/PrivateFrameworks/ApplePushService.framework/apsd --entry \
--dec --dec-model "Claude 3.7 Sonnet"
• Loading symbol cache file...
• Decompiling... 🕒
int main(int argc, char *argv[]) {
@autoreleasepool {
__set_user_dir_suffix(@"com.apple.apsd");
@autoreleasepool {
APSDaemon *daemon = [[APSDaemon alloc] init];
if (daemon) {
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop run];
[runLoop release];
}
[daemon release];
}
return 0;
}
@catch (NSException *exception) {
if ([exception reason] == 1) {
id exceptionObj = [exception retain];
id logger = [APSLog daemon];
if (_os_log_type_enabled(logger, 0x11)) {
[exceptionObj logWithLogger:logger];
}
[logger release];
[exceptionObj release];
}
}
}
/docs when running ipswdSuper charge your AI agents with ipsw super powers
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
Ask questions about the repository using AI:
[!WARNING] AI responses may contain hallucinations - verify important information.
Pre-computed firmware differences: ipsw-diffs
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
Create an issue if you encounter problems - fixes are prioritized! A comprehensive test suite is planned for future releases.
Huge thanks to:
MIT License - see LICENSE for details.