iPhone Backup Extractor에는 iOS 백업과 기기를 다루는 rictl이라는 명령줄 도구가 포함되어 있습니다. rictl은 iPhone Backup Extractor가 실행되는 모든 플랫폼에서 실행되며, 인수와 도움말 구문, 셸 반환 값 측면에서 UNIX 스타일 명령줄 도구처럼 동작합니다.
주요 기능은 다음과 같습니다.
- UNIX 호환 형식(
$?셸 반환 코드, 로케일 형식의 날짜, awk에 적합한 출력, 내보낸 데이터의stdout스트림) - 여러 검색 경로 동시 지원
- 모든 형식의 암호화된 백업 지원
- 상대 경로와 홈 기준(
~) 경로 지원

macOS 터미널에 표시된 rictl

Windows 명령 프롬프트에 표시된 rictl
빠른 시작: iOS 백업에서 데이터베이스 파일 추출하기
로컬 시스템에서 사용할 수 있는 백업을 찾습니다.
$ rictl backup search
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok
백업에서 모든 데이터베이스 파일을 추출합니다(정규 표현식 형식에 유의하세요).
$ 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
...
명령어 용어집
도움말 보기
예상하신 대로 rictl help 명령으로 rictl의 도움말을 볼 수 있습니다.
$ 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은 로컬 백업을 다루는 backup 모드와, USB 또는 Wi-Fi로 iOS 기기를 다루는 device 모드를 제공합니다.
로컬 백업 다루기
$ 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
백업을 다룰 때는 search, info, list, extract, export의 다섯 가지 옵션이 있습니다.
search로 로컬 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
가장 간단하게는 search이 시스템에 있는 백업을 보여 줍니다.
$ rictl backup search
00000000-0000000000000000 02/07/2019 11:33:41 12.3.1 iPhone11,6 ok
표시되는 필드는 공백으로 구분되며 다음과 같습니다.
UDID- 백업 생성 시간
- iOS 기기 버전
- iOS 기기 식별자
- 백업 상태:
ok또는in-progress
UDID에는 두 가지 형식이 있습니다
Apple의 UDID에는 두 가지 서로 다른 형식이 있다는 점을 기억하세요. rictl은 두 형식을 모두 지원합니다.
옵션 -l은 백업 경로를 표시합니다
-l을 사용하면 백업 경로를 담은 출력 필드를 추가로 포함할 수 있습니다.
$ 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
옵션 -s은 추가 경로를 검색합니다
-s을 사용하면 백업을 찾을 때 검색 경로를 추가로 포함할 수 있습니다.
$ 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
- 예상하신 대로 경로의 공백은 따옴표(
"My folder")로 묶거나 이스케이프(My\ folder)할 수 있습니다 -s로 백업 폴더 또는 백업이 들어 있는 폴더를 지정할 수 있습니다
기본 검색 경로
rictl은 검색할 때 항상 기본 iOS 백업 검색 경로를 포함하며, iPhone Backup Extractor에 설정된 추가 검색 폴더도 함께 포함합니다.
info로 로컬 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
직접 해 보겠습니다.
$ 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••••••
물론 iOS 기기의 UDID는 고유하지만, 컴퓨터에 해당 기기의 백업이 둘 이상 있을 수 있습니다. 예를 들어 보관된 백업이 있으면 다음과 같습니다.
$ 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'.
해결 방법은 무엇일까요? 백업 폴더를 포함하는 폴더가 아니라 백업이 들어 있는 폴더를 지정해 검색 경로를 좁히세요.
$ 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••••••
백업을 지정할 때 `-u`이 `-s`보다 빠른 이유는 무엇인가요?
-u으로 백업을 선택하는 것이 -s을 사용할 때보다 훨씬 빠를 수 있다는 것을 알 수 있습니다.
다음은 빠릅니다.
$ rictl backup extract -u 00000000-0000000000000000
다음은 더 느립니다.
$ rictl backup extract -u 00000000-0000000000000000 -s "My backups"
이 명령어들은 서로 상당히 다르게 동작합니다. -u 명령은 기본 검색 위치(와 iPhone Backup Extractor에 미리 설정된 검색 경로)에서 백업을 가져오는 반면, -s은 지정한 경로의 한 단계 아래까지 검색합니다. 백업이 들어 있는 폴더를 지정했는지, 백업 폴더 자체를 지정했는지 알 수 없기 때문입니다.
백업에는 하위 폴더가 많은 경우가 흔하므로, -s이 백업 안에 백업이 중첩되어 있지 않은지 검색하면(실제로 본 적이 있습니다!) 시간이 조금 걸릴 수 있습니다.
list로 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
직접 해 보겠습니다.
$ 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
...
extract로 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
백업에서 모든 .db 파일을 Extracted 폴더로 추출하고, 백업 암호로 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
...
export로 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
내보낸 데이터는 ricloud API가 사용하는 것과 같은 JSON 형식으로 제공되며, 해당 형식은 여기에 문서화되어 있습니다.
백업에서 모든 메시지 데이터를 추출해 보겠습니다. 이 데이터는 콘솔의 표준 출력 스트림(stdout)으로 반환되므로 messages.json 파일로 리디렉션합니다. 관련 파일은 Associated files 폴더에 저장하고, 백업 암호로 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": []
},
...
기기 다루기
$ 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
기기를 다룰 때는 search, backup, restart, shutdown의 네 가지 옵션이 있습니다.
경로에 rictl 추가하기
iPhone Backup Extractor는 Preferences 창을 사용해 Windows 또는 macOS 컴퓨터의 경로에 rictl을 자동으로 추가할 수 있으므로, 컴퓨터의 어떤 터미널에서도 쉽게 사용할 수 있습니다.

iPhone Backup Extractor의 “스크립팅” 환경설정 창
경로를 직접 설정하거나 alias 명령을 사용할 수도 있습니다. rictl의 기능은 래퍼 스크립트에서 볼 수 있듯이 iPhone Backup Extractor의 바이너리를 통해 사용됩니다.
$ cat `which rictl`
#!/bin/bash
/Applications/iPhone\ Backup\ Extractor.app/Contents/MacOS/iPhoneBackupExtractor cli "$@"
파일 검색에 자주 쓰는 정규 표현식 패턴
- 텍스트
plist로 끝나는 경로 찾기:-r plist$ - 파일 확장자가
.db인 경로 찾기:-r \.db
기업에서 사용하기
rictl의 기능은 대체로 iPhone Backup Extractor와 같습니다. 이 도구는 백업 탐색에는 제한 없이 사용할 수 있지만, 실행할 때마다 최대 4개의 파일만 추출하거나 4개의 데이터 항목만 내보냅니다.
저희는 이 기술이 어떻게 활용되는지 듣고 싶으며, 이 기술을 기반으로 내부 관리 또는 규정 준수 도구나 제품을 구축한 여러 기업을 지원하고 있습니다. 도움이 될 것 같다면 문의해 주세요.
