콘텐츠로 이동

[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 파일이 범인이다.

끝.


마지막 업데이트: 2022-09-20

댓글