dotpcap / packetnet

Official repository - High performance .Net assembly for dissecting and constructing network packets such as ethernet, ip, tcp, udp etc.
Mozilla Public License 2.0
476 stars 105 forks source link

IndexOutOfRangeException when parse packet #18

Closed russianbullet closed 5 years ago

russianbullet commented 7 years ago

Hello dear @chmorgan

When I'm parsing the following packet I get this error :

byte[] b = new byte[]{0,140,250,155,238,45,8,158,1,238,86,55,8,0,69,0,0,23,59,214,0,185,128,6,44,53,192,168,6,1,192,168,6,2,158,163,173};
PacketDotNet.Packet packet = PacketDotNet.Packet.ParsePacket(LinkLayers.Ethernet,b );

An unhandled exception of type 'System.IndexOutOfRangeException' occurred in PacketDotNet.dll Additional information: Index was outside the bounds of the array.

russianbullet commented 7 years ago

Sorry, the packetdotnet was old, i recompiled the new sourcecode and now it's working

stricq commented 7 years ago

I still get this exception with the Nuget version. It only happens on TCPv6 packets. Version 0.13.0

Will you be updating the Nuget package?

at PacketDotNet.TcpPacket.get_DataOffset() at PacketDotNet.TcpPacket..ctor(ByteArraySegment bas) at PacketDotNet.TcpPacket..ctor(ByteArraySegment bas, Packet ParentPacket) at PacketDotNet.IpPacket.ParseEncapsulatedBytes(ByteArraySegment payload, IPProtocolType ProtocolType, Packet ParentPacket) at PacketDotNet.IPv6Packet..ctor(ByteArraySegment bas) at PacketDotNet.EthernetPacket.ParseEncapsulatedBytes(ByteArraySegment Header, EthernetPacketType Type) at PacketDotNet.EthernetPacket..ctor(ByteArraySegment bas) at PacketDotNet.Packet.ParsePacket(LinkLayers LinkLayer, Byte[] PacketData) at TcpMonitor.Repository.Services.PacketCaptureService.onDevicePacketArrival(Object sender, CaptureEventArgs args) in D:\Visual Studio Projects\TcpMonitor\TcpMonitor.Repository\Services\PacketCaptureService.cs:line 47 at SharpPcap.LibPcap.PcapDevice.SendPacketArrivalEvent(RawCapture p) at SharpPcap.WinPcap.WinPcapDevice.SendPacketArrivalEvent(RawCapture p) at SharpPcap.LibPcap.PcapDevice.PacketHandler(IntPtr param, IntPtr header, IntPtr data) at SharpPcap.LibPcap.LibPcapSafeNativeMethods.pcap_dispatch(IntPtr adaptHandle, Int32 count, pcap_handler callback, IntPtr ptr) at SharpPcap.LibPcap.PcapDevice.CaptureThread() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()

patrious commented 6 years ago

Have you tested this with the latest 0.19 version?

chmorgan commented 6 years ago

@stricq I think you may be using someone elses package, this is the official package: https://www.nuget.org/packages/PacketDotNet/

stricq commented 6 years ago

@chmorgan I'm quite certain I'm using your nuget package. I just updated to the version you just released (0.19.1) and I'm still getting the exception. Here is my line of code:

if (packet.Extract(typeof(TcpPacket)) is TcpPacket tcpPacket) {

Here is the full project: https://github.com/stricq/TcpMonitor

It is the Extract method where the exception happens.

   at PacketDotNet.MiscUtil.Conversion.EndianBitConverter.CheckByteArgument(Byte[] value, Int32 startIndex, Int32 bytesRequired)
   at PacketDotNet.TcpPacket.get_DataOffsetAndFlags()
   at PacketDotNet.TcpPacket..ctor(ByteArraySegment bas, Packet parentPacket)
   at PacketDotNet.IPPacket.ParseEncapsulatedBytes(ByteArraySegment payload, IPProtocolType protocolType, Packet parentPacket)
   at System.Lazy`1.CreateValue()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Lazy`1.get_Value()
   at PacketDotNet.Packet.ToString(StringOutputType outputFormat)
   at PacketDotNet.IPv6Packet.ToString(StringOutputType outputFormat)
   at PacketDotNet.EthernetPacket.ToString(StringOutputType outputFormat)
stricq commented 6 years ago

Here is a Json.net dump of the raw packet data that throws the exception:

{ "Data": "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", "LinkLayerType": 1, "Timeval": { "Seconds": 1534989866, "MicroSeconds": 710068, "Date": "2018-08-23T02:04:26.710068Z" } }

stricq commented 5 years ago

0.19.2 still has the same exception.

chmorgan commented 5 years ago

Hi @stricq, closing this out. Please retest with the latest version and reopen if there is still an issue.