[iOS] 아이폰 백그라운드 스냅샷 파일 찾는 방법
서론
앱 실행 중 홈키를 한 번 눌러 홈화면으로 돌아가거나
홈키를 두 번 눌러 Multitasking Switcher에 진입하면
직전의 앱 화면이 스크린샷으로 저장되어 화면에 보이게 된다.
이 저장된 이미지를 백그라운드 스냅샷이라고 한다.
이 화면은 이미지 파일로 아이폰 내부 저장공간에 파일로 저장이 된다.
저장 경로
결론부터 말하면 iOS 버전에 따라 저장경로가 다르다.
-
iOS 8 미만
/var/mobile/Application/[BundleID]/Library/Caches/Snapshots/[PackageName]/ -
iOS 8 이상 13 미만
/var/mobile/Containers/Data/Application/[BundleID]/Library/Caches/Snapshots/[PackageName]/ -
iOS 13 /var/mobile/Conatiners/Data/Application/[BundleID]/Library/SplashBoard/Snapshots/sceneID:[PackageName]-default/
[BundleID]
는 0C60E8AE-54CF-4322-871E-7DC4EE39E6AA 이런 식으로 생긴 앱 고유 ID를 말하고
[PackageName]
은 com.useworld.test 같은 앱 패키지명을 말한다.
확인
이미지 파일 확인을 직접 해보았다.
- 테스트 기기 : iOS 13(Jailbroken)
보통 앱 바이너리가 저장되어 있는 /var/containers/Bundle/Application/ 경로에서 검색 해보면 원하는 앱의 이름으로 BundleID 확인이 가능하다.
#pwd
/var/containers/Bundle/Application
#find ./ -name Useworld
./0C60E8AE-54CF-4322-871E-7DC4EE39E6AA/Useworld.app/Useworld
#ls 0C60E8AE-54CF-4322-871E-7DC4EE39E6AA/
BundleMetadata.plist Useworld.app/
#_
내 앱의 BundleID는 0C60E8AE-54CF-4322-871E-7DC4EE39E6AA 이거구나.
그러면 스냅샷이 저장되는 /var/mobile/Conatiners/Data/Application/로 가보자.
#pwd
/var/mobile/Containers/Data/Application
#cd 0C60E8AE-54CF-4322-871E-7DC4EE39E6AA/
-sh: cd: 0C60E8AE-54CF-4322-871E-7DC4EE39E6AA/: No such file or directory
#ls 0C60E8AE-54CF-4322-871E-7DC4EE39E6AA/
ls: cannot access '0C60E8AE-54CF-4322-871E-7DC4EE39E6AA/': No such file or directory
#find ./ -name Useworld
#_
아 뭐야 없어.
보니까 이 곳에 저장되는 BundleID는 달랐던 것이었다.
BundleID 찾기
그러면 내가 원하는 앱의 BundleID를 어떻게 찾느냐.
폴더 내에 .com.apple.mobile_container_manager.metadata.plist 파일에서 PackageName
에 포함된 문자열로 찾으면 된다.
PackageName
은 위에서 말했듯이 com.useworld.test 같은 패키지명이다.
grep [문자열] */.com.apple.mobile_container_manager.metadata.plist
#pwd
/var/mobile/Containers/Data/Application
#grep useworld */.com.apple.mobile_container_manager.metadata.plist
Binary file 492BD434-B2C2-4FA9-92B9-FFD999EE8C98/.com.apple.mobile_container_manager.metadata.plist matches
#cd 492BD434-B2C2-4FA9-92B9-FFD999EE8C98/
#cat .com.apple.mobil e_container_manager.metadata.plist
bplist00�☺☻♥♦♣◄↕_►↕MCMMetadataVersion_►§MCMMetadataIdentifier_►↨MCMMetadataUserIdentity_►↨MCMMetadataContentClass_►☼MCMMetadataUUIDQ2_►↨com.useworld.test�
♫♫☼►♠XposixUIDXposixGID_►‼personaUniqueStringTtypeWversion◄☺�_►$5C0C954D-8251-4BA6-8ACE-7DECCE6A2F52► ►☻_►$3D70C1E6-879C-4E7D-8490-5D536A8AE545 ‼ ( @ Z t � � � � � � � � � �☺♀☺♫☺► ☻☺ ‼ ☺7
#_
찾앗다.
492BD434-B2C2-4FA9-92B9-FFD999EE8C98
이거였다.
확인
이제 스냅샷 저장 경로에서 확인한다.
#pwd
/var/mobile/Containers/Data/Application/492BD434-B2C2-4FA9-92B9-FFD999EE8C98/Library/SplashBoard/Snapshots/sceneID:com.useworld.test-default
#ls
38543746-8F29-4BFC-AB0A-36BE3986A7F8\@2x.ktx 5118E936-461F-4C12-9147-8C8471A09656\@2x.ktx downscaled/
#_
저기있는 ktx
파일이 스냅샷 이미지 파일이다.
익숙치 않은 확장자인데 Mac에서 열어보면 이미지 확인이 가능하다.
ktx 이미지 확인
현재까지 ktx 이미지 파일을 Mac이 아닌 Windows에서 확인하는 방법은 찾을 수 없었다.
결론
아이폰 백그라운드 스냅샷 저장 경로
-
iOS 8 미만
/var/mobile/Application/[BundleID]/Library/Caches/Snapshots/[PackageName]/ -
iOS 8 이상 13 미만
/var/mobile/Containers/Data/Application/[BundleID]/Library/Caches/Snapshots/[PackageName]/ -
iOS 13
/var/mobile/Conatiners/Data/Application/[BundleID]/Library/SplashBoard/Snapshots/sceneID:[PackageName]-default/
BundleID 찾기
grep [패키지명에 포함된 문자열] */.com.apple.mobile_container_manager.metadata.plist
안에 들어있는 ktx
파일이 범인이다.
끝.