py-amsi は、Windows の Antimalware Scan Interface (AMSI) API を使用して、マルウェアの文字列やファイルをスキャンするライブラリです。AMSI は Windows にネイティブなインターフェースで、アプリケーションがシステムにインストールされたアンチウイルスにファイル/文字列の分析を依頼することを可能にします。AMSI は Windows Defender に限定されません。アンチウイルスベンダーは AMSI インターフェースを実装し、アプリケーションからの呼び出しを受け取ります。このライブラリは API を活用して、Python でアンチウイルススキャンを実行します。Windows AMSI API の詳細はこちらを参照してください。
pip 経由
pip install pyamsi
リポジトリをクローン
git clone https://github.com/Tomiwa-Ot/py-amsi.git
cd py-amsi/
python setup.py install
from pyamsi import Amsi
# ファイルをスキャン
Amsi.scan_file(file_path, debug=True) # debug はオプションで、デフォルトは False
# 文字列をスキャン
Amsi.scan_string(string, string_name, debug=False) # debug はオプションで、デフォルトは False
# 両方の関数は以下の形式の辞書を返します
# {
# 'Sample Size' : 68, // 文字列/ファイルのサイズ(バイト)
# 'Risk Level' : 0, // アンチウイルスが示すリスクレベル
# 'Message' : 'File is clean' // 応答メッセージ
# }
| リスクレベル | 意味 |
|---|---|
| 0 | AMSI_RESULT_CLEAN(ファイルはクリーン) |
| 1 | AMSI_RESULT_NOT_DETECTED(脅威は検出されませんでした) |
| 16384 | AMSI_RESULT_BLOCKED_BY_ADMIN_START(管理者によって脅威がブロックされました) |
| 20479 | AMSI_RESULT_BLOCKED_BY_ADMIN_END(管理者によって脅威がブロックされました) |
| 32768 | AMSI_RESULT_DETECTED(ファイルはマルウェアとみなされます) |