c# - 检查 TcpLayer 或 udpLayer 是否不为空

标签 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 层的 pcap 文件在这些行中有错误。 我如何检查 tcpLayer 在此行之前是否不为空? 谢谢

最佳答案

这是一些验证码:

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;

关于c# - 检查 TcpLayer 或 udpLayer 是否不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28836393/

相关文章:

c# - 使用 SMO 在 SQL Azure 数据库中创建表失败

c# - 静态扩展方法

c# - .dll 文件不可访问

c# - PCAP 库功能(编写新的 PCAP 文件)

c# - 使用 KeyVault secret 覆盖 Azure 应用服务和本地中的应用程序设置

c# - 简单的异步等待 tcp 服务器设计

python - "app.run(host=' 0.0.0 是什么意思? 0') "表示 Flask

c# - 你如何对 tcp 连接进行单元测试?

c# - Windows 将数据包转发到 C# 应用程序

c# - 使用 PcapDotNet,如何提取最终的有效负载?