썸네일(Thumbnail)은 원본 이미지를 축소하여 빠르게 검색할 수 있도록 해주는 기능이다. 이는 다양한 프로그램에서 사용되며, 대표적으로 윈도우 탐색기(Explorer)가 있다.
운영체제마다 지원하는 파일 형식은 다르지만, 일반적으로 이미지, 동영상, PDF, HTML 등의 미리 보기를 제공한다. 사용자가 특정 파일을 처음 열거나 해당 파일이 포함된 폴더를 탐색할 때, 시스템은 해당 파일의 썸네일을 생성하여 저장한다. 이후 다시 접근할 경우, 기존에 저장된 썸네일을 불러와 미리 보기를 제공함으로써 속도를 향상한다.
썸네일은 원본 파일이 삭제되더라도 시스템에 남아 있을 수 있다. 따라서 포렌식 분석 시 삭제된 파일의 흔적을 찾는 중요한 증거가 될 수 있다.
경로는 Users\[User Name]\AppData\Local\Microsoft\Windows\Explorer이며 thumbcache_#.db 형태로 저장되어 있다.

| 이름 | 정보 |
| thumbcache_idx.db | 썸네일의 인덱스 정보 |
| thumbcache_32.db | 32x32 픽셀보다 작은 썸네일이 저장되며 모두 BMP 형식 |
| thumbcache_96.db | 32x32 ~ 96x96 픽셀 사이의 썸네일이 저장되며 BMP 형식 |
| thumbcahce_256.db | 96x96 ~ 256x256 픽셀 사이이 썸네일이 저장되며 JPEG or PNG 형식 |
| thumbcache_1024.db | 256x256 ~ 1024x1024 픽셀 사이의 썸네일이 저장되며 모두 JPEG 형식 |
무료 공개 도구인 thumbcache-viewer를 사용하면 썸네일을 확인 가능하다.

1. 썸네일 구조
thumbcache_#.db 파일은 시그니처 "CMMM"을 기준으로 File Header와 Cache Entry로 나뉘어있다. 각각의 Cache Entry에는 썸네일이 저장되어 있다.

2. File Header 구조
| 범위(Hex) | 크기(Byte) | 이름 | 설명 |
| 0x00 - 0x03 | 4 | "CMMM" Signature | |
| 0x04 - 0x07 | 4 | Format Version | Windows Vista: 0x14 Windows 7: 0x15 Windows 8: 0x1A Windows 8v2: 0x1C Windows 8v3: 0x1E Windows 8.1: 0x1F Windows 10: 0x20 |
| 0x08 - 0x0B | 4 | Cache type | *Windows 10 기준 16(0x00), 32(0x01), 48(0x02), 96(0x03), 256(0x04), 768(0x05), 1280(0x06), 1920(0x07), 2560(0x08), sr(0x09), wide(0x0A), exif(0x0B), wide_alternate(0x0C), custom_stream(0x0D) |
| 0x0C - 0x0F | 4 | Offset to first cache entry | |
| 0x10 - 0x13 | 4 | Offset to first available cache entry | |
| 0x14 - 0x17 | 4 | Total size of entries |


3. Cache Entry 구조
| 범위(Hex) | 크기(Byte) | 이름 | 설명 |
| 0x08 - 0x0B | 4 | "CMMM" Signature | |
| 0x0C - 0x0F | 4 | Cache entry size | |
| 0x10 - 0x17 | 8 | Cache entry hash | |
| 0x18 - 0x1B | 4 | Filename length | |
| 0x1C - 0x1F | 4 | Padding size | |
| 0x20 - 0x23 | 4 | Data size | |
| 0x24 - 0x27 | 4 | Width | |
| 0x28 - 0x2B | 4 | Height | |
| 0x30 - 0x37 | 8 | Data checksum | |
| 0x38 - 0x3F | 8 | Header checksum | |
| 0x40 - 0x5F | 가변적 | Filename | |
| 0x62 - 0x-- | 가변적 | Data |


4. 이미지 추출하기
Data offset = Cache entry offset + (Cache entry size - Data size)
= 0x18 + (0x9F0 - 0x996)
= 0x18 + 0x5A
= 0x72
Data offset에서 Data size만큼 블록 선택하기(Ctrl + E) - 복사

5. 새로 만들기 - 붙여 넣기
