Play videos on Apple's iBoot over USB.
These packages will be required to build ibootvideoplayer:
- pkg-config
- libirecovery-1.0
- libimobiledevice-glue-1.0
- libimg3tool
- libimg4tool
- libibootim
- libpng
- zlib
- libavcodec, libavformat, libavutil, libswresample, libavfilter, and libswscale (ffmpeg)
Use CMake to build and install the executable:
git clone https://github.com/XboxOneSogie720/ibootvideoplayer.git
cd ibootvideoplayer
mkdir build && cd build
cmake ..
make
sudo make install
This project has only been tested on macOS Catalina and macOS Tahoe, both Intel and Apple Silicon. Linux will likely work. Windows will likely fail.
Note that your device will need to be in DFU mode with sigchecks removed.
- For first-gen iPhones and iPod, send a patched WTF file, PwnageTool makes an IPSW with one in there for you.
- For IMG3 devices, use limera1n.
- For IMG4 devices, use gaster.
| Short Option | Long Option | Following Argument Type | Description |
|---|---|---|---|
| -h | --help | None | Prints usage information. |
| -i | --input | String | Path to the input file. If a video, an archive will be created at -o's argument. If an archive (ibootvideoplayerarchive.ibvpa), playback will occur. |
| -p | --play-now | None | Skips uploading of the iBSS and iBEC and just plays the archive. This means you'd have to upload a patched iBSS/iBEC yourself. |
| -s | --ibss | String | Path to your sigcheck-patched iBSS to send on playback. |
| -c | --ibec | String | Path to your sigcheck-patched iBEC to send on playback. |
| Note on -s and -c: These should be the raw payloads and not in an IMG3/IM4P/IMG4 container. | |||
| -W | --width | Unsigned 16-bit Integer | Width of the device you're targeting. |
| -H | --height | Unsigned 16-bit Integer | Height of the device you're targeting. |
| Note on -W and -H: For iPhone, iPad and iPod, they should be taken as if the phone's charging port is facing you. | |||
| -o | --output | String | Where to save the ibootvideoplayer archive. |
| -I | --image-template | String | Path to a stock iBoot image from your IPSW. |
| -S | --ibss-template | String | Path to a stock iBSS from your IPSW. |
| -C | --ibec-template | String | Path to a stock iBEC from your IPSW. |
| Note on -I, -S, and -C: These should all be IMG3 containers. | |||
| -m | --im4m | String | Path to a valid IM4M that will be used to pseudo-sign the bootloaders and frames. |
| Key | Action |
|---|---|
| Spacebar/k | Play/Pause. |
| a/d | Seek backward/forward 5 seconds. |
| j/l | Seek backward/forward 10 seconds. |
| . | While the video is paused, skip to the next frame. |
| , | While the video is paused, go back to the previous frame. |
| Numbers 1 to 9 | Seek to 10% to 90% of the video. |
| Number 0 | Seek to the beginning of the video. |
| esc/q | Quit playback. |
ibootvideoplayer now has the capability to detect which pwner pwnd your device, and if it was usbliter8, uses its custom file uploading protocol. Implementation was ported directly from usbliter8ctl, so big thanks!
The video to archive pipeline is working, fully compatible with IMG3/IMG4, and has stable playback with no drift seen in testing.
You know how your device displays the dead battery icon when it's dead, and the Apple logo when it starts up? That's iBoot's capability to display a picture. And what is a video? A bunch of pictures that are streamed really really fast, and that's exactly what this program does.