示例#1
0
 public void Test_PpiCommon_Construction()
 {
     PpiCommon field = new PpiCommon();
     field.TSFTimer = 0x1234567812345678;
     field.Flags = PpiCommon.CommonFlags.FcsIncludedInFrame | PpiCommon.CommonFlags.TimerSynchFunctionInUse;
     field.Rate = 2;
     field.ChannelFrequency = 2142;
     field.ChannelFlags = RadioTapChannelFlags.Channel2Ghz | RadioTapChannelFlags.Passive;
     field.FhssHopset = 0xAB;
     field.FhssPattern = 0xCD;
     field.AntennaSignalPower = -50;
     field.AntennaSignalNoise = 25;
     
     var ms = new MemoryStream(field.Bytes);
     PpiCommon recreatedField = new PpiCommon(new BinaryReader(ms));
     
     Assert.AreEqual(0x1234567812345678, recreatedField.TSFTimer);
     Assert.AreEqual(PpiCommon.CommonFlags.FcsIncludedInFrame | PpiCommon.CommonFlags.TimerSynchFunctionInUse, recreatedField.Flags);
     Assert.AreEqual(2, recreatedField.Rate);
     Assert.AreEqual(2142, recreatedField.ChannelFrequency);
     Assert.AreEqual(RadioTapChannelFlags.Channel2Ghz | RadioTapChannelFlags.Passive, recreatedField.ChannelFlags);
     Assert.AreEqual(0xAB, recreatedField.FhssHopset);
     Assert.AreEqual(0xCD, recreatedField.FhssPattern);
     Assert.AreEqual(-50, recreatedField.AntennaSignalPower);
     Assert.AreEqual(25, recreatedField.AntennaSignalNoise);
 }
示例#2
0
            public void ReadingPacketsFromFile()
            {
                var dev = new CaptureFileReaderDevice("../../CaptureFiles/80211_per_packet_information.pcap");

                dev.Open();
                var rawCapture = dev.GetNextPacket();

                dev.Close();

                PpiPacket p = Packet.ParsePacket(rawCapture.LinkLayerType, rawCapture.Data) as PpiPacket;

                Assert.IsNotNull(p);
                Assert.AreEqual(0, p.Version);
                Assert.AreEqual(32, p.Length);
                Assert.AreEqual(1, p.Count);

                PpiCommon commonField = p.FindFirstByType(PpiFieldType.PpiCommon) as PpiCommon;

                Assert.AreEqual(PpiFieldType.PpiCommon, commonField.FieldType);
                Assert.AreEqual(0, commonField.TSFTimer);
                Assert.IsTrue((commonField.Flags & PpiCommon.CommonFlags.FcsIncludedInFrame) == PpiCommon.CommonFlags.FcsIncludedInFrame);
                Assert.AreEqual(2, commonField.Rate);
                Assert.AreEqual(2437, commonField.ChannelFrequency);
                Assert.AreEqual(0x00A0, (Int32)commonField.ChannelFlags);
                Assert.AreEqual(0, commonField.FhssHopset);
                Assert.AreEqual(0, commonField.FhssPattern);
                Assert.AreEqual(-84, commonField.AntennaSignalPower);
                Assert.AreEqual(-100, commonField.AntennaSignalNoise);

                MacFrame macFrame = p.PayloadPacket as MacFrame;

                Assert.AreEqual(FrameControlField.FrameSubTypes.ControlCTS, macFrame.FrameControl.SubType);
                Assert.IsTrue(macFrame.AppendFcs);
            }
            public void Test_PpiCommon_Construction()
            {
                PpiCommon field = new PpiCommon();

                field.TSFTimer           = 0x1234567812345678;
                field.Flags              = PpiCommon.CommonFlags.FcsIncludedInFrame | PpiCommon.CommonFlags.TimerSynchFunctionInUse;
                field.Rate               = 2;
                field.ChannelFrequency   = 2142;
                field.ChannelFlags       = RadioTapChannelFlags.Channel2Ghz | RadioTapChannelFlags.Passive;
                field.FhssHopset         = 0xAB;
                field.FhssPattern        = 0xCD;
                field.AntennaSignalPower = -50;
                field.AntennaSignalNoise = 25;

                var       ms             = new MemoryStream(field.Bytes);
                PpiCommon recreatedField = new PpiCommon(new BinaryReader(ms));

                Assert.AreEqual(0x1234567812345678, recreatedField.TSFTimer);
                Assert.AreEqual(PpiCommon.CommonFlags.FcsIncludedInFrame | PpiCommon.CommonFlags.TimerSynchFunctionInUse, recreatedField.Flags);
                Assert.AreEqual(2, recreatedField.Rate);
                Assert.AreEqual(2142, recreatedField.ChannelFrequency);
                Assert.AreEqual(RadioTapChannelFlags.Channel2Ghz | RadioTapChannelFlags.Passive, recreatedField.ChannelFlags);
                Assert.AreEqual(0xAB, recreatedField.FhssHopset);
                Assert.AreEqual(0xCD, recreatedField.FhssPattern);
                Assert.AreEqual(-50, recreatedField.AntennaSignalPower);
                Assert.AreEqual(25, recreatedField.AntennaSignalNoise);
            }
示例#4
0
            public void ConstructPacketWithMultipleAlignedFields()
            {
                PpiPacket packet = new PpiPacket();

                packet.Flags |= PpiPacket.HeaderFlags.Alignment32Bit;

                PpiCommon commonField = new PpiCommon();

                commonField.ChannelFrequency   = 2142;
                commonField.AntennaSignalPower = 50;
                commonField.AntennaSignalNoise = 25;
                packet.Add(commonField);

                Assert.AreEqual(32, packet.Length);

                PpiProcessInfo processInfoField = new PpiProcessInfo();

                processInfoField.UserId    = 0x1111;
                processInfoField.UserName  = "******";
                processInfoField.GroupId   = 0x2222;
                processInfoField.GroupName = "Test Group";
                packet.Add(processInfoField);

                Assert.AreEqual(84, packet.Length);

                PpiAggregation aggregationField = new PpiAggregation(0x3333);

                packet.Add(aggregationField);

                Assert.AreEqual(92, packet.Length);

                PpiPacket recreatedPacket = Packet.ParsePacket(LinkLayers.PerPacketInformation, packet.Bytes) as PpiPacket;

                PpiCommon recreatedCommonField = recreatedPacket[0] as PpiCommon;

                Assert.IsNotNull(recreatedCommonField);
                Assert.AreEqual(2142, recreatedCommonField.ChannelFrequency);
                Assert.AreEqual(50, recreatedCommonField.AntennaSignalPower);
                Assert.AreEqual(25, recreatedCommonField.AntennaSignalNoise);

                PpiProcessInfo recreatedProcessField = recreatedPacket[1] as PpiProcessInfo;

                Assert.IsNotNull(recreatedProcessField);
                Assert.AreEqual(0x1111, recreatedProcessField.UserId);
                Assert.AreEqual("Hester the tester", recreatedProcessField.UserName);
                Assert.AreEqual(0x2222, recreatedProcessField.GroupId);
                Assert.AreEqual("Test Group", recreatedProcessField.GroupName);

                PpiAggregation recreatedAggregationField = recreatedPacket[2] as PpiAggregation;

                Assert.IsNotNull(recreatedAggregationField);
                Assert.AreEqual(0x3333, recreatedAggregationField.InterfaceId);
            }
示例#5
0
        public void ConstructPacketWithMultipleFields()
        {
            var packet = new PpiPacket();

            var commonField = new PpiCommon {
                ChannelFrequency = 2142, AntennaSignalPower = 50, AntennaSignalNoise = 25
            };

            packet.Add(commonField);

            Assert.AreEqual(32, packet.Length);

            var processInfoField = new PpiProcessInfo {
                UserId = 0x1111, UserName = "******", GroupId = 0x2222, GroupName = "Test Group"
            };

            packet.Add(processInfoField);

            Assert.AreEqual(82, packet.Length);

            var aggregationField = new PpiAggregation(0x3333);

            packet.Add(aggregationField);

            Assert.AreEqual(90, packet.Length);

            var recreatedPacket = Packet.ParsePacket(LinkLayers.Ppi, packet.Bytes) as PpiPacket;

            var recreatedCommonField = recreatedPacket[0] as PpiCommon;

            Assert.IsNotNull(recreatedCommonField);
            Assert.AreEqual(2142, recreatedCommonField.ChannelFrequency);
            Assert.AreEqual(50, recreatedCommonField.AntennaSignalPower);
            Assert.AreEqual(25, recreatedCommonField.AntennaSignalNoise);

            var recreatedProcessField = recreatedPacket[1] as PpiProcessInfo;

            Assert.IsNotNull(recreatedProcessField);
            Assert.AreEqual(0x1111, recreatedProcessField.UserId);
            Assert.AreEqual("Hester the tester", recreatedProcessField.UserName);
            Assert.AreEqual(0x2222, recreatedProcessField.GroupId);
            Assert.AreEqual("Test Group", recreatedProcessField.GroupName);

            var recreatedAggregationField = recreatedPacket[2] as PpiAggregation;

            Assert.IsNotNull(recreatedAggregationField);
            Assert.AreEqual(0x3333, recreatedAggregationField.InterfaceId);
        }
示例#6
0
            /// <summary>
            /// Initializes a new instance of the <see cref="Kavprot.Packets.Ieee80211.PpiPacket"/> class.
            /// </summary>
            /// <param name='bas'>
            /// A <see cref="ByteArraySegment"/>
            /// </param>
            public PpiPacket(ByteArraySegment bas)
            {
                // slice off the header portion
                header = new ByteArraySegment(bas);

                Version = VersionBytes;
                Flags   = FlagsBytes;

                // update the header size based on the headers packet length
                header.Length = LengthBytes;
                LinkType      = LinkTypeBytes;
                PpiFields     = ReadPpiFields();

                PpiCommon commonField = FindFirstByType(PpiFieldType.PpiCommon) as PpiCommon;

                // parse the encapsulated bytes
                payloadPacketOrData = ParseEncapsulatedBytes(header, commonField);
            }
 /// <summary>
 /// Used by the Ieee80211PpiPacket constructor. 
 /// </summary>
 /// <param name="header">
 /// A <see cref="ByteArraySegment"/>
 /// </param>
 /// <param name="commonField">
 /// The <see cref="PpiCommon"/> object in the PPI packet or null if not available
 /// </param>
 /// <returns>
 /// A <see cref="PacketOrByteArraySegment"/>
 /// </returns>
 internal static PacketOrByteArraySegment ParseEncapsulatedBytes (ByteArraySegment header, PpiCommon commonField)
 {
     // slice off the payload
     var payload = header.EncapsulatedBytes ();
     var payloadPacketOrData = new PacketOrByteArraySegment ();
     MacFrame frame = null;
     
     if (commonField != null)
     {
         bool fcsPresent = ((commonField.Flags & PpiCommon.CommonFlags.FcsIncludedInFrame) == PpiCommon.CommonFlags.FcsIncludedInFrame);
         
         if (fcsPresent)
         {
             frame = MacFrame.ParsePacketWithFcs (payload);
         }
         else
         {
             frame = MacFrame.ParsePacket (payload);
         }
     }
     else
     {
         frame = MacFrame.ParsePacket (payload);
     }
     
     if (frame == null)
     {
         payloadPacketOrData.TheByteArraySegment = payload;
     }
     else
     {
         payloadPacketOrData.ThePacket = frame;
     }
     
     return payloadPacketOrData;
 }
示例#8
0
            /// <summary>
            ///     Used by the Ieee80211PpiPacket constructor.
            /// </summary>
            /// <param name="header">
            ///     A <see cref="ByteArraySegment" />
            /// </param>
            /// <param name="commonField">
            ///     The <see cref="PpiCommon" /> object in the PPI packet or null if not available
            /// </param>
            /// <returns>
            ///     A <see cref="PacketOrByteArraySegment" />
            /// </returns>
            internal static PacketOrByteArraySegment ParseEncapsulatedBytes(ByteArraySegment header, PpiCommon commonField)
            {
                // slice off the payload
                var      payload             = header.EncapsulatedBytes();
                var      payloadPacketOrData = new PacketOrByteArraySegment();
                MacFrame frame = null;

                if (commonField != null)
                {
                    var fcsPresent = ((commonField.Flags & PpiCommon.CommonFlags.FcsIncludedInFrame) == PpiCommon.CommonFlags.FcsIncludedInFrame);

                    if (fcsPresent)
                    {
                        frame = MacFrame.ParsePacketWithFcs(payload);
                    }
                    else
                    {
                        frame = MacFrame.ParsePacket(payload);
                    }
                }
                else
                {
                    frame = MacFrame.ParsePacket(payload);
                }

                if (frame == null)
                {
                    payloadPacketOrData.TheByteArraySegment = payload;
                }
                else
                {
                    payloadPacketOrData.ThePacket = frame;
                }

                return(payloadPacketOrData);
            }
 public void ConstructPacketWithMultipleAlignedFields()
 {
     PpiPacket packet = new PpiPacket();
     packet.Flags |= PpiPacket.HeaderFlags.Alignment32Bit;
     
     PpiCommon commonField = new PpiCommon();
     commonField.ChannelFrequency = 2142;
     commonField.AntennaSignalPower = 50;
     commonField.AntennaSignalNoise = 25;
     packet.Add(commonField);
     
     Assert.AreEqual(32, packet.Length);
     
     PpiProcessInfo processInfoField = new PpiProcessInfo();
     processInfoField.UserId = 0x1111;
     processInfoField.UserName = "******";
     processInfoField.GroupId = 0x2222;
     processInfoField.GroupName = "Test Group";
     packet.Add(processInfoField);
     
     Assert.AreEqual(84, packet.Length);
     
     PpiAggregation aggregationField = new PpiAggregation(0x3333);
     packet.Add(aggregationField);
     
     Assert.AreEqual(92, packet.Length);
     
     PpiPacket recreatedPacket = Packet.ParsePacket(LinkLayers.PerPacketInformation, packet.Bytes) as PpiPacket;
     
     PpiCommon recreatedCommonField = recreatedPacket[0] as PpiCommon;
     Assert.IsNotNull(recreatedCommonField);
     Assert.AreEqual(2142, recreatedCommonField.ChannelFrequency);
     Assert.AreEqual(50, recreatedCommonField.AntennaSignalPower);
     Assert.AreEqual(25, recreatedCommonField.AntennaSignalNoise);
     
     PpiProcessInfo recreatedProcessField = recreatedPacket[1] as PpiProcessInfo;
     Assert.IsNotNull(recreatedProcessField);
     Assert.AreEqual(0x1111, recreatedProcessField.UserId);
     Assert.AreEqual("Hester the tester", recreatedProcessField.UserName);
     Assert.AreEqual(0x2222, recreatedProcessField.GroupId);
     Assert.AreEqual("Test Group", recreatedProcessField.GroupName);
     
     PpiAggregation recreatedAggregationField = recreatedPacket[2] as PpiAggregation;
     
     Assert.IsNotNull(recreatedAggregationField);
     Assert.AreEqual(0x3333, recreatedAggregationField.InterfaceId);
 }