C#SharpPcap发送Tcp包

时间:2014-07-25 16:00:31

标签: c# tcp ethernet sharppcap packetdotnet

我试图通过SharpPcap将Tcp数据包发送到服务器但是它有效,有人可以帮助我或解释我如何使用SharpPcap和Packet.Net发送TcpPackets。

更多信息: 我正在嗅探一个连接,并试图在特定数据包收入的情况下向服务器发送消息。

感谢阅读!

1 个答案:

答案 0 :(得分:0)

我也有同样的问题。我想从第一个接口更改程序包的ip地址,并从另一个接口发送程序包,但是我只看到ARP程序包,而不是TCP程序包。我做错了什么?

private void device_OnPacketArrival(object sender, CaptureEventArgs e)
   {
       var time = e.Packet.Timeval.Date;
       var len = e.Packet.Data.Length;

       var packet = PacketDotNet.Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);
       var tcpPacket = packet.Extract<PacketDotNet.TcpPacket>();

       if (tcpPacket != null)
       {
           var ipPacket = (PacketDotNet.IPPacket)tcpPacket.ParentPacket;
           System.Net.IPAddress srcIp = ipPacket.SourceAddress;
           System.Net.IPAddress dstIp = ipPacket.DestinationAddress;
           int srcPort = tcpPacket.SourcePort;
           int dstPort = tcpPacket.DestinationPort;

           if (IsHostOnly && srcIp.Equals(OwnPair.SourceIp))
           {
               ipPacket.SourceAddress = System.Net.IPAddress.Parse("10.0.4.15");
               tcpPacket.ParentPacket = ipPacket;

               TransmitDevice.SendPacket(tcpPacket);
           }

           Console.WriteLine("{0}:{1}:{2},{3} Len={4} {5}:{6} -> {7}:{8}",
               time.Hour, time.Minute, time.Second, time.Millisecond, len,
               srcIp, srcPort, dstIp, dstPort);

       }
   }