소개
Undark는 SQLite3 데이터베이스 파일에서 삭제된 행을 복구하기 위한 오픈소스 포렌식 도구입니다. C 언어로 개발되었으며, SQLite 파일의 이진 파일 형식을 직접 스캔하여 현재 및 삭제된 모든 행의 데이터를 복구하는 데 목적을 두고 있습니다. 이 도구는 손상된 데이터베이스 파일에서도 레코드 기반으로 데이터를 검색할 수 있는 기능을 제공합니다.
상세정보
SQLite 데이터베이스 복구 도구
Undark는 SQLite3 데이터베이스 파일에서 삭제된 행을 복구하기 위해 바이트 레벨 스캔을 수행하는 오픈소스 도구입니다. SQLite 라이브러리에 의존하지 않고 데이터를 직접 분석하므로, 손상된 파일에서도 작동할 수 있습니다.
이 도구는 현재 보이는 레코드와 삭제된(비우기 전) 레코드를 모두 평문 CSV 형식으로 출력합니다. 원래 Paul L Daniels가 2013년에 개발했으며, 이 포크 버전은 Windows/MinGW 빌드 지원과 소규모 수정 사항을 추가했습니다.
주요 기능
- SQLite3 DB 파일에서 사용 가능한 대부분의 레코드를 추출하여 표준 출력으로 덤프합니다.
- 일반(표시되는) 레코드를 덤프합니다.
- 삭제된(비우기 전) 레코드를 덤프합니다.
- 레코드 단위로만 데이터를 검사하므로 손상된 SQLite DB에서도 데이터를 복구할 수 있습니다.
기본 사용법 및 명령어
Undark는 명령줄 인터페이스(CLI)를 통해 사용됩니다. 기본적인 사용법은 입력 파일을 지정하고 명령을 실행하는 것입니다.
기본 명령어 형식
undark -i <sqlite DB> [-d] [-v] [-V|–version]
주요 옵션
- -i: 입력 SQLite3 형식 데이터베이스 파일을 지정합니다.
- -d: 디버그 출력을 활성화합니다(매우 큰 덤프).
- -v: 상세 출력을 활성화합니다.
- -V 또는 –version: 소프트웨어 버전을 표시합니다.
- –cellcount-min, –cellcount-max: 추출할 행이 가져야 하는 최소/최대 셀 수를 정의합니다.
- –rowsize-min, –rowsize-max: 추출할 행이 가져야 하는 최소/최대 바이트 수를 정의합니다.
- –no-blobs: BLOB 데이터 덤프를 비활성화합니다.
- –blob-size-limit: 지정한 크기보다 큰 모든 BLOB을 .blob 파일로 덤프합니다.
- –fine-search: 레코드 대신 한 바이트씩 이동하여 DB를 검색합니다.
사용 예시
다음 명령은 sms.db 파일의 데이터를 CSV 파일로 추출합니다.
./undark -i sms.db > sms-data.csv
이런 경우에 유용합니다
- SQLite3 데이터베이스에서 실수로 삭제된 데이터를 복구해야 할 때.
- 손상된 SQLite 데이터베이스 파일에서 정보를 추출해야 할 때.
- 삭제된 레코드가 포함된 CSV 형식의 데이터 덤프가 필요할 때.
지원 환경 및 시스템 요구사항
이 도구는 Windows 환경에서 Chocolatey 패키지를 통해 설치할 수 있습니다. 소스 코드는 C 언어로 작성되어 있어 Windows 환경에서 빌드 및 실행이 가능합니다.
최신 버전 및 업데이트
현재 버전은 0.7이며, 2015년 7월에 마지막으로 릴리스되었습니다. 프로젝트는 더 이상 유지보수되지 않으며, 2026년에 아카이브되었습니다.
제한 사항 및 확인 사항
- 이미 비우기(vacuum)된 파일에서 데이터를 복구할 수 없습니다.
- 삭제된 레코드를 데이터베이스 파일에 다시 삽입할 수 없습니다.
- WAL(Write-Ahead Log) 모드를 지원하지 않습니다(2010년 이후 SQLite의 기본 저널 모드).
- 롤백 저널 분석을 지원하지 않습니다.
- UTF-16 인코딩을 지원하지 않으며 UTF-8만 지원합니다.
- 삭제된 테이블 복구를 지원하지 않습니다.
- BLOB 유형 감지를 지원하지 않습니다.
- 손상된 헤더에 대한 자동 페이지 크기 감지를 지원하지 않습니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


