コード例 #1
0
        public void HandleSpecificModule_IsValidStructWIthArguments_ReturnsParsedValue()
        {
            // Arrange
            string userInput    = "None, 80";
            string stringNumber = "80";
            string enumOption   = "None";

            string[] arrayOfUserValues = { enumOption, stringNumber };
            ushort   number            = 80;

            IpV4FragmentationOptions ipV4FragmentationOptions = IpV4FragmentationOptions.MoreFragments;
            Type typeOfEnum = typeof(IpV4Fragmentation);
            IpV4Fragmentation ipV4Fragmentation = new IpV4Fragmentation(ipV4FragmentationOptions, number);

            object[] parameters = new object[2] {
                ipV4FragmentationOptions, number
            };

            _moduleStructHandlerMock.Setup(x => x.CheckIfStructMustHaveArgumentsAndReturnObject(typeOfEnum, userInput))
            .Returns(ipV4Fragmentation);

            // Act
            var result = _target.HandleSpecificModule(typeOfEnum, userInput);

            // Assert
            result.Should().BeOfType <IpV4Fragmentation>();
            result.GetType().GetProperty("Offset").GetValue(result).Should().Be(80);
            result.GetType().GetProperty("Options").GetValue(result).Should().Be(IpV4FragmentationOptions.MoreFragments);
        }
コード例 #2
0
        public void CheckIfStructMustHaveArgumentsAndReturnObject_IsValidStructWithManyArguments_ReturnsObject()
        {
            // Arrange
            ushort offset = 80;
            IpV4FragmentationOptions options           = IpV4FragmentationOptions.MoreFragments;
            IpV4Fragmentation        ipV4Fragmentation = new IpV4Fragmentation(options, offset);
            string input = $"{options}, {offset}";

            object[] array = new object[2] {
                options, offset
            };

            _genericInstanceCreator.Setup(x => x.TryCreateNewInstance <IpV4Fragmentation?>(array))
            .Returns(ipV4Fragmentation);
            _moduleStructArgumentsHandler.Setup(x => x.InputToParametersForIpV4Fragmentation(input))
            .Returns(array);

            // Act
            var result = _target.CheckIfStructMustHaveArgumentsAndReturnObject(typeof(IpV4Fragmentation), input);

            // Assert
            result.Should().BeOfType <IpV4Fragmentation>();
            var pp = result.GetType().GetProperty("Offset").GetValue(result).Should().Be(offset);

            result.GetType().GetProperty("Options").GetValue(result).Should().Be(options);
        }
コード例 #3
0
ファイル: IpV4Tests.cs プロジェクト: zwxu999/Pcap.Net
        public void IpV4FragmentationOptionsErrorTest()
        {
            IpV4Fragmentation fragmentation = new IpV4Fragmentation((IpV4FragmentationOptions)12345, 8);

            Assert.IsNotNull(fragmentation);
            Assert.Fail();
        }
コード例 #4
0
ファイル: IpV4Tests.cs プロジェクト: zwxu999/Pcap.Net
        public void IpV4FragmentationOffsetErrorTest()
        {
            IpV4Fragmentation fragmentation = new IpV4Fragmentation(IpV4FragmentationOptions.None, 2);

            Assert.IsNotNull(fragmentation);
            Assert.Fail();
        }
コード例 #5
0
ファイル: IpV4Tests.cs プロジェクト: njannink/sonarlint-vs
 public void IpV4FragmentationOptionsErrorTest()
 {
     IpV4Fragmentation fragmentation = new IpV4Fragmentation((IpV4FragmentationOptions)12345, 8);
     Assert.IsNotNull(fragmentation);
     Assert.Fail();
 }
コード例 #6
0
ファイル: IpV4Tests.cs プロジェクト: njannink/sonarlint-vs
 public void IpV4FragmentationOffsetErrorTest()
 {
     IpV4Fragmentation fragmentation = new IpV4Fragmentation(IpV4FragmentationOptions.None, 2);
     Assert.IsNotNull(fragmentation);
     Assert.Fail();
 }
コード例 #7
0
ファイル: IpV4Datagram.cs プロジェクト: amitla/Pcap.Net
        internal static void WriteHeader(byte[] buffer, int offset,
                                         byte typeOfService, ushort identification,
                                         IpV4Fragmentation fragmentation,
                                         byte ttl, IpV4Protocol protocol, ushort? headerChecksum,
                                         IpV4Address source, IpV4Address destination,
                                         IpV4Options options, int payloadLength)
        {
            int headerLength = HeaderMinimumLength + options.BytesLength;

            buffer[offset + Offset.VersionAndHeaderLength] = (byte)((DefaultVersion << 4) + headerLength / 4);
            buffer[offset + Offset.TypeOfService] = typeOfService;
            buffer.Write(offset + Offset.TotalLength, (ushort)(headerLength + payloadLength), Endianity.Big);
            buffer.Write(offset + Offset.Identification, identification, Endianity.Big);
            fragmentation.Write(buffer, offset + Offset.Fragmentation);
            buffer[offset + Offset.Ttl] = ttl;
            buffer[offset + Offset.Protocol] = (byte)protocol;

            buffer.Write(offset + Offset.Source, source, Endianity.Big);
            buffer.Write(offset + Offset.Destination, destination, Endianity.Big);
            options.Write(buffer, offset + Offset.Options);

            ushort headerChecksumValue =
                headerChecksum == null
                    ? Sum16BitsToChecksum(Sum16Bits(buffer, offset, headerLength))
                    : headerChecksum.Value;
            buffer.Write(offset + Offset.HeaderChecksum, headerChecksumValue, Endianity.Big);
        }
コード例 #8
0
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                int    indice  = listView1.Items.IndexOf(listView1.SelectedItems[0]);
                Packet paquete = paquetes[indice];

                EthernetDatagram eth = paquete.Ethernet;
                IpV4Datagram     ip  = paquete.Ethernet.IpV4;
                TcpDatagram      tcp = ip.Tcp;
                UdpDatagram      udp = ip.Udp;

                long checksum = Convert.ToInt64(ip.HeaderChecksum);

                string            df = "", mf = "";
                IpV4Fragmentation flags = ip.Fragmentation;
                if (flags.Options.ToString().Equals("MoreFragments"))
                {
                    df = "True";
                    mf = "True";
                }
                if (flags.Options.ToString().Equals("None"))
                {
                    df = "True";
                    mf = "False";
                }
                if (flags.Options.ToString().Equals("DoNotFragment"))
                {
                    df = "False";
                    mf = "False";
                }

                treeView1.Nodes.Clear();

                TreeNode node1 = new TreeNode("ETHERNET");
                node1.ForeColor = Color.Blue;
                node1.Nodes.Add("MAC de Origen: " + eth.Source.ToString().ToUpper());
                node1.Nodes.Add("MAC de Destino: " + eth.Destination.ToString().ToUpper());
                node1.Nodes.Add("Tipo de servicio: " + eth.EtherType.ToString().ToUpper());

                TreeNode node2 = new TreeNode("IP");
                node2.ForeColor = Color.Green;
                node2.Nodes.Add("Version: " + ip.Version.ToString());
                node2.Nodes.Add("Longitud de la cabecera: " + ip.HeaderLength.ToString() + " Bytes");
                node2.Nodes.Add("Tipo de servicio: " + ip.TypeOfService.ToString());
                node2.Nodes.Add("Longitud del paquete: " + ip.Length.ToString() + " Bytes");
                node2.Nodes.Add("Identificacion: " + Convert.ToString(Convert.ToInt64(ip.Identification), 16));
                node2.Nodes.Add("Fragmentado: " + df);
                node2.Nodes.Add("Mas fragmentos: " + mf);
                node2.Nodes.Add("Desplazamiento del fragmento: " + flags.Offset.ToString());
                node2.Nodes.Add("Tiempo de vida: " + ip.Ttl.ToString() + " Segundos");
                node2.Nodes.Add("Protocolo: " + ip.Protocol.ToString());
                node2.Nodes.Add("Checksum 0x" + Convert.ToString(Convert.ToInt64(checksum), 16) + "  [ " + ip.IsHeaderChecksumCorrect.ToString() + " ] ");
                node2.Nodes.Add("Ip origen: " + ip.Source.ToString());
                node2.Nodes.Add("Ip destino: " + ip.Destination.ToString());

                node1.Nodes.Add(node2);

                if (ip.Protocol.ToString().Equals("Tcp"))
                {
                    long checksumtcp = Convert.ToInt64(tcp.Checksum);
                    int  flag;

                    TreeNode node3 = new TreeNode("TCP");
                    node3.ForeColor = Color.Red;
                    node3.Nodes.Add("Puerto de Origen: " + tcp.SourcePort.ToString());
                    node3.Nodes.Add("Puerto de Destino: " + tcp.DestinationPort.ToString());
                    node3.Nodes.Add("Numero de secuencia: " + tcp.SequenceNumber.ToString());
                    node3.Nodes.Add("Siguiente numero de secuencia: " + tcp.NextSequenceNumber.ToString());
                    node3.Nodes.Add("Numero de confirmacion: " + tcp.AcknowledgmentNumber.ToString());
                    node3.Nodes.Add("Longitud de la cabecera: " + tcp.HeaderLength.ToString() + " Bytes");
                    node3.Nodes.Add("0000 00.. ....  : Reservado");
                    flag = tcp.IsUrgent ? 1 : 0;
                    node3.Nodes.Add(".... .." + flag.ToString() + ". ....  : URG =" + tcp.IsUrgent.ToString());
                    flag = tcp.IsAcknowledgment ? 1 : 0;
                    node3.Nodes.Add(".... ..." + flag.ToString() + " ....  : ACK =" + tcp.IsAcknowledgment.ToString());
                    flag = tcp.IsPush ? 1 : 0;
                    node3.Nodes.Add(".... .... " + flag.ToString() + "...  : PSH =" + tcp.IsPush.ToString());
                    flag = tcp.IsReset ? 1 : 0;
                    node3.Nodes.Add(".... .... ." + flag.ToString() + "..  : RST =" + tcp.IsReset.ToString());
                    flag = tcp.IsSynchronize ? 1 : 0;
                    node3.Nodes.Add(".... .... .." + flag.ToString() + ".  : SYN =" + tcp.IsSynchronize.ToString());
                    flag = tcp.IsFin ? 1 : 0;
                    node3.Nodes.Add(".... .... ..." + flag.ToString() + "  : FIN =" + tcp.IsFin.ToString());
                    node3.Nodes.Add("Tamaño de ventana: " + tcp.Window.ToString() + " Bytes");
                    node3.Nodes.Add("Checksum 0x" + Convert.ToString(Convert.ToInt64(checksumtcp), 16));
                    node3.Nodes.Add("Puntero urgente: " + tcp.UrgentPointer.ToString());

                    node2.Nodes.Add(node3);
                }

                if ((ip.Protocol.ToString().Equals("Udp")))
                {
                    long checksumudp = Convert.ToInt64(udp.Checksum);

                    TreeNode node3 = new TreeNode("UDP");
                    node3.ForeColor = Color.Red;
                    node3.Nodes.Add("Puerto de Origen: " + udp.SourcePort.ToString());
                    node3.Nodes.Add("Puerto de Destino: " + udp.DestinationPort.ToString());
                    node3.Nodes.Add("Longitud de la cabecera: " + udp.TotalLength.ToString() + " Bytes");
                    node3.Nodes.Add("Checksum 0x" + Convert.ToString(Convert.ToInt64(checksumudp), 16));

                    node2.Nodes.Add(node3);
                }

                treeView1.Nodes.Add(node1);
                treeView1.ExpandAll();
            }
        }