C#でARPパケットを送信したい。C#でARPパケット(フォーマット)を作成する方法がわかりません。誰かがこれを手伝うことができますか?さらに、arpパケットを送信またはブロードキャストする方法。
サンプルコードは大歓迎です。前もって感謝します。
興味があるかもしれないライブラリは次のとおりです:http://www.beesync.com/packetx/docs/html/index.html
そして、send.csファイルからの抜粋。
// Get adapter hardware address and IP address
Adapter oAdapter = (Adapter)oPktX.Adapter;
string sHWAddr = oAdapter.HWAddress;
string sIPAddr = oAdapter.NetIP;
string sIPMask = oAdapter.NetMask;
Console.WriteLine("MAC Addr = " + sHWAddr);
Console.WriteLine("IP Addr = " + sIPAddr);
// Send ARP request for this IP address
string sIPReso = "11.12.13.14";
char [] aDelimiter = {'.'};
string[] aIPReso = sIPReso.Split(aDelimiter, 4);
string[] aIPAddr = sIPAddr.Split(aDelimiter, 4);
// Build ARP packet
Object[] oPacket = new Object[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
Convert.ToByte("0x" + sHWAddr.Substring(0,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(2,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(4,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(6,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(8,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(10,2), 16),
0x08, 0x06, 0x00, 0x01,
0x08, 0x00, 0x06, 0x04, 0x00, 0x01,
Convert.ToByte("0x" + sHWAddr.Substring(0,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(2,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(4,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(6,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(8,2), 16),
Convert.ToByte("0x" + sHWAddr.Substring(10,2), 16),
Convert.ToByte(aIPAddr[0], 10),
Convert.ToByte(aIPAddr[1], 10),
Convert.ToByte(aIPAddr[2], 10),
Convert.ToByte(aIPAddr[3], 10),
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Convert.ToByte(aIPReso[0], 10),
Convert.ToByte(aIPReso[1], 10),
Convert.ToByte(aIPReso[2], 10),
Convert.ToByte(aIPReso[3], 10),
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// Send 100 ARP requests
oAdapter.SendPacket(oPacket, 100);
編集:
これを行うための最良の方法は、WinPCapライブラリを使用することです。これらはC#ではなくCで正式に提供されますが、winpcapをインストールしている場合は、wpcap.ddlをインポートできます。
http://geekswithblogs.net/dotnetnomad/archive/2008/01/31/119140.aspx
http://bytes.com/topic/c-sharp/answers/278941-how-wrap-winpcap
そして、ここにソース付きのGUIスニファーがあります: