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); }
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); }
public void IpV4FragmentationOptionsErrorTest() { IpV4Fragmentation fragmentation = new IpV4Fragmentation((IpV4FragmentationOptions)12345, 8); Assert.IsNotNull(fragmentation); Assert.Fail(); }
public void IpV4FragmentationOffsetErrorTest() { IpV4Fragmentation fragmentation = new IpV4Fragmentation(IpV4FragmentationOptions.None, 2); Assert.IsNotNull(fragmentation); Assert.Fail(); }
public void IpV4FragmentationOptionsErrorTest() { IpV4Fragmentation fragmentation = new IpV4Fragmentation((IpV4FragmentationOptions)12345, 8); Assert.IsNotNull(fragmentation); Assert.Fail(); }
public void IpV4FragmentationOffsetErrorTest() { IpV4Fragmentation fragmentation = new IpV4Fragmentation(IpV4FragmentationOptions.None, 2); Assert.IsNotNull(fragmentation); Assert.Fail(); }
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); }
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(); } }