检查TcpLayer或udpLayer是否为空

时间:2015-03-03 16:06:11

标签: c# tcp pcap.net

我正在使用pcap.net从pcap文件中读取数据包并在匿名化后将它们保存到新的pcap文件中(更改某些字段)。我有个问题。一些pcap文件包含不正确或不完整的数据包,例如它们没有tcp层或有效负载。 我想知道如何检查tcplayer是否存在?

这是我的代码的一部分:

**TcpLayer tcpLayer = (TcpLayer)packet.Ethernet.IpV4.Tcp.ExtractLayer();                                 
UdpLayer udpLayer = (UdpLayer)packet.Ethernet.IpV4.Udp.ExtractLayer();**

这些行中没有tcp或udp层hava错误的pcap文件。 如何在此行之前检查tcpLayer是否为空? 谢谢

1 个答案:

答案 0 :(得分:0)

以下是一些验证码:

if (packet == null)
  return;

if (packet.Ethernet == null)
  return;

if (packet.Ethernet.EtherType != EthernetType.IpV4)
  return;

if (packet.Ethernet.IpV4 == null)
  return;

if (packet.Ethernet.IpV4.Protocol != IpV4Protocol.Tcp &&
    packet.Ethernet.IpV4.Protocol != IpV4Protocol.Udp)
  return; 

if (packet.Ethernet.IpV4.Transport == null)
  return;