Impacket ping6.py
Impacket の IPv6/ICMPv6 構造を使い、ICMPv6 Echo を送る小さな実装例です。
| 項目 | 内容 |
|---|---|
| 実装 | examples/ping6.py |
| カテゴリ | パケット / ICMP / キャプチャ |
| 規模 | 88 行 |
| 配布 | setup.py の scripts=examples/*.py によりスクリプトとしてインストール |
CLI と入力
Section titled “CLI と入力”この古い形式のサンプルは -h を解釈しないため、usage とトップレベルの sys.argv 処理を確認します。
python examples/ping6.py <src-ipv6> <dst-ipv6>src-ipv6: IPv6 header と ICMPv6 pseudo-header に使用する送信元アドレス。dst-ipv6: Echo Request の送信先アドレス。- 追加 option はなく、引数が2個未満なら usage を表示して終了 code 1 を返します。
詳細な処理フロー
Section titled “詳細な処理フロー”IPv6 address と ICMPv6 Echo Request を構築し、pseudo-header を含む checksum を設定して raw socket から送信します。応答を待って IPv6/ICMPv6 decoder へ渡し、対応 Echo Reply の情報と時間を表示します。
仕組みの詳細
Section titled “仕組みの詳細”IPv6 版では kernel へ渡す範囲と checksum の計算材料が IPv4 版と異なります。
IP6 object に source/destination、traffic class、flow label、hop limit を
設定し、ICMPv6 Echo Request を child として関連付けます。ICMPv6 checksum は
IPv6 pseudo-header の address、next-header、payload length も含めて計算します。
raw ICMPv6 socket へは ICMPv6 packet 部分を送り、loop ごとに sequence number を
増やします。受信 byte 列は ICMP6Decoder に渡し、Echo Reply type と
echo sequence を表示します。IPv6 extension header を含む受信経路や kernel が
どこまで header を付加するかは OS の raw socket behavior に依存します。
Neighbor Discovery や Path MTU、scope ID、link-local interface 選択はこの サンプルの責務外です。そのため link-local address や複数 interface 環境では 追加指定が必要になる場合があります。応答 type だけでなく identifier、 sequence、source address を対応付けると、複数 probe 時の精度を上げられます。
主要な実装要素
Section titled “主要な実装要素”| シンボル | 位置 | 責務を追う入口 |
|---|---|---|
| module-level entry | 1 | トップレベルで引数解析と処理を実行 |
Impacket 内部
Section titled “Impacket 内部”| モジュール | 使用する主な名前 |
|---|---|
impacket | ICMP6, IP6, ImpactDecoder, version |
出力・副作用・必要権限
Section titled “出力・副作用・必要権限”- network probe または live packet capture を行います。送受信範囲、interface、filter と取得データの取扱いを確認してください。
- raw socket または packet capture の権限が必要になる場合があります。取得データには第三者通信が含まれ得ます。
失敗経路と後始末
Section titled “失敗経路と後始末”- 入力ファイルがない場合、壊れている場合、読み取りが途中で終わる場合、未対応の形式だった場合を区別します。
実装を変更するとき
Section titled “実装を変更するとき”IP6、ICMP6、ImpactDecoder、raw IPv6 socket に依存します。IPv4 版と header/checksum 規則が異なるため、共通化する場合も pseudo-header と extension header の処理を明示的に分けてください。
- 構文:
python -m py_compile examples/ping6.py - CLI: 引数なし/不足時の usage と終了 code を subprocess で確認する。
- このコマンド専用のテストは見つかりません。共有モジュールのテストと、必要に応じて隔離環境での動作確認を選びます。

