>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Swift

Jak zajrzeć do kopii zapasowej iPhone'a bez płatnych narzędzi

Phosphor Banner

Jeśli kiedykolwiek próbowałeś wyodrębnić konkretną rozmowę z kopii zapasowej iPhone'a lub po prostu chciałeś zobaczyć, jakie pliki są przechowywane w kopii zapasowej, prawdopodobnie natknąłeś się na ograniczenia standardowych narzędzi Apple. Finder wykonuje kopię zapasową na zasadzie „wszystko albo nic”. Albo przywracasz cały obraz na telefon z ryzykiem nadpisania świeżych danych, albo płacisz około 50 dolarów rocznie za coś takiego jak iMazing.

Ostatnio natknąłem się na projekt Phosphor autorstwa programisty Momena Basela. To natywny klient macOS z kodem źródłowym na licencji MIT, który obsługuje niemal wszystkie zadania związane z zarządzaniem iOS bez subskrypcji ani zależności od iCloud.


Co potrafi aplikacja

Phosphor zajmuje się rutynowymi zadaniami, które wcześniej wymagały posiadania płatnego oprogramowania lub kompilowania narzędzi wiersza poleceń ze źródeł.

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

Analiza i nawigacja po kopiach zapasowych

Główną funkcją Phosphora jest praca z lokalnymi kopiami zapasowymi. Otwiera Manifest.db, odczytuje bazy danych SQLite wewnątrz i organizuje dane w znajome kategorie: zdjęcia, wiadomości, załączniki, pliki systemowe.

Co warte uwagi, aplikacja obsługuje szyfrowane kopie zapasowe od razu po wyjęciu z pudełka. Phosphor natywnie odszyfrowuje dane przy użyciu algorytmów PBKDF2 i AES-256-CBC, bez obejść ani wywoływania zewnętrznych skryptów Pythona. Hasło wprowadza się raz, program przechowuje klucz w pamięci na czas sesji lub zapisuje w macOS Keychain, jeśli zaznaczysz odpowiednie pole.

Eksport wiadomości i mediów

Jeśli musisz wyodrębnić wiadomości z iMessage lub SMS, Phosphor wyświetla wątki rozmów w znajomym interfejsie z niebieskimi i szarymi balonikami. Rozmowy można eksportować w różnych formatach:

  • HTML z zachowanym wizualnym stylem komunikatora
  • Czysty JSON lub CSV do dalszego przetwarzania i analizy
  • Zwykły TXT

Ta sama ekstrakcja działa dla bazy danych WhatsApp (ChatStorage.sqlite), Notatek Apple, kontaktów w formacie vCard oraz zdarzeń kalendarza w formacie .ics.

Instalacja IPA i bezpośredni dostęp do plików

Dzięki protokołowi Apple File Conduit (AFC) narzędzie pozwala przeglądać strukturę plików urządzenia bez konieczności montowania dysków FUSE w systemie. Możesz zajrzeć do piaskownic aplikacji (Documents, Library, foldery tmp), kopiować stamtąd pliki prostym przeciągnięciem i upuszczeniem lub szybko wysłać .ipa na podłączony testowy iPhone.

Diagnostyka sprzętu i przeglądanie logów

Deweloperzy i testerzy docenią sekcję diagnostyczną. Phosphor odczytuje w czasie rzeczywistym:

  • Dokładny stan baterii: fabryczną i rzeczywistą pojemność w mAh, liczbę cykli ładowania oraz aktualną temperaturę.
  • Szczegółowy podział pamięci masowej według kategorii.
  • Strumień logów systemowych (syslog) z kolorowym wyróżnianiem poziomów logowania (Error, Warning, Debug) i filtrowaniem.
  • Raporty o awariach i listę aktywnych procesów na urządzeniu.

Szczegóły techniczne pod maską

Phosphor jest napisany w Swift 5.9 i SwiftUI dla macOS 14 Sonoma i nowszych. Autor podjął kilka interesujących decyzji architektonicznych, które sprawiają, że aplikacja jest szybka i nie ciągnie za sobą góry niepotrzebnych zależności.

  1. Dwa backendy do wyboru. Główny silnik to biblioteka pymobiledevice3, która obsługuje bieżące wersje iOS, w tym najnowsze wydania. Jeśli z jakiegoś powodu jest niedostępna, interfejs automatycznie przełącza się na klasyczny libimobiledevice.
  2. Brak powiązań z C. Zamiast złożonej kompilacji bibliotek C w projekcie, logika komunikuje się z narzędziami wiersza poleceń przez subprocess. Upraszcza to utrzymanie projektu.
  3. Bezpośrednie parsowanie SQLite przez biblioteki systemowe. Brak zewnętrznych pakietów Swift do odczytu baz danych — Phosphor używa natywnego systemowego sqlite3.
  4. Bezpieczne przechowywanie kopii zapasowych. Począwszy od wersji 1.0.4, Phosphor zapisuje kopie w ~/Documents/Phosphor Backups. Izoluje to je od standardowych kopii zapasowych Findera i nie wymaga udzielania aplikacji pełnego dostępu do dysku.

Jak zainstalować i uruchomić

Najszybszy sposób wdrożenia aplikacji to Homebrew Cask:

brew tap momenbasel/phosphor
brew install --cask phosphor

Główny backend wymaga zainstalowania pymobiledevice3:

brew install pipx
pipx install pymobiledevice3

Jeśli chcesz zbudować aplikację ręcznie z repozytorium:

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

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

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

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

Przy pierwszym podłączeniu telefonu kablem musisz odblokować ekran i nacisnąć „Ufaj temu komputerowi".


Podsumowanie

Phosphor okazał się poręcznym narzędziem dla tych, którzy od czasu do czasu potrzebują wyodrębnić konkretne pliki z iPhone'a, sprawdzić zużycie baterii lub wyeksportować działające archiwum wiadomości.

Kto znajdzie ten projekt przydatny:

  • Użytkownicy Maca, którzy nie chcą płacić za rozbudowane oprogramowanie własnościowe tylko po to, żeby wykonać kilka eksportów w roku.
  • Inżynierowie QA i deweloperzy iOS do szybkiego zbierania logów awarii, sprawdzania baz danych aplikacji i monitorowania syslog.
  • Ci, którzy przechowują archiwa wiadomości i kontaktów lokalnie bez polegania na chmurze.

Kod źródłowy znajduje się na GitHubie na licencji MIT, projekt jest aktywnie rozwijany i z łatwością zastępuje podstawowe scenariusze płatnych menedżerów urządzeń.

Powiązane projekty