How to Mount an iPhone With iOS 10 on Kali Linux

Pairing and mounting an iPhone on Kali requires to install libimobiledevice and ifuse. The problem is, libimobiledevice 1.2.0 coming with the standard repositories does not work with iOS 10. The solution consists in installing the unreleased versions of libimobiledevice and ifuse from github.

Set up the environment

Install required packages:

$ sudo apt-get install -y build-essential git automake libtool pkg-config libplist-dev libplist++-dev python-dev libssl-dev libusb-1.0-0-dev libfuse-dev

Build and install compatible libraries

Clone git repositories of libimobiledevice and ifuse:

$ mkdir /tmp/src
$ cd /tmp/src
$ for x in libusbmuxd usbmuxd libimobiledevice ifuse; do git clone https://github.com/libimobiledevice/${x}.git; done

Build and install from source (order matters):

  • libusbmuxd
$ cd /tmp/src/libusbmuxd
$ ./autogen.sh --prefix="/usr"
$ sudo make
$ sudo make install
  • libimobiledevice
$ cd /tmp/src/libimobiledevice
$ ./autogen.sh --prefix="/usr"
$ sudo make
$ sudo make install
  • usbmuxd
$ cd /tmp/src/usbmuxd
$ ./autogen.sh --prefix="/usr"
$ sudo make
$ sudo make install
  • ifuse
$ cd /tmp/src/ifuse
$ ./autogen.sh --prefix="/usr"
$ sudo make
$ sudo make install

Then reboot.

Connect the iPhone

Create a mount point:

$ sudo mkdir /media/iphone
$ sudo chown <user>:<group> /media/iphone
$ chmod 775 /media/iphone

Connect your iPhone with the USB cable. Accept the pairing request when prompted.

Get your iPhone identifier (UDID):

$ /usr/bin/idevice_id -l

This command displays a 40 character hexadecimal identifier, unique to your device. If the command does not return, it is probably because you have not accepted the pairing from the iPhone side.

$ /usr/bin/idevicepair -u <udid> pair

Mount your iPhone

$ ifuse /media/iphone/
$ ls /media/iphone

Now you should have access to your iPhone data.

Unmount your iPhone

fusermount -u /media/iphone