C#でパケットキャプチャを作ってみた

_Socket = new Socket(AddressFamily.InterNetwork,
SocketType.Raw ,
ProtocolType.IP);
if (_IP == null)
{
return;
}
_Socket.Bind(new IPEndPoint(IPAddress.Parse(_IP), 0));

byte byTrue = new byte[4] { 1, 0, 0, 0 };
byte
byOut = new byte[4];

_Socket.SetSocketOption(
SocketOptionLevel.IP,
SocketOptionName.HeaderIncluded,
true
);
_Socket.IOControl(IOControlCode.ReceiveAll,
byTrue,
byOut);
_Socket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,
new AsyncCallback(Receive), null);
と抜粋だがこんな感じだ、プロミスキャストモードの設定を知るには意外に簡単に実装できたとおもう。
あとはヘッダータイプを調べて実装することが出来ればそこそこ使える物になりそうだ