だから私は次のようなソケットを持っています:
sock = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.getprotobyname("icmp"))
そして、RFC4443 ごとにタイプ 128 およびコード 0 (チェックサムも検証済み) で適切に構成された ICMP6 ECHO REQUEST を送信すると、パケットは宛先のスタックによってドロップされます。ヘッダーは RFC ごとに 1 に設定されます (ICMP の場合は #)。
2つのこと:1. socket.getprotobyname("icmp") がソケットICMPをIPv4と互換性があることを知っています(正しいですか?)... 2. WiresharkはパケットをIPv6として読み取りますが、プロトコルはICMPv6ではなくICMPとして読み取ります...
どちらかが protocolbyname("icmpv6") を使用するようにソケットを設定します (これは明らかに無効です。誰かが適切な文字列を知らない限り... "icmp6" "icmpv6" を試しましたが、アンダースコアを使用していくつかの試行が行われる可能性があります) .
または、パケットを 58 に送信する前に「次のヘッダー」バイトを変更します。
LAST RESORT は手動でパケットを作成します。
誰にもアイデアがありますか?もちろん、私は Python の経験が最も豊富というわけではありません。