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으로 신고해야 합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트