初代 iPod は、簡単にマウントして USB ドライブのようにアクセスできました。iPhone でも同様のことは可能ですが、扱いたいデータの種類によって方法が異なります。
この記事では、次のさまざまな方法を紹介します。
| 方法 | アクセスできるファイル | 必要なもの |
|---|---|---|
| PTP | 写真とビデオ | Windows と macOS に標準搭載 |
| AFC | 写真、ビデオ、一部のアプリ | iTunes |
| FUSE(脱獄なし) | 写真、ビデオ、一部のアプリ | 無料の FUSE クライアント |
| FUSE(脱獄あり) | すべてのファイル | 脱獄、無料の FUSE クライアント |
| Filza 経由の WebDAV | すべてのファイル | 脱獄、無料の WebDAV クライアント |
| AFC2 | すべてのファイル | 脱獄、AFC2 プラグイン、AFC2 クライアント |
| その他 | なし | 最近の iOS では動作しません |
脱獄していないデバイスでは、カメラのファイルと一部のアプリのデータしか扱えません。この記事では、どちらの方法も取り上げます。
PTP:写真、ビデオ、カメラのデータをディスクマウントとしてアクセスする
iOS は、最近のデバイスを USB で接続すると、自動的にカメラとして認識させます。この方法には Picture Transfer Protocol(PTP)が使われます。これは、写真をやり取りするためのかなり限定的な仕組みです。写真が表示されるフォルダの DCIM には、見覚えがあるかもしれません。
PTP にはいくつかの欠点があります。最もわかりやすいのは、カメラ以外のファイルにはアクセスできないことです。また、PTP にはファイルやフォルダの名前や内容を変更する機能がなく、変更を反映するには削除して作り直す必要があります。これは遅い方法です。
iTunes を使って AFC 経由で写真とアプリのデータにアクセスする
Apple のナレッジベースには、iTunes を使った基本的なファイル共有 の管理方法を説明した記事があります。
FUSE を使って USB 経由でアプリのデータにアクセスする
FUSE は、ユーザーが Windows や Mac コンピュータで、システムに管理者レベルの変更を加えることなくドライブをマウントできるようにする仕組みです。FUSE は「filesystem in userspace」の略で、ほとんどのプラットフォームでさまざまな形で提供されています。FUSE 自体は抽象化レイヤーであり、デバイスやデータソースと直接通信する技術ではありません。通常はその役割に別の方法が使われます。iPhone をドライブとしてマウントする場合、FUSE は SSH、AFC/AFC2、PTP、WebDAV といった別のプロトコルを使って iPhone と通信します。Windows では Dokan ユーザーモードファイルシステム がよく使われ、macOS では osxfuse が人気です。
ユーザーの視点では、FUSE がデバイスのデータの見せ方を統一するため、通常は、どの基盤プロトコルがマウントを担っているかは問題になりません。
macOS で FUSE マウントを使う
macOS でこの方法と、デバイスのマウント方法を実演します。この方法を試すには、無料の Homebrew パッケージマネージャ をインストールし、macOS のターミナルの使い方に慣れている必要があります。
まず、デバイスの UDID を調べます。無料版の iPhone Backup Extractor や lsusb コマンド、あるいは ioreg -p IOUSB -l -w 0 で確認できます。デバイスを接続した状態で iPhone Backup Extractor を実行し、デバイスを選択して「Info」タブを選びます。「Hardware identifiers」セクションに UDID が表示されます。

iPhone Backup Extractor に表示されるデバイスのデータ
次に、macOS 用の FUSE を準備します。
$ brew tap homebrew/cask
$ brew cask install osxfuse
==> Caveats
To install and/or use osxfuse you may need to enable their kernel extension in
System Preferences → Security & Privacy → General
For more information refer to vendor documentation or the Apple Technical Note:
https://developer.apple.com/library/content/technotes/tn2459/_index.html
You must reboot for the installation of osxfuse to take effect.
続いて、FUSE 経由で iOS デバイスと通信するコードである ifuse をインストールします。
$ brew install ifuse
ifuse をインストールしたら、先ほど取得した UDID を使って、iPhone や iPad をマウントできます。
$ mkdir ~/iphone
$ ifuse ~/iphone --udid 000000000000000000000000
これで、iPhone がコンピュータ上でディスクとしてマウントされます。さらに踏み込んで多くのデータを調べたい場合は、この superuser の投稿 が非常に便利です。同様に、こちらの投稿 では usbmuxd ツールの使い方を取り上げています。
発生する可能性のあるエラーのトラブルシューティング
ifuse が次のようなエラーを出すことがあります:Invalid device UDID specified, length needs to be 40 characters。iPhone X 以降、Apple は UDID の形式を、従来の 40 バイトから、24 バイトとダッシュ(-)を使う形式に変更しました。
Failed to connect to lockdownd service on the device. Try again. If it still fails try rebooting your device. が表示された場合は、デバイスが接続されていて、「このコンピュータを信頼しますか?」というダイアログが表示されていないことを確認してください。先にそのダイアログで許可する必要があります。そのあと ERROR: Device 000000000000000000000000 returned unhandled error code -13 が表示された場合は、デバイスを取り外して再接続する必要があります。
この作業中は、iOS デバイスへの接続を試みている可能性のある他のアプリケーションが、PC や Mac で動作していないことを確認しておくと安心です。
マウントする iOS デバイスが常に 1 台だけの場合は、ifuse ~/iphone を実行するだけで済みます。
usbmuxd? のプレリリース版を使う必要がある場合
usbmuxd はあまり頻繁には更新されないため、新しいバージョンの iOS がリリースされたときに、対応していない場合があります。これを修正するには、次のように最新の開発版をインストールできます。
brew unlink usbmuxd
brew install --HEAD usbmuxd
brew unlink libimobiledevice
brew install --HEAD libimobiledevice
brew cask uninstall osxfuse
brew cask install osxfuse idevicepair
脱獄したデバイスで FUSE を使って USB 経由でアプリのデータにアクセスする
手順は上記とまったく同じです。デバイスを脱獄していると、すぐにより多くのデータが表示されます。便利でしょう?
Filza の WebDAV サーバで iOS のルートファイルにアクセスする
脱獄した iOS デバイスでは、Cydia 経由で Filza というファイルマネージャアプリをインストールできます。Filza の設定で、WebDAV サーバモードを有効にできます。これにより、ほかのデバイスから iOS デバイスにアクセスするためのかなりシンプルなインターフェースが提供されますが、セキュリティは極めて低くなります。WebDAV は Web 上のデータを扱うための非常に汎用的な仕組みで、Filza に組み込まれている Web インターフェースを含め、アクセスできるクライアントが数多くあります。Web ブラウザでデバイスに接続すると、インターフェースが表示されます。簡単です。
AFC2 を使って USB 経由で iOS のファイルにアクセスする
AFC2 とは?
AFC は「Apple File Conduit」の略で、iOS デバイスからホストコンピュータにデータを転送するための Apple 独自の仕組みです。AFC はすべての iOS デバイスで動作しますが、限られたデータにしかアクセスできないよう制限されています。「AFC2」は、脱獄コミュニティが開発した一連のツールの通称で、AFC をエミュレートしながらデバイス全体へのアクセスを提供します。AFC2 の最新の実装は Cannathea が開発したもので、GitHub で入手できます。
AFC2 は Cydia からインストールできます。インストールすると、AFC クライアントでデバイス全体を参照できるようになります。
脱獄したデバイスのすべてのデータにアクセスするその他の方法
iOS 8 がリリースされる前は、脱獄したデバイスに、接続時に iPhone を USB メモリとして 認識させる Cydia プラグインが いくつか ありました。残念ながら、これらは最近のバージョンの iOS ではサポートされていません。
マウントした iOS デバイスから削除したファイルを復元する
iPhone や iPad をドライブとしてマウントできるなら、脱獄したデバイスでファイルシステムを直接操作して、削除したファイルを復元できると考えるかもしれません。残念ながら、iPhone のファイルシステムは暗号化されているため、この方法でファイルを復元することはできません。データの断片が見つかったとしても、復号できません。各ファイルには固有の暗号化キーがあり、そのキーはファイルの削除時に破棄されます。
Apple の iOS セキュリティガイド では、17 ページの「アーキテクチャの概要」でこれについて簡単に触れています。
データパーティション上のファイルが作成されるたびに、データ保護は新しい 256 ビットのキー(「ファイルごと」のキー)を作成してハードウェア AES エンジンに渡します。エンジンはそのキーを使い、ファイルをフラッシュメモリに書き込む際に AES-XTS モードで暗号化します。A7、S2、S3 SoC を搭載するデバイスでは、AES-CBC が使われます。初期化ベクトルは、ファイル内のブロックオフセットを使って計算され、ファイルごとのキーの SHA-1 ハッシュで暗号化されます。
マウントは、既存のファイルにアクセスするには有効ですが、復元にはあまり役立ちません。復元には、iTunes バックアップまたは iCloud バックアップ、iCloud と同期されたデータ、あるいはデータが削除される前に取得したデバイスのフォレンジックイメージが必要です。
おまけ:iPhone や iPad から Windows コンピュータをマウントする
iOS 13 では、SMB のサポートが導入されました。これにより、Windows コンピュータのドライブにリモートでアクセスできます。手順は次のとおりです。
- Windows コンピュータの IP アドレスを調べます。
ipconfigコマンドで確認できます。 - Windows コンピュータで、共有したいフォルダを右クリックし、
Properties→Sharing→Advanced sharingの順に選択します。「このフォルダーを共有する」をクリックします。 - 「共有」タブで
Share...を選び、ドロップダウンメニューからユーザーアカウントを選択して追加し、「読み取り/書き込み」の権限があることを確認します。「共有」と「適用」をクリックして、ウィンドウを閉じます。 - iOS デバイスで Apple の「ファイル」アプリを開き、「サーバに接続」をタップします。
smb://に続けて PC の IP アドレスを入力します。次に「登録ユーザ」を選び、Windows のアカウント名とパスワードを入力します。
これで、Windows のドライブが iOS デバイスに表示されます。