The glue acts a connection layer between libqmi and the baseband processor of a smartphone.
We've tested this tooling with an iPhone 12 mini on iOS 14.2.1.
You may have to adapt the method signatures for subsequent iOS versions.
Due to the build requirements of libqmi, you must use a Linux-based operating system. We recommend Debian 11 which you can either use as your host operating system or as a virtual machine with a shared network. This is the default setting if you're creating a VM with UTM on a Mac.
Install Node.js for your system, the example script is built for Debian:
./scripts/install-nodejs.sh
You can usually install Frida via pip:
pip install frida-tools
If there's an error, you can try to build & install Frida yourself using the provided script:
./scripts/install-frida.sh
On all systems, you must install at least version 1.33.3 of libqmi. To build libqmi, you can use the provided script:
./scripts/install-libqmi.sh
- Jailbreak the target smartphone:
- iPhone 12 (mini) with iOS 14.2.1: unc0ver (TrollStore)
- Install Frida using Cydia.
First compile the agent script with
npm install
npm run build
If you are running the Linux-based operating system as your host system, you can start the glue application with
python3 glue.py -U
If you are running the Linux-based operating system inside of a VM, you must relay the Frida TCP port 27042 to the VM.
- Install libimobiledevice on the host system:
- Mac with homebrew:
brew install libimobiledevice
- Mac with homebrew:
- Find the IP address of your host system inside the shared network with the VM:
ifconfig
orip a
- Mac with UTM:
192.168.64.1
, which we'll use from now on as an example, replace it if you're host system has another address in the shared network
- Mac with UTM:
- Make the port available in the shared network:
iproxy 27042:27042 -s 192.168.64.1
Now you can start the glue application:
python3 glue.py -H 192.168.64.1
Use qmicli on your Linux-based OS to test if everything works:
qmicli -v -d ./qmux_socket --get-service-version-info
Between all the packet data, you should see a list of QMI services and not an error.