C#で.Net 4ソケットの開発を学ぶための演習として、パケットスニファを作成しています。私の目標は、コンピューターに出入りするIPパケットをスニッフィングすることです。
私の問題は、SetSocketOptionの呼び出しでエラーコード10022、無効な引数が発生することです。無効な引数がある場所がわかりません。コンピューターに管理者権限がありますが、十分ではない可能性があります。それは私の仕事用コンピューターであり、IT部門はかなり厳格です。そうは言っても、それが権限の問題である場合、私は別の例外を期待します。
この問題をデバッグするための次のステップはどうあるべきかわかりません。誰かアイデアがありますか?
コードは次のとおりです。
public Sniffer()
{
try
{
socket = new Socket(
AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
IPAddress[] ipAddresses = Dns.GetHostEntry(
Dns.GetHostName()).AddressList;
socket.Bind(new IPEndPoint(ipAddresses[0], 0));
socket.SetSocketOption(
SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
byte[] inputData = new byte[4] { 1, 0, 0, 0 };
byte[] outValue = new byte[4];
socket.IOControl(IOControlCode.ReceiveAll, inputData, outValue);
}
catch (SocketException ex)
{
string ErrorMessage = ex.Message;
}
}