edma — 데이터 분석 및 통계
최신 도구 가이드 / 데이터 분석 및 통계 / edma.html
임베디드 데이터베이스와 바이트 레코드를 분석하는 데이터 분석 도구입니다.
기본 정보
| 프로그램 이름 | edma (이디엠에이) |
|---|---|
| 한 줄 소개 | 임베디드 데이터베이스와 바이트 레코드를 분석하는 데이터 분석 도구입니다. |
| 개발·유지 | edma contributors |
| 공식 홈페이지 | https://edma.tools/ |
| 공식 문서 | https://edma.tools/docs/ |
| 공식 다운로드 | https://edma.tools/downloads |
| 지원 운영체제 | Linux, macOS, Windows (Python 3.10+ 또는 Rust 1.75+) |
| 라이선스 | BSD-3-Clause |
| 안정 버전 | 0.7.4 (2026-09-15 출시) — 확인일 2026-10-18 |
| GitHub 저장소 | https://github.com/chungquantin/edma |
| 분류 | 데이터 분석 및 통계 (태그: 임베디드 DB, 바이트 분석, 레코드, 데이터 분석, 포렌식) |
이 프로그램은 무엇인가?
edma는 임베디드 데이터베이스(SQLite, LevelDB, LMDB 등)와 일반 바이너리 파일에서 레코드 구조를 분석하는 데이터 분석 도구입니다. 파일의 바이트 배열을 사람이 읽을 수 있는 레코드 단위로 해체하고, 스키마를 추정하거나 특정 필드 값을 검색할 수 있습니다.
IoT 기기 로그, 포렌식 이미지, 임베디드 애플리케이션의 저장소를 분석할 때 사용합니다. 파일 시스템 없이 바이트 덩어리로 남은 데이터에서 구조를 찾아내는 것이 핵심 기능입니다.
어떤 문제를 해결하는가?
- ('포렌식 분석에서', '삭제된 파일의 잔여 데이터에서 구조를 찾아야 할 때', '바이트 패턴을 기반으로 레코드 경계를 추정해 복구할 수 있습니다.')
- ('IoT 로그 분석에서', '임베디드 DB 파일의 내용을 확인해야 할 때', 'SQLite·LevelDB 파일을 열어 테이블·키-값을 조회할 수 있습니다.')
- ('디버깅에서', '애플리케이션의 저장소 형식이 궁금할 때', '저장소 파일을 열어 레코드 구조와 필드를 분석할 수 있습니다.')
주요 기능
레코드 해체
바이트 배열을 레코드 단위로 분할·표시
- 활용 상황: 임베디드 DB·바이너리 분석
- 얻는 결과: 레코드 경계·필드 값을 시각적으로 확인
- 제한 사항: 스키마 미상 시 레코드 경계 추정이 부정확할 수 있습니다.
스키마 추정
바이트 패턴·인코딩으로 필드 타입 자동 추정
- 활용 상황: 구조를 모르는 파일 분석
- 얻는 결과: 문자열·정수·타임스탬프 필드 자동 식별
- 제한 사항: 추정 결과는 검증이 필요합니다.
필드 검색
특정 필드 값으로 레코드 검색
- 활용 상황: 대량 레코드에서 목표 데이터 추출
- 얻는 결과: 정규식·범위·패턴 검색 지원
- 제한 사항: 대용량 파일 검색 시 인덱스 없으면 느릴 수 있습니다.
SQLite·LevelDB 지원
임베디드 DB 파일을 직접 열어 조회
- 활용 상황: 임베디드 애플리케이션 저장소 분석
- 얻는 결과: 테이블·키-값 구조를 그대로 확인
- 제한 사항: 암호화된 DB는 복호화 키가 필요합니다.
설치 및 실행
Python (pip)
pip으로 설치합니다.
pip3 install edma
edma --version
cargo (소스)
Rust 1.75+ 환경에서 cargo로 설치합니다.
cargo install edma
edma --version
소스 (Python)
소스에서 개발 버전을 설치합니다.
git clone https://github.com/edma-dev/edma
cd edma
pip install -e .
실제 사용 예제
SQLite 파일 열기
SQLite 파일을 열어 테이블 목록을 확인합니다.
$ edma open app.db
[edma] SQLite 3 file detected (12 tables)
users (1024 rows, 5 columns)
orders (8471 rows, 7 columns)
sessions (2048 rows, 4 columns)
$ edma query app.db 'SELECT id, email FROM users LIMIT 3'
1 alice@example.com
2 bob@example.com
3 carol@example.com
바이트 레코드 분석
바이너리 파일에서 레코드 구조를 추정·분석합니다.
$ edma analyze firmware.bin --record-size 64
[edma] firmware.bin — 1.2 MB, record size 64 bytes
[edma] estimated 19,200 records
[edma] fields: [0..15] string, [16..19] uint32, [20..27] timestamp, [28..63] payload
[edma] sample record #100:
string: "sensor-a3"
uint32: 42
timestamp: 2026-10-17T08:23:01Z
레코드 검색
특정 값으로 레코드를 검색합니다.
$ edma search firmware.bin --field 'sensor-a3' --limit 5
[edma] 5 matches found
#100 sensor-a3 val=42 ts=2026-10-17T08:23:01Z
#256 sensor-a3 val=38 ts=2026-10-17T08:23:05Z
...
장점과 한계
장점
- SQLite·LevelDB·LMDB 등 임베디드 DB를 별도 런타임 없이 분석
- 바이너리 파일에서 레코드 구조 자동 추정
- 정규식·범위 검색으로 대량 레코드에서 목표 데이터 추출
- Python·Rust 양쪽 설치 방법 지원 — 포렌식·개발 양쪽에 적합
사용 전에 고려할 점
- 스키마 미상 파일의 레코드 경계 추정이 부정확할 수 있습니다.
- 암호화된 임베디드 DB는 복호화 키 없이 분석 불가.
- 초기 버전(0.7.x)이라 일부 DB 형식 지원이 제한적일 수 있습니다.
비슷한 프로그램과 비교
| 프로그램 | 특징 | 이런 경우에 적합 |
|---|---|---|
| sqlite3 CLI | SQLite 공식 명령줄 인터페이스 | SQLite 단일 형식 쿼리·관리 |
| hexdump / xxd | 기본 바이트 덤프 도구 | 간단한 바이트 확인·수동 분석 |
| Autopsy / Sleuth Kit | 디지털 포렌식 플랫폼 | 디스크 이미지 기반 종합 포렌식 |
공식 자료 및 추가 학습
- 공식 홈페이지 — https://edma.tools/
- 공식 문서 / 지식베이스 — https://edma.tools/docs/
- 공식 다운로드 — https://edma.tools/downloads
- 릴리스 노트 — https://edma.tools/changelog
- 소스 / 개발 자료 — https://github.com/chungquantin/edma
버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요.
실제 실행 화면
아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다.

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.