Esempio n. 1
0
            public TCPPacket(byte[] buffer)
            {
                try
                {
                    SourcePort      = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 0));
                    DestinationPort = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 2));

                    ushort offsetAndFlags = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 12));
                    DataOffset = (byte)((offsetAndFlags >> 12) * 4);
                    Flags      = (TCPFlags)(offsetAndFlags & 511); // 0b111111111 = 511

                    Payload = buffer.Skip(DataOffset).ToArray();

                    IsValid = true;
                }
                catch (Exception ex)
                {
                    SourcePort      = 0;
                    DestinationPort = 0;
                    DataOffset      = 0;
                    Flags           = TCPFlags.NONE;

                    Payload = null;

                    IsValid = false;

                    Log.Ex(ex, "TCP 패킷 파싱 에러");
                }
            }
Esempio n. 2
0
        public TCPPacket(byte[] buffer, int ignoreLength)
        {
            try
            {
                GlobalOffset = ignoreLength;

                SourcePort      = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, ignoreLength + 0));
                DestinationPort = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, ignoreLength + 2));

                var offsetAndFlags = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, ignoreLength + 12));
                DataOffset = (byte)((offsetAndFlags >> 12) * 4);
                Flags      = (TCPFlags)(offsetAndFlags & 511); // 0b111111111 = 511

                Payload = buffer.Skip(ignoreLength + DataOffset).ToArray();

                IsValid = true;
            }
            catch
            {
                SourcePort      = 0;
                DestinationPort = 0;
                DataOffset      = 0;
                Flags           = TCPFlags.NONE;

                Payload = null;

                IsValid = false;
                IpcClient.SendSignal(Signal.ClientPacketParseFail, new[] { "unable to tcplize" }, true);
            }
        }
Esempio n. 3
0
            public TCPPacket(byte[] buffer)
            {
                try
                {
                    SourcePort            = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 0));
                    DestinationPort       = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 2));
                    SequenceNumber        = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buffer, 4));
                    AcknowledgementNumber = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buffer, 8));

                    ushort offsetAndFlags = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 12));
                    DataOffset = (byte)((offsetAndFlags >> 12) * 4);
                    Flags      = (TCPFlags)(offsetAndFlags & 511); // 0b111111111 = 511

                    Window        = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 14));
                    Checksum      = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 16));
                    UrgentPointer = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 18));

                    Payload = new byte[buffer.Length - DataOffset];
                    Buffer.BlockCopy(buffer, DataOffset, Payload, 0, Payload.Length);

                    IsValid = true;
                }
                catch
                {
                    SourcePort            = 0;
                    DestinationPort       = 0;
                    SequenceNumber        = 0;
                    AcknowledgementNumber = 0;
                    DataOffset            = 0;
                    Flags         = TCPFlags.NONE;
                    Window        = 0;
                    Checksum      = 0;
                    UrgentPointer = 0;

                    Payload = null;

                    IsValid = false;
                }
            }
Esempio n. 4
0
            public TCPPacket(byte[] buffer)
            {
                try
                {
                    SourcePort = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 0));
                    DestinationPort = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 2));
                    SequenceNumber = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buffer, 4));
                    AcknowledgementNumber = (uint)IPAddress.NetworkToHostOrder(BitConverter.ToInt32(buffer, 8));

                    ushort offsetAndFlags = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 12));
                    DataOffset = (byte)((offsetAndFlags >> 12) * 4);
                    Flags = (TCPFlags)(offsetAndFlags & 511); // 0b111111111 = 511

                    Window = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 14));
                    Checksum = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 16));
                    UrgentPointer = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 18));

                    Payload = new byte[buffer.Length - DataOffset];
                    Buffer.BlockCopy(buffer, DataOffset, Payload, 0, Payload.Length);

                    IsValid = true;
                }
                catch
                {
                    SourcePort = 0;
                    DestinationPort = 0;
                    SequenceNumber = 0;
                    AcknowledgementNumber = 0;
                    DataOffset = 0;
                    Flags = TCPFlags.NONE;
                    Window = 0;
                    Checksum = 0;
                    UrgentPointer = 0;

                    Payload = null;

                    IsValid = false;
                }
            }
Esempio n. 5
0
            public TCPPacket(byte[] buffer)
            {
                try
                {
                    SourcePort = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 0));
                    DestinationPort = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 2));

                    ushort offsetAndFlags = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(buffer, 12));
                    DataOffset = (byte)((offsetAndFlags >> 12) * 4);
                    Flags = (TCPFlags)(offsetAndFlags & 511); // 0b111111111 = 511

                    Payload = buffer.Skip(DataOffset).ToArray();

                    IsValid = true;
                }
                catch (Exception ex)
                {
                    SourcePort = 0;
                    DestinationPort = 0;
                    DataOffset = 0;
                    Flags = TCPFlags.NONE;

                    Payload = null;

                    IsValid = false;

                    Log.Ex(ex, "TCP 패킷 파싱 에러");
                }
            }