google/magika
Fast and accurate AI powered file content types detection
Magika – AI 기반 파일 유형 탐지
정의 – Magika는 파일의 콘텐츠 유형(예: Python 소스, DOCX 문서, INI 구성)을 약 99% 정확도로 식별하는 작고 빠른 딥러닝 모델입니다. 파일 크기와 관계없이 단일 CPU에서 파일당 약 5ms로 작동합니다. 파일 바이트의 제한된 일부만 보기 때문입니다.
중요성 – 기존 파일 유형 스니퍼는 파일 확장자나 간단한 매직 바이트 휴리스틱에 의존하는데, 이는 속일 수 있거나 흔하지 않은 형식을 놓칠 수 있습니다. Magika의 신경 모델은 200개 이상의 바이너리 및 텍스트 형식을 포함하는 약 1억 개의 샘플로 훈련되어 보안 파이프라인, 콘텐츠 정책 스캐너, 그리고 "이 파일이 실제로 무엇인지" 알아야 하는 모든 워크플로우에 더 신뢰할 수 있는 신호를 제공합니다.
사용 방법
- CLI(Rust 기반) –
magika <path>…재귀, JSON 출력, MIME 유형만, 사용자 지정 형식 등의 옵션을 지원합니다. - Python 라이브러리 –
from magika import Magika; Magika().identify_path('file')는 풍부한 결과 객체를 반환합니다. - JavaScript/TypeScript – 실험적인 npm 패키지가 웹 데모를 구동하며 Node 또는 브라우저에서 사용할 수 있습니다.
- Go – 작업 중인 바인딩.
설치 단축키
pipx install magika또는pip install magika는 Python 패키지(CLI 포함)용입니다.- macOS/Linux에서는
brew install magika. - 순수 Rust 설치에는
cargo install --locked magika-cli. - JS 바인딩에는
npm install magika.
주요 기능
- 소형 모델 – 불과 몇 MB로 배포가 쉽습니다.
- 속도 – 일회성 모델 로드 후 파일당 약 5ms 추론.
- 높은 신뢰도 모드 –
high-confidence,medium-confidence,best-guess를 통해 재현율과 정밀도를 절충할 수 있습니다. - 임계값 시스템 – 유형별 신뢰도 임계값이 특정 레이블을 반환할지 아니면 일반적인 "텍스트"/"바이너리"로 대체할지 결정합니다.
- 일괄 처리 – 한 명령으로 수천 개의 파일을 처리할 수 있습니다.
-r은 디렉터리를 재귀적으로 스캔합니다. - 크로스 언어 바인딩 – Rust CLI, Python API, JS/TS npm 패키지, 곧 Go 지원 예정.
실사용 사례 – Google은 Magika를 대규모로 사용하여 수십억 개의 Gmail, Drive, Safe-Browsing 파일을 적절한 보안 스캐너로 라우팅합니다. 또한 VirusTotal 및 abuse.ch의 악성코드 분석 플랫폼에도 통합되어 있습니다.
시작하기
# pipx로 CLI 설치(Rust 바이너리 포함)
pipx install magika
# 단일 파일 식별
magika myscript.py
# 자동화를 위한 JSON 출력
magika myscript.py --json
# 디렉터리 전체를 재귀적으로 스캔
magika -r /path/to/files
Python 예제
from magika import Magika
m = Magika()
result = m.identify_path('example.docx')
print(result.output.label) # → docx
print(result.score) # 신뢰도 점수(0-1)
더 알아보기 – 프로젝트 웹사이트, 오픈소스 저장소, 그리고 관련 연구 논문(ICSE 2025)에는 모델 아키텍처, 훈련 데이터, 평가 방법이 자세히 설명되어 있습니다.
라이선스 및 지원 – Apache 2.0. 이 프로젝트는 오픈소스이지만 Google 공식 제품은 아닙니다. 보안 문제는 magika-dev@google.com으로 신고해야 합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트