先说结论,在当下取证工作中,对于我们目前所能遇到的绝大多数品牌手机,被删除的(彻底删除,非30天可恢复)照片是没有办法恢复原始文件的。
手机使用的字库是Flash存储颗粒,具有和SSD一样的Trim机制,所以对于文件级的数据恢复其实是很难实现。
01
最近删除
在手机端相册中被删除的图片可在“相册” - “最近删除”中进行查看和还原。系统会有30天的保存周期,如果在30天之后用户还没有对最近删除的照片进行还原,则系统会对其进行永久删除。
(最近删除)
最近删除的内容会被存储在/SDCARD/Pictures/.Gallery2/recycle目录。如图所示,正好对应上图中被删除的共有15条记录。删除后的照片文件会由DCIM目录被移至recycle目录下。
(最近删除位置)
02
缓存恢复
1.缩略图
缩略图指的是在创建或查看相册中的照片时所产生的缩略图文件,这些文件并不具有原图片的任何Exif信息,即便如此但对于原照片内容的还原是没有问题的。
在安卓系统下各品牌、各版本的操作系统可能在很多地方存储着缩略图文件,这里也只是列举了其中的一些,欢迎各位专家补充和指正。
·/Android/data/com.android.gallery3d/cache/imgcache.x、rev_geocoding.x
(com.android.gallery3d/)
通过分析imgcache.x等几个文件,可知该文件中存储了图片的缓存文件。已知JPG文件的文件签名为“FFD8FF”,在文件中搜索后如图所示。
(imgcache.x文件)
在Winhex中运行文件工具,尝试按文件类型进行数据恢复,菜单栏“工具” - “磁盘工具” - “通过文件类型恢复”。
(按文件类型恢复)
选择文件类型这里勾选“Pictures”,右下角注意选择“字节级搜索”否则是搜索不到任何数据的。如此便可从imgcache.x文件中恢复出缩略图文件了。
(文件类型恢复)
·/Huawei/CloudDrive/.thumbnail/category/*.cache
(/Huawei/CloudDrive/.thumbnail/)
该目录下的.cache文件通过观察其底层数据结构可知,均为PNG图片文件。这些文件主要是App的缓存数据。
(App缓存数据)
·Pictures/.thumbnails/*.jpg
(Pictures目录)
这个目录下存储的是封面杂志图片以及相册中照片的缓存数据。
(Picture中的数据)
2.数据库Blobs
由图可见,该文件是SQLite数据库文件,这里使用的是DB Browser for SQLite工具打开该文件,数据库中仅有一张表,名为kv。这个数据库中存有锁屏杂志封面、照片以及截图的缓存数据。
图片文件存储在数据库的BLOB中,可在工具的右侧“模式”中选择“图像”则可以直接预览图片内容。这里也可以点击“导出”按钮将对应的文件进行导出。
(thumbnail.db文件)
·/.photoShare/thumb/PhotoShareDB/photoshare.db(适用于鸿蒙2.0系统)
该目录下有两个数据库文件分别为photoshare.db和photoshare_year.db,其中photoshare_year.db中存储的是小尺寸的缩略图;而photoshare.db中的图片则更为清晰一些。
(photoshare.db文件)
这个数据库中记录的信息就比较多了,除了存储了照片的缩略图数据以外,还记录了时间戳、存储位置等信息。另外在该数据库中同一张照片会被以不同的分辨率存储多张,比如128*128、256*256、512*512、1024*1024等
另外这个数据库中记录的数据是最全面的,不仅对相册中现有的照片进行了缓存,还对已删除的(回收站)、锁屏壁纸、各种App生成的等都做了缓存。
(k值记录的文件详细信息)
·/Android/data/com.android.gallery3d/file/thumbdb/photoshare.db(鸿蒙3.0系统)
这个文件和前面鸿蒙2.0系统的photoshare.db文件结构相同,同样只有一张标和键值k和键值v,键值k记录了文件的基本信息;v值则是BLOB,用于存储缓存文件。
(photoshare.db)
总 结
虽然目前暂时无法通过有效的技术手段恢复手机中被删除的照片的原文件,但本文介绍了可以从三个方面入手恢复安卓系统下被删除的照片:最近删除的照片、通过缓存缩略图寻找被删除的照片以及数据库中Blobs中存储的照片。