
Packet-Sniffer v4.0.0
Rawソケットベースのネットワークパケットスニファで、ネットワークインターフェースからTCP/IPパケットをキャプチャして分解し、セキュリティ分析や教育用途に使用します。
RootWire
GNU/Linux向けネットワークトラフィックモニター — 旧称 Packet-Sniffer。フレームはrawソケットでネットワークインターフェースからキャプチャされ、 NETProtocolsライブラリでレイヤごとにデコードされ、 ライブ表示、pcapへの書き込み、またはJSONとしてストリーミングされます:
[>] Frame #4 at 15:42:07 (wlan0, 74 bytes)
[+] Ethernet 3c:7c:3f:1a:be:22 -> 9c:1e:95:aa:01:5f
EtherType: IPv4
[+] IPv4 192.168.1.96 -> 142.250.79.78
TTL: 64 | Flags: Don't fragment (DF) | Total Length: 60 | ID: 39754
Protocol: TCP | Checksum: 0x2b51
[+] TCP 51888 -> 443
Flags: 0x002 (SYN) | Seq: 3598801521 | Ack: 0
Window: 64240 | Checksum: 0x2008 | Options: 20 bytes
デコーダはEthernet、ARP、IPv4(オプションとフラグメント)、IPv6 拡張ヘッダを含む(MLDレポートは完全なHop-by-Hopチェーンをレンダリングします)、ICMPv4/v6、TCP(オプション対応のペイロードオフセット)、 UDPをカバーします。不正または切り詰められたフレームはキャプチャをクラッシュさせる代わりに診断され、 未知のプロトコルはチェーンを正常に終了し、16レイヤの上限により巧妙に作られた拡張ヘッダスタックの増幅を防ぎます — キャプチャはネットワークが何を送り込んでも生き残ります。
インストール
pipx install rootwire # または: uv tool install rootwire
またはuvを使ってクローンから実行:
git clone https://github.com/EONRaider/RootWire.git
cd RootWire
uv sync
使用方法
rootwire [-h] [-i INTERFACE] [-r FILE] [-w FILE] [--json] [-d] [--version]
options:
-i, --interface フレームをキャプチャするインターフェース(デフォルト: 全インターフェース)
-r, --read FILE ライブキャプチャの代わりにクラシックpcapファイルからフレームを再生
(権限は不要)
-w, --write FILE キャプチャしたすべてのフレームをクラシックpcapファイルにも書き込む
--json フレームごとに1つのNDJSONオブジェクトをstdoutに出力(バナーと
統計情報はstderrに残る): jqに直接パイプ可能
-d, --data 各フレームの生ペイロードも表示(--jsonでは無視)
キャプチャ統計 — フレーム数、バイト数、フレーム/秒、不正/切り詰め カウント、プロトコル別集計 — はキャプチャ終了時にstderrに報告されます。おすすめの組み合わせ:
sudo rootwire -i eth0 -w session.pcap # キャプチャして証拠を保存
rootwire -r session.pcap # 後でrootなしで検査
rootwire -r session.pcap --json | jq . # 機械可読な分析
ライブキャプチャにはrawソケットが必要で、Linuxではroot
(sudo rootwire -i eth0)またはインタプリタにCAP_NET_RAW
ケーパビリティを付与する必要があります。-rでのファイル再生には権限は一切不要です。
クローンから実行する場合は、sudo .venv/bin/python -m rootwireとして実行します。
仕組み
capture.pyはAF_PACKETソケットから生フレームを生成し(または
pcap.pyがファイルから再生 — 2つのソースは
交換可能); decoder.pyは各フレームのプロトコルチェーンを不変の
DecodedFrameに変換; 出力 — 画面レンダラー、NDJSON
ストリーム、pcapライター、統計コレクター — は1つの小さなOutput
インターフェースを通じてすべてのフレームを消費します。長いキャプチャ中にメモリがフラットなままである理由や
出力の追加方法を含む完全なツアーは、ARCHITECTURE.mdにあります。
rawソケット以外はすべて任意のOSで動作するため、テストスイート — 実際にキャプチャされたトラフィックの65フレームのコーパスをパイプライン全体で再生するものを含む — はrootもLinuxも必要としません:
uv run pytest
ロードマップ
- BPFフィルタリング(カーネル側キャプチャフィルタ)
- カーネルタイムスタンプ(
SO_TIMESTAMPNS)とSIGTERMクリーンなサービス利用 - チェックサム検証のレンダリング(ライブラリはすでに計算済み)
法的免責事項
本リポジトリに含まれるコードを、その一部または全体を問わず、事前の相互同意なしに ターゲットに対して使用することは違法です。適用されるすべての地域、州、連邦法を 遵守する責任はエンドユーザーにあります。
開発者はいかなる責任も負わず、本リポジトリに含まれるコードが、偶発的または その他の方法で、脅威エージェントや不正なエンティティによって、システムおよびその関連リソースの セキュリティ、プライバシー、機密性、完全性、および/または可用性を侵害する手段として 利用された場合の誤用や損害について責任を負いません。この文脈において「侵害」という用語は、 当該システムに存在する既知または未知の脆弱性の悪用を意味するものと理解され、 セキュリティ管理の実装、人為的または電子的に有効化されたものを含みますが、これらに限定されません。
本コードの使用は、教育環境または許可されたペネトレーションテスト業務に直接関連する 状況においてのみ、開発者によって推奨されます。その宣言された目的は、システムの脆弱性を 発見して緩和し、それぞれの脅威モデルで定義された悪意のあるエージェントによって使用される 侵害やエクスプロイトへの露出を制限することです。