Trabalhando com dispositivos iOS e backups na linha de comando
O iPhone Backup Extractor inclui uma ferramenta de linha de comando chamada rictl
para trabalhar com backups e dispositivos do iOS. rictl
é executado em qualquer plataforma em que o Extrator de backup do iPhone é executado e funciona como qualquer ferramenta de linha de comando no estilo UNIX em termos de argumento e sintaxe de ajuda e retornos de shell.
Recursos em resumo:
- Formato compatível com UNIX (códigos de retorno do shell
$?
, datas formatadas no local, saída amigável ao awk, fluxosstdout
de dados exportados) - Suporte para vários caminhos de pesquisa simultâneos
- Suporte para todos os formatos de backup criptografado
- Suporte para caminhos relativos e baseados em casa (
~
)
Início rápido: extrair arquivos de banco de dados de um backup do iOS
Encontre backups que estão disponíveis no sistema local:
$ rictl backup search
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok
Extraia todos os arquivos de banco de dados do backup (observe o formato da expressão regular):
$ rictl backup extract -u 00000000-0000000000000000 -r "\.db" Extracting HomeDomain/Library/Voicemail/voicemail.db Extracting HomeDomain/Library/Safari/Bookmarks.db Extracting RootDomain/Library/Caches/locationd/consolidated.db Extracting WirelessDomain/Library/CallHistory/call_history.db ...
Glossário de Comando
Conseguindo ajuda
Você pode obter ajuda usando o rictl
como esperado, com o comando rictl help
:
$ rictl help Usage: rictl <command> [args] Available commands: backup Work with a local backup device Work with devices over USB and Wi-Fi Use 'rictl help <command>' for detailed help on a particular command
rictl
exposes a backup
mode for working with local backups, and a device
mode for working with iOS devices over USB or Wi-Fi.
Trabalhando com backups locais
$ rictl help backup Usage: rictl backup <command> [args] Work with local backups Available commands: search Search for local backups info Show info about a backup list List files in a backup extract Extract files from a backup export Export data from a backup Use 'rictl help backup <command>' for detailed help on a particular backup command
Ao trabalhar com backups, existem cinco opções: search
, info
, list
, extract
e export
.
Usando a search
para pesquisar backups locais do iOS
$ rictl help backup search Usage: rictl backup search [args] Search for local backups Available arguments: -s, --search-path=VALUE path to search for backups (two directories deep) -l include full path in listing output -h, --help show this message and exit
Na sua forma mais simples, a search
mostrará os backups em seu sistema:
$ rictl backup search
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok
Os campos mostrados são separados por espaços em branco e são:
-
UDID
- Tempo de criação de backup
- versão do dispositivo iOS
- identificador de dispositivo iOS
- Status do backup:
ok
ouin-progress
Opção -l
mostra caminhos de backup
Você pode usar -l
para incluir um campo de saída adicional com o caminho do backup:
$ rictl backup search -l
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok /Users/afit/Library/Application Support/MobileSync/Backup/00000000-0000000000000000
Opção -s
procura caminhos adicionais
Você pode usar -s
para incluir caminhos de pesquisa adicionais ao procurar backups.
$ rictl backup search -s /Users/afit/Google\ Drive\ File\ Stream/My\ Drive/My\ backups/ -s Downloads/ 00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok DB72CB76A00CB81675F19907D4AC2B298628D83C 09/06/2014 13:57:08 7.1.1 iPhone6,2 ok DB72CB76A00CB81675F19907D4AC2B298628D83C 23/07/2014 12:37:55 8.0 iPhone6,2 ok DB72CB76A00CB81675F19907D4AC2B298628D83C 28/07/2014 12:43:56 8.0 iPhone6,2 ok CDBF062964613D325EB9E41AD83E85EA16B7E399 10/02/2014 14:29:59 7.0.4 iPad4,1 ok 57BE3B9E8087809F53666B887B9DD81B06299078 29/07/2014 14:18:54 7.1 iPhone3,1 ok F60040E968F533434B9B6CCA10C7E0C673B7CC13 07/10/2014 09:44:17 8.0.2 iPhone7,2 ok CC5D2A27218BD9E4A14B1E59918171A8676EF5BB 26/03/2015 11:07:42 2.2.1 iPhone1,1 ok 46A663D1A1A5C5146476A2C6164EA5F5FE771294 26/03/2015 11:09:54 4.2.1 iPhone1,2 ok 9F8FDEEFFCDA4BD53CA4D6F8229A04497CA5FA4C 31/10/2016 17:05:36 10.1.1 iPhone9,4 ok
- Como seria de esperar, você pode citar (
"My folder"
) ou espaços de escape (My\ folder
) em caminhos -
-s
pode ser usado para especificar uma pasta de backup ou uma pasta contendo backups
Usando info
para obter informações e metadados de backups locais do iOS
$ rictl help backup info Usage: rictl backup info [args] Show info about a backup Available arguments: -u, --udid=VALUE backup UDID -s, --search-path=VALUE path to search for backups (two directories deep) -h, --help show this message and exit
Vamos tentar isso:
$ rictl backup info -u 00000000-0000000000000000 UDID: 00000000-0000000000000000 Path: /Users/afit/Library/Application Support/MobileSync/Backup/00000000-0000000000000000 Backup in progress: False Device name: Aidan's iPhone Backup display name: Aidan's iPhone Backup date: 02/07/2019 11:33:41 Backup size: 104258399691 bytes Backup encrypted: True Product version: 12.3.1 Product type: iPhone11,6 Serial number: FK1XH•••KPH6 Phone Number: +44 •••• •••••• ICCID: 894411••••••••••••5 MEID: 35728209••••••
É claro que, embora o UDID
do dispositivo iOS seja único, pode haver mais de um backup dele em seu computador - por exemplo, se você tiver um backup arquivado - assim:
$ rictl backup search -l | grep B919 DB72CB76A00CB81675F19907D4AC2B298628D83C 09/06/2014 13:57:08 7.1.1 iPhone6,2 ok /Users/afit/Library/Application Support/MobileSync/Backup/backup1 DB72CB76A00CB81675F19907D4AC2B298628D83C 23/07/2014 12:37:55 8.0 iPhone6,2 ok /Users/afit/Library/Application Support/MobileSync/Backup/backup2 DB72CB76A00CB81675F19907D4AC2B298628D83C 28/07/2014 12:43:56 8.0 iPhone6,2 ok /Users/afit/Library/Application Support/MobileSync/Backup/backup3
$ rictl backup info -u DB72CB76A00CB81675F19907D4AC2B298628D83C Multiple backups found with UDID DB72CB76A00CB81675F19907D4AC2B298628D83C. Use the '--search-path' option to specify the backup's location. This can be shown with the '-l' argument on 'rictl backup search'.
Qual é a solução? Restringir o caminho de pesquisa, especificando a pasta em que o backup está, em vez da pasta que contém a pasta do backup!
$ rictl backup info -s /Users/afit/Library/Application Support/MobileSync/Backup/backup3 -u DB72CB76A00CB81675F19907D4AC2B298628D83C UDID: DB72CB76A00CB81675F19907D4AC2B298628D83C Path: /Users/afit/Library/Application Support/MobileSync/Backup/backup3 Backup in progress: False Device name: Aidan's iPhone Backup display name: Aidan's iPhone Backup date: 28/07/2014 12:43:56 Backup size: 239001214 bytes Product version: 8.0 Product type: iPhone6,2 Serial number: C7KNG•••G5MV Phone Number: +44 •••• •••••• ICCID: 894411••••••••••••5 MEID: 35728209••••••
Usando list
para listar arquivos dentro de um backup do iOS
$ rictl help backup list Usage: rictl backup list [args] List files in a backup Available arguments: -u, --udid=VALUE backup UIUD -s, --search-path=VALUE path to search for backups (two directories deep) -p, --password=VALUE backup password -l use a long listing format -r, --pattern=VALUE file pattern (regex) --allow-in-progress allow use of in-progress backups -h, --help show this message and exit
Vamos experimentar:
$ rictl backup list -u 00000000-0000000000000000 -r plist$ -l rw-r--r-- 321 24/06/2019 13:04:37 ManagedPreferencesDomain\mobile\.GlobalPreferences.plist rw------- 16975 21/06/2019 14:52:54 AppDomainPlugin-com.apple.stocks.widget\Library\Preferences\com.apple.stocks.widget.plist rw-r--r-- 219 01/07/2019 09:37:24 HomeDomain\Library\UserNotifications\A4CCFF5B-F963-425F-8068-729972F77C67\DeliveredNotifications.plist ...
Usando extract
para extrair arquivos de um backup do iOS
$ rictl help backup extract Usage: rictl backup extract [args] Extract files from a backup Available arguments: -u, --udid=VALUE backup UIUD -s, --search-path=VALUE path to search for backups (two directories deep) -p, --password=VALUE backup password -o, --output-path=VALUE path to extract files to -r, --pattern=VALUE file pattern (regex) --allow-in-progress allow use of in-progress backups -h, --help show this message and exit
Vamos extrair todos os arquivos .db
de um backup para uma pasta chamada Extracted
e oferecer uma senha de backup de password
:
$ rictl backup extract -u 00000000-0000000000000000 -r "\.db" -o "Extracted" -p "password" Extracting HomeDomain/Library/Voicemail/voicemail.db Extracting HomeDomain/Library/Safari/Bookmarks.db Extracting RootDomain/Library/Caches/locationd/consolidated.db Extracting WirelessDomain/Library/CallHistory/call_history.db ...
Usando export
para exportar dados de um backup do iOS
$ rictl help backup export Usage: rictl backup export [args] Export data from a backup Available arguments: -u, --udid=VALUE backup UIUD -s, --search-path=VALUE path to search for backups (two directories deep) -p, --password=VALUE backup password -t, --type=VALUE data type (messages, whatsapp, viber, kik, wechat, line, hike, tinder, photos, videos, recordings, contacts, calendar, notes, calls, locations, voicemail) -o, --output-path=VALUE associated file output path -r, --pattern=VALUE search pattern (regex) -f, --force allow overwriting exising files --allow-in-progress allow use of in-progress backups -h, --help show this message and exit
Os dados exportados são disponibilizados no mesmo formato JSON que a API ricloud usa e esses formatos são documentados aqui .
Vamos extrair todos os dados da mensagem de um backup. Esses dados seriam retornados no fluxo de saída padrão do console ( stdout
), portanto, vamos redirecioná-lo para um arquivo chamado messages.json
. Salvaremos todos os arquivos associados em uma pasta denominada Associated files
e ofereceremos uma senha de backup da password
:
$ rictl backup export -u 00000000-0000000000000000 -t messages -o "Associated files" -p "password" > messages.json ...
$ cat messages.json [ { "From": "789789", "To": "Me", "Date": "2012-12-17T14:12:30Z", "Deleted": false, "Message": "All done! You're now on our Big Data Texts Tariff. We switched you over on 17/12/12", "Attachments": [] }, { "From": "789789", "To": "Me", "Date": "2012-12-17T18:12:50Z", "Deleted": false, "Message": "You have 300 Texts and Unlimited data", "Attachments": [] }, ...
Trabalhando com dispositivos
$ rictl help device Usage: rictl device <command> [args] Work with devices over USB and Wi-Fi Available commands: search Show connected devices over USB and Wi-Fi backup Backup a connected device restart Restart a connected device shutdown Shutdown a connected device Use 'rictl help device <command>' for detailed help on a particular device command
Ao trabalhar com dispositivos, existem quatro opções: search
, backup
, restart
e shutdown
.
Adicionando o rictl
ao seu caminho
O iPhone Backup Extractor pode adicionar automaticamente o rictl
ao rictl
do seu computador Windows ou MacOS, usando o painel Preferences
, para que possa ser facilmente usado em qualquer terminal do seu computador.
No entanto, você também pode definir o caminho sozinho ou usar um comando alias
. A funcionalidade do rictl
é acessada através do binário do iPhone Backup Extractor, como mostra o script do wrapper:
$ cat `which rictl` #!/bin/bash /Applications/iPhone\ Backup\ Extractor.app/Contents/MacOS/iPhoneBackupExtractor cli "$@"
Padrões comuns de expressões regulares para pesquisas de arquivos
- Encontrar caminhos que terminam com o texto
plist
:-r plist$
- Localizando caminhos com a extensão de arquivo
.db
:-r \.db
Uso corporativo
Os recursos do rictl
seguem amplamente os do iPhone Backup Extractor: a ferramenta permite operação irrestrita para explorar backups, mas só extrai até quatro arquivos ou exporta quatro itens de dados por vez cada vez que é executado.
Estamos ansiosos para saber como a tecnologia é usada e dar suporte a várias empresas que construíram suas ferramentas ou produtos de gerenciamento interno ou de conformidade com essa tecnologia. Por favor, entre em contato conosco se isso for valioso para você.