2015-02-08 86 views
0

我用PcapDotnet包装器嗅探数据包,但它只显示IP原始数据包 例如在客户方我发送一个数据包的Tcp原始数据包

client_.Send(ASCIIEncoding.ASCII.GetBytes("test")); 

,并在服务器端,我想捕捉“测试”,但packet.Buffer显示不同的66个字节。我可以得到“测试”数据包吗?

private static void PacketHandler(Packet packet) 
    { 
     IpV4Datagram ip = packet.Ethernet.IpV4; 
     TcpDatagram tcp = ip.Tcp; 

     if (tcp.DestinationPort == 28001 || tcp.SourcePort == 28001) 
     { 
      File.AppendAllText("return.txt", ASCIIEncoding.ASCII.GetString(packet.Buffer)); 
      Console.WriteLine(ip.Source + ":" + tcp.SourcePort + " -> " + ip.Destination + ":" + tcp.DestinationPort); 
     } 
    } 

回答

1
File.AppendAllText("return.txt", ASCIIEncoding.ASCII.GetString(packet.Buffer)); 

正在打印所有二进制,包括IPv4标头和TCP报头。

尝试只:

File.AppendAllText("return.txt", ASCIIEncoding.ASCII.GetString(tcp.Payload??)); 
+0

我用packetDotNet包装并且收到了有效载荷 正确的数据包((packet.PayloadPacket).PayloadPacket).PayloadData, – 2015-04-16 11:01:08