Example #1
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public AuthenticationFrame(ByteArraySegment bas)
            {
                header = new ByteArraySegment(bas);

                FrameControl       = new FrameControlField(FrameControlBytes);
                Duration           = new DurationField(DurationBytes);
                DestinationAddress = GetAddress(0);
                SourceAddress      = GetAddress(1);
                BssId           = GetAddress(2);
                SequenceControl = new SequenceControlField(SequenceControlBytes);
                AuthenticationAlgorithmNumber = AuthenticationAlgorithmNumberBytes;
                AuthenticationAlgorithmTransactionSequenceNumber = AuthenticationAlgorithmTransactionSequenceNumberBytes;

                if (bas.Length > AuthenticationFields.InformationElement1Position)
                {
                    //create a segment that just refers to the info element section
                    ByteArraySegment infoElementsSegment = new ByteArraySegment(bas.Bytes,
                                                                                (bas.Offset + AuthenticationFields.InformationElement1Position),
                                                                                (bas.Length - AuthenticationFields.InformationElement1Position));

                    InformationElements = new InformationElementList(infoElementsSegment);
                }
                else
                {
                    InformationElements = new InformationElementList();
                }


                //cant set length until after we have handled the information elements
                //as they vary in length
                header.Length = FrameSize;
            }
Example #2
0
        private void MarshalRawPacket(IntPtr /* pcap_pkthdr* */ header, IntPtr data)
        {
            //RawCapture p;

            // marshal the header
            PcapHeader pcapHeader = PcapHeader.FromPointer(header);

            var PacketData = new byte[pcapHeader.CaptureLength];

            Marshal.Copy(data, PacketData, 0, (int)pcapHeader.CaptureLength);

            LinkLayers linkType = (LinkLayers)pcap_datalink(PcapHandle);

            //we're only interested in the WiFi Traffic
            if (linkType == LinkLayers.Ieee80211 && PacketData.Length > 2)
            {
                ushort            FrameFieldValue = (ushort)(PacketData[0] << 8 | PacketData[1]);
                FrameControlField field           = new FrameControlField(FrameFieldValue);

                switch (field.SubType)
                {
                case FrameSubTypes.ManagementBeacon:
                {
                    break;
                }
                }
            }

            //p = new RawCapture(LinkType, new PosixTimeval(pcapHeader.Seconds, pcapHeader.MicroSeconds), pkt_data);
        }
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public ProbeRequestFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                DestinationAddress = GetAddress (0);
                SourceAddress = GetAddress (1);
                BssId = GetAddress (2);
                SequenceControl = new SequenceControlField (SequenceControlBytes);
				
				if(bas.Length > ProbeRequestFields.InformationElement1Position)
				{
                	//create a segment that just refers to the info element section
                	ByteArraySegment infoElementsSegment = new ByteArraySegment (bas.Bytes,
                    	(bas.Offset + ProbeRequestFields.InformationElement1Position),
                    	(bas.Length - ProbeRequestFields.InformationElement1Position));

                	InformationElements = new InformationElementList (infoElementsSegment);
				}
				else
				{
					InformationElements = new InformationElementList ();
				}
                //cant set length until after we have handled the information elements
                //as they vary in length
                header.Length = FrameSize;
            }
Example #4
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public ProbeResponseFrame(ByteArraySegment bas)
            {
                header = new ByteArraySegment(bas);

                FrameControl       = new FrameControlField(FrameControlBytes);
                Duration           = new DurationField(DurationBytes);
                DestinationAddress = GetAddress(0);
                SourceAddress      = GetAddress(1);
                BssId                 = GetAddress(2);
                SequenceControl       = new SequenceControlField(SequenceControlBytes);
                Timestamp             = TimestampBytes;
                BeaconInterval        = BeaconIntervalBytes;
                CapabilityInformation = new CapabilityInformationField(CapabilityInformationBytes);

                if (bas.Length > ProbeResponseFields.InformationElement1Position)
                {
                    //create a segment that just refers to the info element section
                    ByteArraySegment infoElementsSegment = new ByteArraySegment(bas.Bytes,
                                                                                (bas.Offset + ProbeResponseFields.InformationElement1Position),
                                                                                (bas.Length - ProbeResponseFields.InformationElement1Position));

                    InformationElements = new InformationElementList(infoElementsSegment);
                }
                else
                {
                    InformationElements = new InformationElementList();
                }
                //cant set length until after we have handled the information elements
                //as they vary in length
                header.Length = FrameSize;
            }
Example #5
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public ReassociationRequestFrame(ByteArraySegment bas)
            {
                header = new ByteArraySegment(bas);

                FrameControl       = new FrameControlField(FrameControlBytes);
                Duration           = new DurationField(DurationBytes);
                DestinationAddress = GetAddress(0);
                SourceAddress      = GetAddress(1);
                BssId           = GetAddress(2);
                SequenceControl = new SequenceControlField(SequenceControlBytes);

                CapabilityInformation     = new CapabilityInformationField(CapabilityInformationBytes);
                ListenInterval            = ListenIntervalBytes;
                CurrentAccessPointAddress = CurrentAccessPointAddressBytes;

                if (bas.Length > ReassociationRequestFields.InformationElement1Position)
                {
                    //create a segment that just refers to the info element section
                    ByteArraySegment infoElementsSegment = new ByteArraySegment(bas.Bytes,
                                                                                (bas.Offset + ReassociationRequestFields.InformationElement1Position),
                                                                                (bas.Length - ReassociationRequestFields.InformationElement1Position));

                    InformationElements = new InformationElementList(infoElementsSegment);
                }
                else
                {
                    InformationElements = new InformationElementList();
                }
                //cant set length until after we have handled the information elements
                //as they vary in length
                header.Length = FrameSize;
            }
Example #6
0
        public void Test_SetToDsProperty()
        {
            var frameControl = new FrameControlField {
                ToDS = true
            };

            Assert.IsTrue(frameControl.ToDS);
        }
Example #7
0
        public void Test_SetRetryProperty()
        {
            var frameControl = new FrameControlField {
                Retry = true
            };

            Assert.IsTrue(frameControl.Retry);
        }
Example #8
0
        public void Test_SetOrderProperty()
        {
            var frameControl = new FrameControlField {
                Order = true
            };

            Assert.IsTrue(frameControl.Order);
        }
Example #9
0
        public void Test_SetMoreFragmentsProperty()
        {
            var frameControl = new FrameControlField {
                MoreFragments = true
            };

            Assert.IsTrue(frameControl.MoreFragments);
        }
Example #10
0
        public void Test_SetMoreDataProperty()
        {
            var frameControl = new FrameControlField {
                MoreData = true
            };

            Assert.IsTrue(frameControl.MoreData);
        }
Example #11
0
        public void Test_SetWepProperty()
        {
            var frameControl = new FrameControlField {
                Protected = true
            };

            Assert.IsTrue(frameControl.Protected);
        }
Example #12
0
            public void Test_SetFromDsProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.FromDS = true;

                Assert.IsTrue(frameControl.FromDS);
            }
Example #13
0
            public void Test_SetMoreFragmentsProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.MoreFragments = true;

                Assert.IsTrue(frameControl.MoreFragments);
            }
Example #14
0
            public void Test_SetRetryProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.Retry = true;

                Assert.IsTrue(frameControl.Retry);
            }
Example #15
0
            public void Test_SetMoreDataProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.MoreData = true;

                Assert.IsTrue(frameControl.MoreData);
            }
Example #16
0
            public void Test_SetPowerManagementProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.PowerManagement = true;

                Assert.IsTrue(frameControl.PowerManagement);
            }
Example #17
0
            public void Test_SetWepProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.Wep = true;

                Assert.IsTrue(frameControl.Wep);
            }
Example #18
0
            public void Test_SetOrderProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.Order = true;

                Assert.IsTrue(frameControl.Order);
            }
Example #19
0
        public void Test_SetProtocolVersionProperty_ValueTooLarge()
        {
            var ex = Assert.Throws <ArgumentException>(
                () => { var _ = new FrameControlField {
                            ProtocolVersion = 4
                        }; }
                );

            Assert.That(ex.Message, Is.EqualTo("Invalid protocol version value. Value must be in the range 0-3."));
        }
Example #20
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public CtsFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                ReceiverAddress = GetAddress(0);
				
				header.Length = FrameSize;
            }
Example #21
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public CtsFrame(ByteArraySegment bas)
            {
                header = new ByteArraySegment(bas);

                FrameControl    = new FrameControlField(FrameControlBytes);
                Duration        = new DurationField(DurationBytes);
                ReceiverAddress = GetAddress(0);

                header.Length = FrameSize;
            }
Example #22
0
            /// <summary>
            /// Initializes a new instance of the <see cref="PacketDotNet.Ieee80211.NullDataFrame"/> class.
            /// </summary>
            /// <param name='bas'>
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public NullDataFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                SequenceControl = new SequenceControlField (SequenceControlBytes);
                ReadAddresses ();
                
                header.Length = FrameSize;
            }
Example #23
0
            /// <summary>
            /// Initializes a new instance of the <see cref="Kavprot.Packets.Ieee80211.NullDataFrame"/> class.
            /// </summary>
            /// <param name='bas'>
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public NullDataFrame(ByteArraySegment bas)
            {
                header = new ByteArraySegment(bas);

                FrameControl    = new FrameControlField(FrameControlBytes);
                Duration        = new DurationField(DurationBytes);
                SequenceControl = new SequenceControlField(SequenceControlBytes);
                ReadAddresses();

                header.Length = FrameSize;
            }
Example #24
0
            public void Test_SetTypeProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.SubType = FrameControlField.FrameSubTypes.Data;
                Assert.AreEqual(FrameControlField.FrameSubTypes.Data, frameControl.SubType);

                frameControl.SubType = FrameControlField.FrameSubTypes.ManagementAuthentication;
                Assert.AreEqual(FrameControlField.FrameSubTypes.ManagementAuthentication, frameControl.SubType);

                frameControl.SubType = FrameControlField.FrameSubTypes.ControlACK;
                Assert.AreEqual(FrameControlField.FrameSubTypes.ControlACK, frameControl.SubType);
            }
Example #25
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public BlockAcknowledgmentRequestFrame(ByteArraySegment bas)
            {
                header = new ByteArraySegment(bas);

                FrameControl                    = new FrameControlField(FrameControlBytes);
                Duration                        = new DurationField(DurationBytes);
                ReceiverAddress                 = GetAddress(0);
                TransmitterAddress              = GetAddress(1);
                BlockAcknowledgmentControl      = new BlockAcknowledgmentControlField(BlockAckRequestControlBytes);
                BlockAckStartingSequenceControl = BlockAckStartingSequenceControlBytes;

                header.Length = FrameSize;
            }
Example #26
0
        public void Test_SetTypeProperty()
        {
            var frameControl = new FrameControlField {
                SubType = FrameControlField.FrameSubTypes.Data
            };

            Assert.AreEqual(FrameControlField.FrameSubTypes.Data, frameControl.SubType);

            frameControl.SubType = FrameControlField.FrameSubTypes.ManagementAuthentication;
            Assert.AreEqual(FrameControlField.FrameSubTypes.ManagementAuthentication, frameControl.SubType);

            frameControl.SubType = FrameControlField.FrameSubTypes.ControlAck;
            Assert.AreEqual(FrameControlField.FrameSubTypes.ControlAck, frameControl.SubType);
        }
Example #27
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public DisassociationFrame(ByteArraySegment bas)
            {
                header = new ByteArraySegment(bas);

                FrameControl       = new FrameControlField(FrameControlBytes);
                Duration           = new DurationField(DurationBytes);
                DestinationAddress = GetAddress(0);
                SourceAddress      = GetAddress(1);
                BssId           = GetAddress(2);
                SequenceControl = new SequenceControlField(SequenceControlBytes);
                Reason          = ReasonBytes;

                header.Length = FrameSize;
            }
Example #28
0
            /// <summary>
            /// Initializes a new instance of the <see cref="PacketDotNet.Ieee80211.DataDataFrame"/> class.
            /// </summary>
            /// <param name='bas'>
            /// Bas.
            /// </param>
            public DataDataFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                SequenceControl = new SequenceControlField (SequenceControlBytes);
                ReadAddresses (); //must do this after reading FrameControl

                header.Length = FrameSize; 
                var availablePayloadLength = GetAvailablePayloadLength();
				if(availablePayloadLength > 0)
				{
					payloadPacketOrData.TheByteArraySegment = header.EncapsulatedBytes (availablePayloadLength);
				}
            }
Example #29
0
            public void Test_SetProtocolVersionProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.ProtocolVersion = 3;
                Assert.AreEqual(3, frameControl.ProtocolVersion);

                frameControl.ProtocolVersion = 2;
                Assert.AreEqual(2, frameControl.ProtocolVersion);

                frameControl.ProtocolVersion = 1;
                Assert.AreEqual(1, frameControl.ProtocolVersion);

                frameControl.ProtocolVersion = 0;
                Assert.AreEqual(0, frameControl.ProtocolVersion);
            }
Example #30
0
            public void Test_Constructor_AckFrame()
            {
                FrameControlField frameControl = new FrameControlField(0xD410);

                Assert.AreEqual(0x0, frameControl.ProtocolVersion);
                Assert.AreEqual(FrameControlField.FrameTypes.Control, frameControl.Type);
                Assert.AreEqual(FrameControlField.FrameSubTypes.ControlACK, frameControl.SubType);
                Assert.IsFalse(frameControl.FromDS);
                Assert.IsFalse(frameControl.Wep);
                Assert.IsFalse(frameControl.ToDS);
                Assert.IsFalse(frameControl.MoreFragments);
                Assert.IsFalse(frameControl.Retry);
                Assert.IsTrue(frameControl.PowerManagement);
                Assert.IsFalse(frameControl.MoreData);
                Assert.IsFalse(frameControl.Order);
            }
Example #31
0
            public void Test_Constructor_ClearToSendFrame()
            {
                FrameControlField frameControl = new FrameControlField(0xC400);

                Assert.AreEqual(0x0, frameControl.ProtocolVersion);
                Assert.AreEqual(FrameControlField.FrameTypes.Control, frameControl.Type);
                Assert.AreEqual(FrameControlField.FrameSubTypes.ControlCTS, frameControl.SubType);
                Assert.IsFalse(frameControl.FromDS);
                Assert.IsFalse(frameControl.Protected);
                Assert.IsFalse(frameControl.ToDS);
                Assert.IsFalse(frameControl.MoreFragments);
                Assert.IsFalse(frameControl.Retry);
                Assert.IsFalse(frameControl.PowerManagement);
                Assert.IsFalse(frameControl.MoreData);
                Assert.IsFalse(frameControl.Order);
            }
            public void Test_Constructor_ClearToSendFrame()
            {
                FrameControlField frameControl = new FrameControlField(0xC400);

                Assert.AreEqual(0x0, frameControl.ProtocolVersion);
                Assert.AreEqual(FrameControlField.FrameTypes.Control, frameControl.Type);
                Assert.AreEqual(FrameControlField.FrameSubTypes.ControlCTS, frameControl.SubType);
                Assert.IsFalse(frameControl.FromDS);
                Assert.IsFalse(frameControl.Wep);
                Assert.IsFalse(frameControl.ToDS);
                Assert.IsFalse(frameControl.MoreFragments);
                Assert.IsFalse(frameControl.Retry);
                Assert.IsFalse(frameControl.PowerManagement);
                Assert.IsFalse(frameControl.MoreData);
                Assert.IsFalse(frameControl.Order);
            }
Example #33
0
            public void Test_Constructor_DisassociationFrame()
            {
                FrameControlField frameControl = new FrameControlField(0xA01B);

                Assert.AreEqual(0x0, frameControl.ProtocolVersion);
                Assert.AreEqual(FrameControlField.FrameTypes.Management, frameControl.Type);
                Assert.AreEqual(FrameControlField.FrameSubTypes.ManagementDisassociation, frameControl.SubType);
                Assert.IsTrue(frameControl.FromDS);
                Assert.IsTrue(frameControl.ToDS);
                Assert.IsFalse(frameControl.MoreFragments);
                Assert.IsFalse(frameControl.MoreData);
                Assert.IsFalse(frameControl.Protected);
                Assert.IsTrue(frameControl.Retry);
                Assert.IsTrue(frameControl.PowerManagement);
                Assert.IsFalse(frameControl.Order);
            }
Example #34
0
            public void Test_Constructor_EncryptedDataFrame()
            {
                FrameControlField frameControl = new FrameControlField(0x0842);

                Assert.AreEqual(0x0, frameControl.ProtocolVersion);
                Assert.AreEqual(FrameControlField.FrameTypes.Data, frameControl.Type);
                Assert.AreEqual(FrameControlField.FrameSubTypes.Data, frameControl.SubType);
                Assert.IsTrue(frameControl.FromDS);
                Assert.IsTrue(frameControl.Protected);

                Assert.IsFalse(frameControl.ToDS);
                Assert.IsFalse(frameControl.MoreFragments);
                Assert.IsFalse(frameControl.Retry);
                Assert.IsFalse(frameControl.PowerManagement);
                Assert.IsFalse(frameControl.MoreData);
                Assert.IsFalse(frameControl.Order);
            }
            public void Test_Constructor_EncryptedDataFrame()
            {
                FrameControlField frameControl = new FrameControlField(0x0842);

                Assert.AreEqual(0x0, frameControl.ProtocolVersion);
                Assert.AreEqual(FrameControlField.FrameTypes.Data, frameControl.Type);
                Assert.AreEqual(FrameControlField.FrameSubTypes.Data, frameControl.SubType);
                Assert.IsTrue(frameControl.FromDS);
                Assert.IsTrue(frameControl.Wep);

                Assert.IsFalse(frameControl.ToDS);
                Assert.IsFalse(frameControl.MoreFragments);
                Assert.IsFalse(frameControl.Retry);
                Assert.IsFalse(frameControl.PowerManagement);
                Assert.IsFalse(frameControl.MoreData);
                Assert.IsFalse(frameControl.Order);
            }
Example #36
0
            /// <summary>
            /// Initializes a new instance of the <see cref="Kavprot.Packets.Ieee80211.DataDataFrame"/> class.
            /// </summary>
            /// <param name='bas'>
            /// Bas.
            /// </param>
            public DataDataFrame(ByteArraySegment bas)
            {
                header = new ByteArraySegment(bas);

                FrameControl    = new FrameControlField(FrameControlBytes);
                Duration        = new DurationField(DurationBytes);
                SequenceControl = new SequenceControlField(SequenceControlBytes);
                ReadAddresses();  //must do this after reading FrameControl

                header.Length = FrameSize;
                var availablePayloadLength = GetAvailablePayloadLength();

                if (availablePayloadLength > 0)
                {
                    payloadPacketOrData.TheByteArraySegment = header.EncapsulatedBytes(availablePayloadLength);
                }
            }
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public AssociationResponseFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                DestinationAddress = GetAddress (0);
                SourceAddress = GetAddress (1);
                BssId = GetAddress (2);
                SequenceControl = new SequenceControlField (SequenceControlBytes);

                CapabilityInformation = new CapabilityInformationField (CapabilityInformationBytes);
                StatusCode = StatusCodeBytes;
                AssociationId = AssociationIdBytes;
                
				if(bas.Length > AssociationResponseFields.InformationElement1Position)
				{
                	//create a segment that just refers to the info element section
                	ByteArraySegment infoElementsSegment = new ByteArraySegment (bas.Bytes,
                    	(bas.Offset + AssociationResponseFields.InformationElement1Position),
                    	(bas.Length - AssociationResponseFields.InformationElement1Position));

                	InformationElements = new InformationElementList (infoElementsSegment);
				}
				else
				{
					InformationElements = new InformationElementList();
				}
                //cant set length until after we have handled the information elements
                //as they vary in length
                header.Length = FrameSize;
            }
            public void Test_SetOrderProperty()
            {
                FrameControlField frameControl = new FrameControlField();
                frameControl.Order = true;

                Assert.IsTrue(frameControl.Order);
            }
            public void Test_SetWepProperty()
            {
                FrameControlField frameControl = new FrameControlField();
                frameControl.Wep = true;

                Assert.IsTrue(frameControl.Wep);
            }
            public void Test_SetMoreDataProperty()
            {
                FrameControlField frameControl = new FrameControlField();
                frameControl.MoreData = true;

                Assert.IsTrue(frameControl.MoreData);
            }
            public void Test_SetPowerManagementProperty()
            {
                FrameControlField frameControl = new FrameControlField();
                frameControl.PowerManagement = true;

                Assert.IsTrue(frameControl.PowerManagement);
            }
            public void Test_SetRetryProperty()
            {
                FrameControlField frameControl = new FrameControlField();
                frameControl.Retry = true;

                Assert.IsTrue(frameControl.Retry);
            }
Example #43
0
            /// <summary>
            /// Initializes a new instance of the <see cref="PacketDotNet.Ieee80211.QosDataFrame"/> class.
            /// </summary>
            /// <param name='bas'>
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public QosDataFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                SequenceControl = new SequenceControlField (SequenceControlBytes);
                QosControl = QosControlBytes;
                ReadAddresses ();

                header.Length = FrameSize;
                var availablePayloadLength = GetAvailablePayloadLength();
                if (availablePayloadLength > SNAPFields.HeaderLength)
                {
                    payloadPacketOrData.ThePacket = new SNAPPacket(header.EncapsulatedBytes(availablePayloadLength));
                }
                else
                {
                    payloadPacketOrData.TheByteArraySegment = header.EncapsulatedBytes(availablePayloadLength);
                }
            }
            public void Test_Constructor_DisassociationFrame()
            {
                FrameControlField frameControl = new FrameControlField(0xA01B);

                Assert.AreEqual(0x0, frameControl.ProtocolVersion);
                Assert.AreEqual(FrameControlField.FrameTypes.Management, frameControl.Type);
                Assert.AreEqual(FrameControlField.FrameSubTypes.ManagementDisassociation, frameControl.SubType);
                Assert.IsTrue(frameControl.FromDS);
                Assert.IsTrue(frameControl.ToDS);
                Assert.IsFalse(frameControl.MoreFragments);
                Assert.IsFalse(frameControl.MoreData);
                Assert.IsFalse(frameControl.Wep);
                Assert.IsTrue(frameControl.Retry);
                Assert.IsTrue(frameControl.PowerManagement);
                Assert.IsFalse(frameControl.Order);
            }
            public void Test_SetProtocolVersionProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.ProtocolVersion = 3;
                Assert.AreEqual(3, frameControl.ProtocolVersion);

                frameControl.ProtocolVersion = 2;
                Assert.AreEqual(2, frameControl.ProtocolVersion);

                frameControl.ProtocolVersion = 1;
                Assert.AreEqual(1, frameControl.ProtocolVersion);

                frameControl.ProtocolVersion = 0;
                Assert.AreEqual(0, frameControl.ProtocolVersion);
            }
            public void Test_SetTypeProperty()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.SubType = FrameControlField.FrameSubTypes.Data;
                Assert.AreEqual(FrameControlField.FrameSubTypes.Data, frameControl.SubType);

                frameControl.SubType = FrameControlField.FrameSubTypes.ManagementAuthentication;
                Assert.AreEqual(FrameControlField.FrameSubTypes.ManagementAuthentication, frameControl.SubType);

                frameControl.SubType = FrameControlField.FrameSubTypes.ControlACK;
                Assert.AreEqual(FrameControlField.FrameSubTypes.ControlACK, frameControl.SubType);
            }
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public BlockAcknowledgmentRequestFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                ReceiverAddress = GetAddress (0);
                TransmitterAddress = GetAddress (1);
                BlockAcknowledgmentControl = new BlockAcknowledgmentControlField (BlockAckRequestControlBytes);
                BlockAckStartingSequenceControl = BlockAckStartingSequenceControlBytes;
                
                header.Length = FrameSize;
            }
            public void Test_SetMoreFragmentsProperty()
            {
                FrameControlField frameControl = new FrameControlField();
                frameControl.MoreFragments = true;

                Assert.IsTrue(frameControl.MoreFragments);
            }
            public void Test_SetProtocolVersionProperty_ValueTooLarge()
            {
                FrameControlField frameControl = new FrameControlField();

                frameControl.ProtocolVersion = 4;
            }
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public DeauthenticationFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                DestinationAddress = GetAddress (0);
                SourceAddress = GetAddress (1);
                BssId = GetAddress (2);
                SequenceControl = new SequenceControlField (SequenceControlBytes);
                Reason = ReasonBytes;

                header.Length = FrameSize;
            }
Example #51
0
            /// <summary>
            /// Constructor
            /// </summary>
            /// <param name="bas">
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public ActionFrame (ByteArraySegment bas)
            {
                header = new ByteArraySegment (bas);

                FrameControl = new FrameControlField (FrameControlBytes);
                Duration = new DurationField (DurationBytes);
                DestinationAddress = GetAddress (0);
                SourceAddress = GetAddress (1);
                BssId = GetAddress (2);
                SequenceControl = new SequenceControlField (SequenceControlBytes);

                header.Length = FrameSize; 
                var availablePayloadLength = GetAvailablePayloadLength();
				if(availablePayloadLength > 0)
				{
					payloadPacketOrData.TheByteArraySegment = header.EncapsulatedBytes (availablePayloadLength);
				}
            }
            public void Test_SetFromDsProperty()
            {
                FrameControlField frameControl = new FrameControlField();
                frameControl.FromDS = true;

                Assert.IsTrue(frameControl.FromDS);
            }