Trabalhando com dispositivos iOS e backups na linha de comando

Atualizada

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, fluxos stdout 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 ( ~ )

rictl shown in macOS Terminal
rictl mostrado no macOS Terminal

rictl shown in Windows Command Prompt
rictl mostrado no prompt de comando do Windows

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:

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.

iPhone Backup Extractor's "Scripting" preferences pane
Painel de preferências "Scripting" do Extrator de Backup do iPhone

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 para o rictl seguem amplamente os do iPhone Backup Extractor: a ferramenta permite a operação irrestrita para explorar backups, mas extrairá até quatro arquivos ou exportará quatro itens de dados de cada vez, sempre que for executado. Isso pode ser evitado executando a ferramenta várias vezes.

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ê.

Como podemos ajudar?

Nossa equipe de suporte está aqui para ajudar!

Nosso horário de atendimento é de segunda a sexta, das 9h às 17h GMT. A hora é atualmente 11:33 AM GMT.

Nosso objetivo é responder a todas as mensagens dentro de um dia útil.

Vá para a seção de apoio › Contate-Nos ›
Nossa equipe de suporte incrível

Podemos melhorar este artigo?

Adoramos ouvir os usuários: por que não nos enviar um e-mail, deixar um comentário ou twittar? @reincubate?

© 2008 - 2019 Reincubate Ltd. Todos os direitos reservados. Registrado na Inglaterra e no País de Gales #5189175, VAT GB151788978. Reincubate® é uma marca registrada. Privacidade e Termos. Recomendamos 2FA. Construído com em Londres.