2016-04-14 4 views
0

私はこのチュートリアルPcapDotNet/Pcap.Netに従います。しかし、私はこの写真のようなパケットを構築しようとしますEthernet frameprotocoleなしでイーサネットパケットを構築する方法Pcap.net c#?

private static Packet BuildEthernetPacket() 
    { 
     EthernetLayer ethernetLayer = 
      new EthernetLayer 
      { 
       Destination = new MacAddress("00:00:00:00:00:00"), 
       Source = new MacAddress("11:11:11:11:11:11"), 
       EtherType = EthernetType.None, // I select NONE for no IPV4 or ARP and so one protocole ... 
      }; 

     PayloadLayer payloadLayer = 
      new PayloadLayer 
      { 
       Data = new Datagram(Encoding.ASCII.GetBytes("Hello stackoverflow")), 
      }; 
     // The probleme it's here but the code build : 
     PacketBuilder builder = new PacketBuilder(ethernetLayer, payloadLayer); 
     return builder.Build(DateTime.Now); 
    } 

Visual StudioのコミュニティPcapDotNet.Packets.dll
で&「System.ArgumentExceptionの」「次の層(PcapDotNet.Packets.PayloadLayer)から自動的にエーテル型を決定できません」しかし、私は変更する場合は、エラーを検出EthernetType.None EthernetType.IpV4またはIpV6またはARPなど...。問題はありませんが、他のプロトコルを追加したくありません。

ありがとうございます。

答えて

0

EtherTypeは、パケット内で実際にはNoneになることはできません。 これを何らかの値に設定する必要があります。 None(または設定しない)に設定すると、Pcap.Netは次のレイヤーを使用して自動的に計算を試みます。 ただし、コードの次のレイヤーはPayloadLayerで、EtherTypeに関する情報は提供されません。

基本的に、EtherTypeはイーサネットのペイロードをどのように解析するべきかを述べる必要があります。ペイロードを置くと、それを解析する方法があるはずです。

関連する問題