
Détection rapide et précise des types de contenu de fichiers alimentée par l'IA
Magika est un nouvel outil de détection de type de fichier basé sur l'IA, qui s'appuie sur les récentes avancées du deep learning pour fournir une détection précise. Sous le capot, Magika utilise un modèle personnalisé hautement optimisé qui ne pèse que quelques Mo et permet une identification précise des fichiers en quelques millisecondes, même sur un seul CPU. Magika a été entraîné et évalué sur un ensemble de données d'environ 100 millions d'échantillons couvrant plus de 200 types de contenu (incluant à la fois des formats binaires et textuels), et atteint une précision moyenne d'environ 99 % sur notre ensemble de test.
Voici un exemple du rendu en ligne de commande de Magika :
Magika est utilisé à grande échelle pour améliorer la sécurité des utilisateurs de Google en orientant les fichiers de Gmail, Drive et Safe Browsing vers les scanners de sécurité et de politique de contenu appropriés, traitant des centaines de milliards d'échantillons chaque semaine. Magika a également été intégré à VirusTotal (exemple) et à abuse.ch (exemple).
Pour plus de contexte, vous pouvez lire notre article d'annonce initial sur le blog OSS de Google, consulter le site web de Magika, et en savoir plus dans notre article de recherche, publié à la conférence IEEE/ACM International Conference on Software Engineering (ICSE) 2025.
Vous pouvez essayer Magika sans rien installer en utilisant notre démo web, qui s'exécute localement dans votre navigateur !
-r pour analyser récursivement un répertoire.high-confidence, medium-confidence et best-guess.Magika est livré avec une CLI écrite en Rust et peut être installé de plusieurs manières.
Via le paquet python magika :
pipx install magika
Via brew (macOS / Linux)
brew install magika
Via un script d'installation :
curl -LsSf https://securityresearch.google/magika/install.sh | sh
ou :
powershell -ExecutionPolicy Bypass -c "irm https://securityresearch.google/magika/install.ps1 | iex"
Via le paquet Rust magika-cli :
cargo install --locked magika-cli
pip install magika
npm install magika
Vous trouverez ici quelques exemples rapides pour commencer.
Pour en savoir plus sur le fonctionnement interne de Magika, consultez la section Concepts de base du site web de Magika.
% cd tests_data/basic && magika -r * | head
asm/code.asm: Assembly (code)
batch/simple.bat: DOS batch file (code)
c/code.c: C source (code)
css/code.css: CSS source (code)
csv/magika_test.csv: CSV document (code)
dockerfile/Dockerfile: Dockerfile (code)
docx/doc.docx: Microsoft Word 2007+ document (document)
docx/magika_test.docx: Microsoft Word 2007+ document (document)
eml/sample.eml: RFC 822 mail (text)
empty/empty_file: Empty file (inode)
% magika ./tests_data/basic/python/code.py --json
[
{
"path": "./tests_data/basic/python/code.py",
"result": {
"status": "ok",
"value": {
"dl": {
"description": "Python source",
"extensions": [
"py",
"pyi"
],
"group": "code",
"is_text": true,
"label": "python",
"mime_type": "text/x-python"
},
"output": {
"description": "Python source",
"extensions": [
"py",
"pyi"
],
"group": "code",
"is_text": true,
"label": "python",
"mime_type": "text/x-python"
},
"score": 0.996999979019165
}
}
}
]
% cat tests_data/basic/ini/doc.ini | magika -
-: INI configuration file (text)
% magika --help
Determines file content types using AI
Usage: magika [OPTIONS] [PATH]...
Arguments:
[PATH]...
List of paths to the files to analyze.
Use a dash (-) to read from standard input (can only be used once).
Options:
-r, --recursive
Identifies files within directories instead of identifying the directory itself
--no-dereference
Identifies symbolic links as is instead of identifying their content by following them
--colors
Prints with colors regardless of terminal support
--no-colors
Prints without colors regardless of terminal support
-s, --output-score
Prints the prediction score in addition to the content type
-i, --mime-type
Prints the MIME type instead of the content type description
-l, --label
Prints a simple label instead of the content type description
--json
Prints in JSON format
--jsonl
Prints in JSONL format
--format <CUSTOM>
Prints using a custom format (use --help for details).
The following placeholders are supported:
%p The file path
%l The unique label identifying the content type
%d The description of the content type
%g The group of the content type
%m The MIME type of the content type
%e Possible file extensions for the content type
%s The score of the content type for the file
%S The score of the content type for the file in percent
%b The model output if overruled (empty otherwise)
%% A literal %
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
Pour plus d'exemples et de documentation sur la CLI, voir https://crates.io/crates/magica-cli.
>>> from magika import Magika
>>> m = Magika()
>>> res = m.identify_bytes(b'function log(msg) {console.log(msg);}')
>>> print(res.output.label)
javascript
>>> from magika import Magika
>>> m = Magika()
>>> res = m.identify_path('./tests_data/basic/ini/doc.ini')
>>> print(res.output.label)
ini
>>> from magika import Magika
>>> m = Magika()
>>> with open('./tests_data/basic/ini/doc.ini', 'rb') as f:
>>> res = m.identify_stream(f)
>>> print(res.output.label)
ini
Pour plus d'exemples et de documentation sur le module Python, voir la section Module Python Magika.
Veuillez consulter le site web de Magika pour une documentation détaillée sur :
Veuillez nous contacter directement à [email protected].
Apache 2.0 ; voir LICENSE pour les détails.
Ce projet n'est pas un projet officiel de Google. Il n'est pas soutenu par Google et Google décline expressément toutes garanties quant à sa qualité, sa commercialisabilité ou son adéquation à un usage particulier.