Page
- 데이터베이스를 이루는 구성요소로 페이지 단위가 사용된다.
- 페이지의 크기는 512~65536사이의 2의 거듭제곱이다.
- 같은 데이터베이스 내부에서 페이지의 크기는 모두 같아야 한다.
- 페이지의 크기는 offset 0x10에 정의되어 있다
- 페이지의 시작은 1부터 2147483646(2^31 - 2)까지 혹은 140737488224256byte 약 140테라 (정확히는 128테라)
(페이지의 크기는 140까지 커질수 있지만 일반적인 디스크 하드웨어의 최대 용량이 더 작다.)
Page의 역활
- The lock-byte page (잠금바이트 페이지)
- freelist page
freelist trunk page
freelist leaf page
- b-tree page
table b-tree interior page
table b-tree leaf page
index b-tree interior page
index b-tree leaf page
- payload overflow page
- pointer map page
데이터베이스 헤더
: 데이터베이스 파일의 첫 100바이트는 헤더정보를 구성한다.
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 |
헤더 문자열 "SQLite format 3 \ 000" | |||||||||||||||
page size | WV | RV | 0 | 64 | 32 | 32 | File Change Counter | DataBase size | |||||||
Free page Offset | Free page Number | The schema cookie | The schema format number | ||||||||||||
Default page cache size | Incremental vacuum settings | text encoding | user version | ||||||||||||
incremental- vacuum mode | application id | reserved for expansion | |||||||||||||
reserved for expansion | version valid for number | ||||||||||||||
SQLite version number |
|
|
|
|
|
|
|
|
|
|
|
|
Name | Offset | 길이(byte) | 설명 |
헤더 문자열 | 0x00 | 16 | SQLite format 3\100 |
page size | 0x10 | 2 | 데이터베이스 페이지 크기 512~32768 , 65536 |
파일 형식 쓰기 버전 | 0x12 | 1 | 1이나 WAL의 경우 2를 기록 *WAL? 롤백을 구현하는 기능 ,Write-Ahead Logging |
파일 형식 읽기 버전 | 0x13 | 1 | 1이나 WAL의 경우 2를 기록 |
"예약 된"공간의 바이트 | 0x14 | 1 | 페이지 끝에 사용되지 않는 예약된 공간의 바이트, 대개 0 |
최대 내장 페이로드 비율 | 0x15 | 1 | 최대 내장 페이로드 비율 . ( = 64) |
최소 임베디드 페이로드 비율 | 0x16 | 1 | 최소 임베디드 페이로드 비율 ( = 32) |
리프 페이로드 분율 | 0x17 | 1 | 리프 페이로드 분율 ( = 32) |
File Change Counter | 0x18 | 4 | 파일 변경 카운터 |
DataBase size | 0x1B | 4 | 페이지 단위의 데이터베이스 파일 크기 |
Free Page Offset | 0x20 | 4 | 첫 번째 freelist trunk 페이지의 페이지 번호 |
Free Page Number | 0x24 | 4 | 총 여유 목록 페이지 수 |
The schema cookie | 0x28 | 4 | 스키마 쿠키 |
The schema format number | 0x2B | 4 | 스키마 형식 번호, 지원되는 스키마 형식은 1,2,3,4 |
Default page cache size | 0x30 | 4 | 기본 페이지 캐시 크기 |
Incremental vacuum settings | 0x34 | 4 | 삭제시 데이터 자동 정리 모드에 있을때 가장 큰 루트 B-tree 페이지의 번호 |
text encoding | 0x38 | 4 | 텍스트 인코딩 (1 = UTF-8 / 2 = UTF-16le / 3 = UTF-16be) |
user version | 0x3B | 4 | 사용자 버전 |
incremental- vacuum mode | 0x40 | 4 | 점진적 삭제시 데이터 자동정리 모드 (0이면 false , 그외는 true) |
application id | 0x44 | 4 | 어플리케이션 ID |
reserved for expansion | 0x48 | 20 | 확장이 될 경우를 위해 예약된 영역. 모두 0 |
version valid for number | 0x5B | 4 | 버젼 유효 값 |
SQLite version number | 0x60 | 4 | SQLite Virsion Number |
< Page의 역활 >
- lock-byte page : 1073741824와 1073742335 사이의 오프셋에있는 바이트를 포함하는 데이터베이스 파일의 단일 페이지
Win95에서 필수 파일잠금 기능을 지원하기위해 만들어졋으나 최신운영체제에는 자문 파일 잠금을 지원하므로 더이상 필요하지 않지만 이전과의 호환성을 위해 존재
- https://www.sqlite.org/fileformat.html
'Kitri_NCS3기 보안과정 > 디지털포렌식' 카테고리의 다른 글
Ext File System -2- (Super Block) (0) | 2017.07.05 |
---|---|
Ext File System -1- (0) | 2017.07.04 |
170626 윈도우 포렌식 - 레지스트리 (0) | 2017.06.26 |
170621 NTFS - MFT Entry 속성의 종류별 분석 (0) | 2017.06.21 |
170620 NTFS의 구조 (0) | 2017.06.20 |