前提、実現したいこと
pythonを用いてICMPv6メッセージを作成し、受け取るようなシステムを作っています。
ICMPv6ヘッダに自作のオプションを追加しているのでscapy,tcpdumpだとうまく解析できないため、socketライブラリを用いて受け取ったバイナリデータを読み取りたいです。
自作のオプションを含んだパケットの作成、送信は既に実現済みです。
発生している問題
socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMPV6)
だとICMPv6ヘッダを参照し自作オプションもバイナリデータで読み取れますが、IPv6ヘッダを受信できません。
socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW)
だとIPv6ヘッダとICMPv6ヘッダから自作できますが、送信のみに対応しているようで受信できません。
ソースコード1
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMPV6)
s.bind(("",0))
packet,addr=s.recvfrom(1024)
print(packet)
#b'\x80\x00... といったようにICMPヘッダ以降のデータのみ出力
ソースコード2
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
s.bind(("",0))
packet,addr=s.recvfrom(1024)
print(packet)
#なにも出力されない
回答1件
あなたの回答
tips
プレビュー