Google 發布了 Magika 1.0,這是一個基於文件資料分析來識別文件內容類型的工具包。 Magika 可以準確識別程式語言、壓縮方法、安裝套件、可執行程式碼、標記類型以及音訊、視訊、文件和圖像格式。此工具包及其機器學習模型均採用 Apache 2.0 授權。目前提供 Rust、Python、JavaScript/TypeScript 和 Go 的綁定。
Magika 與其他類似專案不同,後者使用機器學習方法根據內容確定 MIME 類型。 高效能 該模型使用 Keras 框架,基於 100 億個範例檔案(資料集大小超過 3 TB)進行訓練,支援識別 200 種資料類型,準確率至少達到 99%。模型以 ONNX 格式編譯,大小僅為幾兆位元組。與Google先前基於手動定義規則的系統相比,採用深度機器學習方法使檢測準確率提高了 50%。
在谷歌,該系統用於在安全檢查和合規性檢查期間對 Gmail、雲端硬碟、程式碼洞察和安全瀏覽服務中的檔案進行分類。 Magika 已整合到 VirusTotal 和 abuse.ch 平台中,作為運行特定分析器之前的主要過濾層。部署在Google基礎設施中的 Magika 配置每秒掃描數百萬個文件,每週掃描數千億個文件。模型載入後,在單核心 CPU 上測試的推理時間為 5 毫秒。檢測時間幾乎與檔案大小無關。
為了方便您在專案中使用 Magika,我們準備了命令列工具、Python、Rust 和 Go 的軟體包,以及可在瀏覽器或 Node.js 專案中執行的 JavaScript 程式庫。命令列介面和 API 支援批次操作,可讓您在單一請求中掃描多個檔案。此外,還提供用於掃描整個目錄的遞歸掃描模式,以及三種用於調整誤差容忍度的預測模式(高置信度、中置信度和最佳猜測)。
該專案最初使用 Python 開發,但在 1.0 版本發布前,內容類型檢測引擎已用 Rust 重寫,在保持所需程式碼安全的同時,實現了更高的效能。機器學習模型運行在 ONNX Runtime 框架上,並行非同步請求處理則使用了 Tokio 函式庫。在 MacBook Pro (M4) 上,該引擎的效能使其每秒可處理約 1000 個檔案。
除了新的引擎之外,1.0 版本還進行了以下更改:支援的類型數量從大約 100 種擴展到 200 種;新增了一個用 Rust 編寫的命令列客戶端;提高了對配置文件和代碼等文本格式的檢測精度;並重構了 Python 和 TypeScript 模組,以簡化它們與其他項目的整合。新增支援的內容類型包括機器學習和人工智慧中使用的格式;Swift、Kotlin、TypeScript、Dart、Solidity、WebAssembly 和 Zig 程式語言;DevOps 元件(Dockerfile、TOML、HashiCorp、Bazel 建置檔案和 YARA 規則);SQLite 資料庫;AutoCADCAD dwoffd)。此外,程式碼分離(C++ 與 C、JavaScript 和 TypeScript)也得到了改進。
來源: opennet.ru
