
Rilevamento rapido e accurato dei tipi di contenuto dei file tramite IA
Magika è uno strumento innovativo di rilevamento del tipo di file basato su IA che sfrutta i recenti progressi del deep learning per fornire un rilevamento accurato. Sotto il cofano, Magika utilizza un modello personalizzato altamente ottimizzato che pesa solo pochi MB e consente un'identificazione precisa del file in pochi millisecondi, anche se eseguito su una singola CPU. Magika è stato addestrato e valutato su un set di dati di circa 100 milioni di campioni in oltre 200 tipi di contenuto (che coprono sia formati di file binari che testuali) e raggiunge una precisione media di circa il 99% sul nostro set di test.
Ecco un esempio di come appare l'output della riga di comando di Magika:
Magika è utilizzato su larga scala per contribuire a migliorare la sicurezza degli utenti di Google, instradando i file di Gmail, Drive e Safe Browsing verso i corretti scanner di sicurezza e politiche sui contenuti, elaborando centinaia di miliardi di campioni su base settimanale. Magika è stato anche integrato con VirusTotal (esempio) e abuse.ch (esempio).
Per ulteriori informazioni, puoi leggere il nostro post di annuncio iniziale sul blog OSS di Google, consultare il sito web di Magika e leggere il nostro articolo di ricerca, pubblicato alla IEEE/ACM International Conference on Software Engineering (ICSE) 2025.
Puoi provare Magika senza installare nulla utilizzando la nostra demo web, che funziona localmente nel tuo browser!
-r per scansire ricorsivamente una directory.alta confidenza, media confidenza e miglior ipotesi.Magika fornisce un CLI scritto in Rust e può essere installato in diversi modi.
Tramite il pacchetto Python magika:
pipx install magika
Tramite brew (macOS / Linux)
brew install magika
Tramite script di installazione:
curl -LsSf https://securityresearch.google/magika/install.sh | sh
oppure:
powershell -ExecutionPolicy Bypass -c "irm https://securityresearch.google/magika/install.ps1 | iex"
Tramite il pacchetto Rust magika-cli:
cargo install --locked magika-cli
pip install magika
npm install magika
Qui trovi alcuni esempi rapidi per iniziare.
Per conoscere il funzionamento interno di Magika, consulta la sezione Concetti fondamentali del sito web di 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
Per ulteriori esempi e documentazione sul CLI, consulta https://crates.io/crates/magika-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
Per ulteriori esempi e documentazione sul modulo Python, consulta la sezione Modulo Python Magika.
Consulta il sito web di Magika per una documentazione dettagliata su:
Contattaci direttamente all'indirizzo [email protected].
Apache 2.0; consulta LICENSE per i dettagli.
Questo progetto non è un progetto ufficiale di Google. Non è supportato da Google e Google declina espressamente qualsiasi garanzia sulla sua qualità, commerciabilità o idoneità per uno scopo particolare.