--- title: edma — 데이터 분석 및 통계 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 임베디드 데이터베이스·바이트 레코드 구조를 분석하는 데이터 분석 도구. 포렌식·디버깅에 활용. tags: 프로그램, 데이터 분석 및 통계, edma --- 임베디드 데이터베이스와 바이트 레코드를 분석하는 데이터 분석 도구입니다. ## 기본 정보 | 프로그램 이름 | 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/ - [공식 문서 / 지식베이스](https://edma.tools/docs/) — https://edma.tools/docs/ - [공식 다운로드](https://edma.tools/downloads) — https://edma.tools/downloads - [릴리스 노트](https://edma.tools/changelog) — https://edma.tools/changelog - [소스 / 개발 자료](https://github.com/chungquantin/edma) — https://github.com/chungquantin/edma 버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요. ## 실제 실행 화면 아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다. ![edma SQLite·바이트 레코드 분석 예시: app.db 12개 테이블, firmware.bin 레코드 추정](https://games.cursorai.co.kr/assets/edma-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/apps/data/edma.html