C# 如何在C语言中广播ARP数据包#

C# 如何在C语言中广播ARP数据包#,c#,arp,C#,Arp,我想通过C#发送ARP数据包。 我不知道如何在C#中形成ARP数据包(格式)。有人能帮忙吗? 加上如何发送arp数据包或广播它 非常感谢任何示例代码。 提前感谢。这是您可能感兴趣的图书馆: 和send.cs文件中的一个Snippit // Get adapter hardware address and IP address Adapter oAdapter = (Adapter)oPktX.Adapter; string sHWAddr = oAdapter.HWAddress;

我想通过C#发送ARP数据包。 我不知道如何在C#中形成ARP数据包(格式)。有人能帮忙吗? 加上如何发送arp数据包或广播它

非常感谢任何示例代码。
提前感谢。

这是您可能感兴趣的图书馆:

和send.cs文件中的一个Snippit

// 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,下面是一些您可能需要查看的其他资源:

这是一个GUI嗅探器,源代码:


谢谢,但ARP头格式不正确,而且我不想使用第三方,此代码出现错误“无法识别格式”,请对此提供帮助。