Python応用

Pythonで作る軽量Windowsセキュリティ監視ツール!不審プロセスをスマホに通知する方法

「タスクマネージャーを開いたら見覚えのないプロセスが40個以上並んでいた…」そんな経験、ありませんか?😅

海外の開発者コミュニティ dev.to で、ちょっと面白いプロジェクトが話題になっています。「ブラウザより少ないRAMで動くWindowsセキュリティ監視ツールを自作した」というもの。しかも不審なプロセスを検知したらスマホに通知まで飛ばせるとのこと!

重いセキュリティソフトに500MBのRAMを食われるのは、正直しんどいですよね。Pythonなら同じことがはるかに軽量に実現できます。今回はその考え方をベースに、実際に動くサンプルコードを一緒に見ていきましょう。

🔍 何を「監視」するのか?

cybersecurity monitor
cybersecurity monitor / Photo by Tima Miroshnichenko via Pexels

ポイントをまとめるとこんな感じです。

  • ✅ 現在起動しているプロセスの一覧を定期取得
  • ✅ 「普段見かけないプロセス」をリストアップ
  • ✅ 新しく現れたプロセスをスマホへ通知

つまり、ベースライン(正常状態)と現在の差分を検出するという発想です。イメージとしては「いつもの家の中に知らない人が入ってきたら教えてくれる防犯カメラ」みたいな感じですね。

🐍 Pythonサンプルコード

必要なライブラリは psutil(プロセス情報の取得)と requests(通知送信)だけです。まずインストールしておきましょう。

pip install psutil requests

次に監視スクリプト本体です。ここが重要です👇

import psutil
import requests
import time

# --- 設定 ---
# Pushoverなどの通知サービスのAPIキーを入れてください
NOTIFY_URL = "https://your-notification-endpoint"
CHECK_INTERVAL = 10  # 何秒ごとにチェックするか

def get_process_names():
    """現在動いているプロセス名を集合で返す"""
    return {p.name() for p in psutil.process_iter(['name'])}

def send_alert(message):
    """スマホへ通知を送る"""
    try:
        requests.post(NOTIFY_URL, json={"message": message}, timeout=5)
        print(f"[通知送信] {message}")
    except Exception as e:
        print(f"[通知エラー] {e}")

def monitor():
    print("監視開始!ベースラインを取得中...")
    # 起動時のプロセス一覧をベースラインとして記録
    baseline = get_process_names()
    print(f"ベースライン: {len(baseline)}個のプロセスを登録")

    while True:
        time.sleep(CHECK_INTERVAL)
        current = get_process_names()
        # ベースラインにない新規プロセスを検出
        new_procs = current - baseline
        if new_procs:
            for proc in new_procs:
                send_alert(f"⚠️ 新しいプロセス検出: {proc}")
            # ベースラインを更新
            baseline = current

if __name__ == "__main__":
    monitor()

ポイントをまとめるとこんな感じです。

  • 🔑 psutil.process_iter() でプロセス一覧を軽量に取得
  • 🔑 集合(set)の差分演算 current - baseline で新規プロセスを一発検出
  • 🔑 通知先はPushover・ntfy・LINE Notifyなど好みのサービスに差し替えOK

💡 さらに発展させるアイデア


このスクリプト、実はベースとして使えることがたくさんあります。

  • 📋 ホワイトリスト方式:信頼するプロセス名を事前登録して、それ以外だけ通知
  • 📊 CPU・メモリ使用率も同時監視:psutilなら1行で取得できます
  • 🕐 Windowsタスクスケジューラで自動起動:PC起動と同時に監視スタート

まとめ

Pythonと psutil を組み合わせれば、重いセキュリティソフトに頼らなくても軽量なプロセス監視ツールが自作できます。差分検出という考え方はシンプルですが、実用性は十分高いですよ。

まずはコードをコピーしてローカルで動かしてみてください。通知先のURLを自分のサービスに変えるだけで、すぐに実用レベルで使えます。ぜひ試してみてください! 🚀

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品]

もしも

ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付 mega2560 r3 nanoと互換 [並行輸入品]

チュートリアル付きのArduino入門セット

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です