コード例 #1
0
        public void FIN()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[]
                {
                    0x00, 0x50,
                    0xde, 0x4a,
                    0x36, 0x0f, 0xd2, 0x55,
                    0x48, 0xd6, 0xca, 0x71,
                    0x50, 0x11,
                    0x6f, 0x8c,
                    0x5a, 0x4c,
                    0x00, 0x00,
                    0x01, 0x23, 0x45, 0x67
                }
            };

            tcpSegment.SourcePort.Should().Be(80);
            tcpSegment.DestinationPort.Should().Be(56906);
            tcpSegment.SequenceNumber.Should().Be(907006549);
            tcpSegment.AcknowledgmentNumber.Should().Be(1222036081);
            tcpSegment.FlagACK.Should().Be(true);
            tcpSegment.FlagFIN.Should().Be(true);
            tcpSegment.HeaderLength.Should().Be(5);
            tcpSegment.WindowsSize.Should().Be(28556);
            tcpSegment.Checksum.Should().Be(0x5a4c);
            tcpSegment.UrgentPointer.Should().Be(0);
            tcpSegment.Payload.Bytes.ToArray().Should().Equal(0x01, 0x23, 0x45, 0x67);
        }
コード例 #2
0
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.SetByte(12, 0x66);

            tcpSegment.HeaderLength.Should().Be(6);
        }
コード例 #3
0
        public void Set()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.WindowsSize = 255;

            tcpSegment.WindowsSize.Should().Be(255);
        }
コード例 #4
0
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment[14, 2] = new Byte[] { 0x00, 0xFF };

            tcpSegment.WindowsSize.Should().Be(255);
        }
コード例 #5
0
        public void Set()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.Checksum = 3232;

            tcpSegment.Checksum.Should().Be(3232);
        }
コード例 #6
0
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.SetBytes(4, 4, new Byte[] { 0x01, 0x23, 0x45, 0x67 });

            tcpSegment.SequenceNumber.Should().Be(19088743);
        }
コード例 #7
0
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.SetBytes(16, 2, new Byte[] { 0x12, 0x34 });

            tcpSegment.Checksum.Should().Be(4660);
        }
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment[18, 2] = new Byte[] { 0x12, 0x34 };

            tcpSegment.UrgentPointer.Should().Be(4660);
        }
        public void Set()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.UrgentPointer = 3232;

            tcpSegment.UrgentPointer.Should().Be(3232);
        }
コード例 #10
0
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.SetByte(13, 0b_0000_0001);

            tcpSegment.FlagFIN.Should().Be(true);
        }
コード例 #11
0
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.SetBytes(0, 2, new Byte[] { 0x00, 0x50 });

            tcpSegment.SourcePort.Should().Be(80);
        }
コード例 #12
0
        public void Set()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.SourcePort = 80;

            tcpSegment.SourcePort.Should().Be(80);
        }
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment[2, 2] = new Byte[] { 0x00, 0x50 };

            tcpSegment.DestinationPort.Should().Be(80);
        }
        public void Get()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment[8, 4] = new Byte[] { 0x01, 0x23, 0x45, 0x67 };

            tcpSegment.AcknowledgmentNumber.Should().Be(19088743);
        }
        public void Set()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.AcknowledgmentNumber = 19088743;

            tcpSegment.AcknowledgmentNumber.Should().Be(19088743);
            tcpSegment[8, 4].ToArray().Should().Equal(0x01, 0x23, 0x45, 0x67);
        }
コード例 #16
0
        public void Set()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.SequenceNumber = 19088743;

            tcpSegment.SequenceNumber.Should().Be(19088743);
            tcpSegment.GetBytes(4, 4).ToArray().Should().Equal(0x01, 0x23, 0x45, 0x67);
        }
コード例 #17
0
        public void Set()
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.FlagFIN = true;
            tcpSegment.GetByte(13).Should().Be(0b_0000_0001);

            tcpSegment.FlagFIN = false;
            tcpSegment.GetByte(13).Should().Be(0b_0000_0000);
        }
コード例 #18
0
        public void Set(Byte input)
        {
            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[32]
            };

            tcpSegment.SetByte(12, 0x05);

            tcpSegment.HeaderLength = input;
            tcpSegment.HeaderLength.Should().Be(input);
            tcpSegment.GetByte(12).Should().Be((Byte)(input << 4 | (0x45 & 0x0F)));
        }
コード例 #19
0
        private static String BuildFlags(TCPSegment tcpSegment)
        {
            var flagList = new List <String>();

            if (tcpSegment.FlagNS)
            {
                flagList.Add("NS");
            }

            if (tcpSegment.FlagCWR)
            {
                flagList.Add("CWR");
            }

            if (tcpSegment.FlagECE)
            {
                flagList.Add("ECE");
            }

            if (tcpSegment.FlagURG)
            {
                flagList.Add("URG");
            }

            if (tcpSegment.FlagACK)
            {
                flagList.Add("ACK");
            }

            if (tcpSegment.FlagPSH)
            {
                flagList.Add("PSH");
            }

            if (tcpSegment.FlagRST)
            {
                flagList.Add("RST");
            }

            if (tcpSegment.FlagSYN)
            {
                flagList.Add("SYN");
            }

            if (tcpSegment.FlagFIN)
            {
                flagList.Add("FIN");
            }

            return(String.Join(",", flagList.ToArray()));
        }
コード例 #20
0
        public void Display_TCPSegment()
        {
            var(displayer, mock) = BuildTextDisplayer();

            var tcpSegment = new TCPSegment
            {
                Bytes = new Byte[]
                {
                    0x00, 0x50,
                    0xde, 0x4a,
                    0x36, 0x0f, 0xd2, 0x55,
                    0x48, 0xd6, 0xca, 0x71,
                    0x50, 0x11,
                    0x6f, 0x8c,
                    0x5a, 0x4c,
                    0x00, 0x00,
                    0x01, 0x23, 0x45, 0x67
                }
            };

            displayer.Display(tcpSegment);

            mock.Verify(_ => _.WriteLine("tcp      :                80 > 56906             win =28556  seq=907006549  ack=1222036081 flags=[ACK,FIN]"), Times.Once);
        }
コード例 #21
0
 public void Display(TCPSegment tcpSegment)
 {
     NewLine($"tcp      : {tcpSegment.SourcePort,17} > {tcpSegment.DestinationPort,-17} win ={tcpSegment.WindowsSize,-6} seq={tcpSegment.SequenceNumber,-10} ack={tcpSegment.AcknowledgmentNumber,-10} flags=[{BuildFlags(tcpSegment)}]");
 }