如何在没有任何协议 Pcap.net c# 的情况下构建以太网数据包?
How to build a Ethernet Packet without any protocole Pcap.net c#?
我遵循本教程PcapDotNet/Pcap.Net. But I will try to build a packet like this picture Ethernet frame。
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 Whosebug")),
};
// 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
中检测到错误“无法从下一层自动确定以太类型 (PcapDotNet.Packets.PayloadLayer)”& 'System.ArgumentException'
但是,如果我通过 EthernetType.IpV4 或 IpV6 或 ARP 等更改 EthernetType.None .. 没有问题,但我不想添加其他协议。
提前致谢。
EtherType 不可能真的 None 在数据包中。
您应该将其设置为某个值。
当它设置为 None(或未设置)时,Pcap.Net 会尝试使用下一层自动计算它。
但是,代码中的下一层是 PayloadLayer,它没有提供有关 EtherType 的信息。
基本上,EtherType 应该说明应该如何解析以太网负载。如果你放一些有效负载,应该有一种方法来解析它。
我遵循本教程PcapDotNet/Pcap.Net. But I will try to build a packet like this picture Ethernet frame。
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 Whosebug")),
};
// 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
中检测到错误“无法从下一层自动确定以太类型 (PcapDotNet.Packets.PayloadLayer)”& 'System.ArgumentException'
但是,如果我通过 EthernetType.IpV4 或 IpV6 或 ARP 等更改 EthernetType.None .. 没有问题,但我不想添加其他协议。
提前致谢。
EtherType 不可能真的 None 在数据包中。 您应该将其设置为某个值。 当它设置为 None(或未设置)时,Pcap.Net 会尝试使用下一层自动计算它。 但是,代码中的下一层是 PayloadLayer,它没有提供有关 EtherType 的信息。
基本上,EtherType 应该说明应该如何解析以太网负载。如果你放一些有效负载,应该有一种方法来解析它。