>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Swift

有料ツールなしでiPhoneバックアップの中身を覗く方法

Phosphor Banner

iPhoneバックアップから特定のチャットを抽出しようとした経験はないでしょうか。あるいは、バックアップにどんなファイルが保存されているかだけ確認したいと思ったこともあるでしょう。Appleの標準ツールにはそういう用途に応える機能がないことに気づくはずです。Finderのバックアップは"全か無か"方式で動作します。リスクを承知でバックアップ全体を電話に復元するか、iMazingのような有料ツールに年間約50ドルを支払うか、いずれかの選択を迫られます。

開発者のMomen Basel氏が手がけたPhosphorプロジェクトを最近見つけました。MITライセンスのオープンソースコードを持つmacOSネイティブクライアントで、サブスクリプションやiCloudへの依存なしにほぼすべてのiOS管理タスクを処理できます。


このアプリでできること

Phosphorは、従来は有料ソフトの維持やコマンドラインツールのソースからのコンパイルが必要だった日常的なタスクを自動化します。

+-------------------------------------------------------------+
| Phosphor (macOS 14+ / SwiftUI)                              |
|   ├── Бэкапы (полные, инкрементальные, просмотр Manifest.db) |
|   ├── Экспорт iMessage, WhatsApp, заметок и контактов       |
|   ├── Просмотр файловой системы через AFC                   |
|   └── Диагностика (батарея, стриминг syslog, краш-репорты)  |
+-------------------------------------------------------------+
                                          
         (primary)                         (fallback)
 [pymobiledevice3]                  [libimobiledevice]

バックアップの解析とナビゲーション

Phosphorのメイン機能はローカルバックアップの操作です。Manifest.dbを開き、内部のSQLiteデータベースを読み取り、データを写真、メッセージ、添付ファイル、システムファイルといった馴染みのあるカテゴリに整理します。

素晴らしい点是、暗号化されたバックアップをそのまま扱えることです。PhosphorはPBKDF2とAES-256-CBCアルゴリズムを使ってデータをネイティブに復号化し、外部のPythonスクリプトを呼び出したり回避策を講じたりする必要がありません。パスワードは一度入力すればOKで、プログラムはそのキーをセッション中はメモリに保持しチェックボックスにチェックを入れていればmacOS Keychainに保存します。

メッセージとメディアのエクスポート

iMessageやSMSからメッセージを抽出する必要がある場合、Phosphorは青と灰の吹き出しで知られるおなじみのインターフェースで会話スレッドを表示します。ダイアログは以下の形式でエクスポートできます:

  • メーラーのビジュアルスタイルを保持したHTML
  • дальнейшего парсинга и анализа用クリーンなJSONまたはCSV
  • プレーンテキスト

同じ抽出機能はWhatsAppデータベース(ChatStorage.sqlite)、Apple Notes、vCard形式の連絡先、.icsのカレンダーイベントに対しても動作します。

IPAのインストールとファイルへの直接アクセス

Apple File Conduit(AFC)プロトコルを通じて、FUSEディスクをシステムにマウントする必要なくデバイスのファイル構造を閲覧できます。アプリのサンドボックス(Documents、Library、tmpフォルダ)を覗いたり、シンプルなドラッグ&ドロップでファイルをコピーしたり、接続されたテスト用iPhoneに.ipaを素早くプッシュしたりできます。

ハードウェア診断とログ閲覧

開発者とテスターにとって診断セクションは有用です。Phosphorは以下の情報をリアルタイムで読み取ります:

  • 正確なバッテリー状態:製造時容量と実際の容量(mAh)、充電サイクル数、現在の温度
  • カテゴリ別の詳細なストレージ内訳
  • ログレベル(Error、Warning、Debug)のカラー表示とフィルタリング機能を備えたシステムログストリーム(syslog)
  • クラッシュレポートとデバイス上のアクティブプロセスの一覧

内部の技術的詳細

PhosphorはSwift 5.9とSwiftUIで書かれており、macOS 14 Sonoma以降を対象としています。著者は、アプリを高速に保ち不必要な依存関係を山のように抱え込まないようにするための、いくつかのアーキテクチャ上の興味深い決定を下しています。

  1. 2つのバックエンドから選択可能。メインエンジンは現在のiOSバージョン(最近のリリースを含む)をサポートするpymobiledevice3ライブラリです。何らかの理由で利用できない場合、インターフェースは自動的にクラシックなlibimobiledeviceに切り替わります。
  2. Cバインディングなし。プロジェクト内でCライブラリを複雑にコンパイルする代わりに、ロジックはサブプロセスを通じてコマンドラインツールと通信します。これによりプロジェクトのメンテナンスが簡素化されます。
  3. システムライブラリを使った直接的なSQLite解析。データベース読み取り用のサードパーティ製Swiftパッケージは使用せず、Phosphorはネイティブシステムsqlite3を使用します。
  4. 安全なバックアップ保存。バージョン1.0.4以降、Phosphorはコピーを~/Documents/Phosphor Backupsに保存します。これによりFinderの標準バックアップから隔離され、アプリにフルディスクアクセス権を付与する必要がありません。

インストールと実行の方法

最も素早くアプリをデプロイする方法はHomebrew Cask経由です:

brew tap momenbasel/phosphor
brew install --cask phosphor

メインバックエンドにはpymobiledevice3のインストールが必要です:

brew install pipx
pipx install pymobiledevice3

リポジトリから手動でアプリをビルドする場合:

# Клонируем репозиторий
git clone https://github.com/momenbasel/Phosphor.git
cd Phosphor

# Собираем релизный бинарник
swift build -c release

# Упаковываем в .app бандл
bash Scripts/build.sh

# Запускаем собранный клиент
open .build/Phosphor.app

ケーブルで電話を初めて接続する際は、画面ロックを解除して「このコンピュータを信頼」をタップする必要があります。


まとめ

Phosphorは、iPhoneから特定のファイルを抽出したり、バッテリーの消耗を確認したり、メッセージのアーカイブをエクスポートする必要がある人に役立つツールであることが判明しました。

このプロジェクトが有用的是什么人:

  • 年に数回エクスポートするだけで有料の大型ソフトを払いたくないMacユーザー
  • クラッシュログの迅速な収集、アプリのデータベース確認、syslogのモニタリングが必要なQAエンジニアとiOS開発者
  • クラウドに依存せずメッセージと連絡先のアーカイブをローカルに保存している人

ソースコードはMITライセンスの下でGitHub上にあり、プロジェクトは積極的にメンテナンスされており、有料デバイスマネージャの基本的なシナリオを簡単に置き換えます。

関連プロジェクト