sqlite-records
SQLite 데이터베이스 파일을 파싱하여 지정한 테이블의 레코드를 조회합니다. 포렌식 분석 시 SQLite 기반 아티팩트(예: 크롬 브라우저 히스토리, 파이어폭스 데이터베이스)의 데이터를 직접 조회할 때 사용합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 드라이버 쿼리 |
| 필요 권한 | 클러스터 관리자 |
| 라이선스 사용량 | 집계함 |
| 병렬 실행 | 미지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
옵션
table=STR- 조회할 테이블 이름
대상
FILE_PATH- 조회할 SQLite 데이터베이스 파일의 경로
출력 필드
출력 필드는 지정한 테이블의 스키마에 따라 동적으로 결정됩니다. 테이블에 정의된 각 컬럼이 출력 필드로 할당되며, 필드 순서는 id 컬럼을 가장 앞에 배치한 후 나머지 컬럼을 스키마 정의 순서대로 배치합니다.
각 컬럼의 값은 SQLite 시리얼 타입에 따라 다음과 같이 변환됩니다:
| SQLite 시리얼 타입 | 변환 타입 |
|---|---|
| NULL (0) | null |
| 정수 (1-6, 8, 9) | 64비트 정수 |
| BLOB (짝수 >= 12) | 바이너리 |
| TEXT (홀수 >= 13) | 문자열 |
오류 코드
파싱 오류
해당 사항 없음
런타임 오류
| 오류 코드 | 메시지 | 설명 | 후처리 동작 |
|---|---|---|---|
| - | IOException | SQLite 데이터베이스 파일을 읽을 수 없는 경우 | 쿼리 실행을 중단함 |
설명
sqlite-records 명령어는 지정한 SQLite 데이터베이스 파일을 바이너리 수준에서 직접 파싱하여 테이블 레코드를 조회합니다. SQLite 라이브러리에 의존하지 않으므로 잠금 상태의 데이터베이스 파일도 조회할 수 있습니다.
테이블 이름은 table 옵션으로 지정합니다. 테이블에 포함된 컬럼 이름과 타입을 미리 확인하려면 sqlite-tables 명령어를 사용합니다.
이 명령어는 4.0.2511.0 버전부터 클러스터 관리자 권한이 필요하며, 접근 가능한 파일 경로가 제한됩니다. 자세한 내용은 파일 접근 제한을 참고하세요.
사용 예
각 사용 예의 파일 경로는 ALLOWED_FILE_SCAN_PATHS 설정에 포함되어 있다고 가정합니다.
-
SQLite 데이터베이스에서 테이블 레코드 조회
sqlite-records table=urls /opt/logpresso/evidence/History크롬 브라우저의
History파일에서urls테이블의 모든 레코드를 조회합니다. -
특정 조건으로 레코드 필터링
sqlite-records table=visits /opt/logpresso/evidence/History | search visit_duration > 0visits테이블에서 방문 시간이 0보다 큰 레코드만 필터링합니다. -
레코드 수 제한
sqlite-records table=moz_places /opt/logpresso/evidence/places.sqlite | limit 100파이어폭스의
places.sqlite파일에서moz_places테이블의 레코드를 최대 100건 조회합니다.
호환성
sqlite-records 명령어는 소나 4.0 이전 버전부터 제공되었습니다. 4.0.2511.0 버전부터 클러스터 관리자 권한이 필요합니다.