예제 #1
0
            public void ReadPacketWithNoFcs()
            {
                var dev = new CaptureFileReaderDevice("../../CaptureFiles/80211_radio_without_fcs.pcap");

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

                dev.Close();

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

                Assert.IsNotNull(p.PayloadPacket);

                TsftRadioTapField tsftField = p[RadioTapType.Tsft] as TsftRadioTapField;

                Assert.IsNotNull(tsftField);
                Assert.AreEqual(38724775, tsftField.TimestampUsec);

                FlagsRadioTapField flagsField = p[RadioTapType.Flags] as FlagsRadioTapField;

                Assert.IsNotNull(flagsField);
                Assert.AreEqual(0, (Int32)flagsField.Flags);

                RateRadioTapField rateField = p[RadioTapType.Rate] as RateRadioTapField;

                Assert.IsNotNull(rateField);
                Assert.AreEqual(1, rateField.RateMbps);

                ChannelRadioTapField channelField = p[RadioTapType.Channel] as ChannelRadioTapField;

                Assert.IsNotNull(channelField);
                Assert.AreEqual(2462, channelField.FrequencyMHz);
                Assert.AreEqual(11, channelField.Channel);
                Assert.AreEqual(RadioTapChannelFlags.Channel2Ghz | RadioTapChannelFlags.Cck, channelField.Flags);

                DbmAntennaSignalRadioTapField dbmSignalField = p[RadioTapType.DbmAntennaSignal] as DbmAntennaSignalRadioTapField;

                Assert.IsNotNull(dbmSignalField);
                Assert.AreEqual(-61, dbmSignalField.AntennaSignalDbm);

                DbmAntennaNoiseRadioTapField dbmNoiseField = p[RadioTapType.DbmAntennaNoise] as DbmAntennaNoiseRadioTapField;

                Assert.IsNotNull(dbmNoiseField);
                Assert.AreEqual(-84, dbmNoiseField.AntennaNoisedBm);

                AntennaRadioTapField antennaField = p[RadioTapType.Antenna] as AntennaRadioTapField;

                Assert.IsNotNull(antennaField);
                Assert.AreEqual(0, antennaField.Antenna);

                DbAntennaSignalRadioTapField dbSignalField = p[RadioTapType.DbAntennaSignal] as DbAntennaSignalRadioTapField;

                Assert.IsNotNull(dbSignalField);
                Assert.AreEqual(23, dbSignalField.SignalStrengthdB);

                MacFrame macFrame = p.PayloadPacket as MacFrame;

                Assert.IsFalse(macFrame.AppendFcs);
                Assert.IsFalse(macFrame.FCSValid);
            }
예제 #2
0
 public void Test_DbAntennaSignalRadioTapField ()
 {
     DbAntennaSignalRadioTapField field = new DbAntennaSignalRadioTapField(0x12);
     
     var bytes = new byte[field.Length];
     field.CopyTo(bytes, 0);
     
     DbAntennaSignalRadioTapField recreatedField = new DbAntennaSignalRadioTapField(new BinaryReader (new MemoryStream(bytes)));
     
     Assert.AreEqual(field.SignalStrengthdB, recreatedField.SignalStrengthdB);
 }
예제 #3
0
        public void Test_DbAntennaSignalRadioTapField()
        {
            DbAntennaSignalRadioTapField field = new DbAntennaSignalRadioTapField(0x12);

            var bytes = new Byte[field.Length];

            field.CopyTo(bytes, 0);

            DbAntennaSignalRadioTapField recreatedField = new DbAntennaSignalRadioTapField(new BinaryReader(new MemoryStream(bytes)));

            Assert.AreEqual(field.SignalStrengthdB, recreatedField.SignalStrengthdB);
        }
예제 #4
0
        public void ConstructFrameWithSinglePresenceField()
        {
            var p = new RadioPacket();

            var expectedLength = 8;

            Assert.AreEqual(expectedLength, p.Length);

            var flagsField = new FlagsRadioTapField();

            flagsField.Flags |= RadioTapFlags.FcsIncludedInFrame;
            flagsField.Flags |= RadioTapFlags.WepEncrypted;
            p.Add(flagsField);

            expectedLength += flagsField.Length;
            Assert.AreEqual(expectedLength, p.Length);

            //We will add the noise field before the signal field. This is not the order required
            //for radiotap and so will test that the fields are correctly reordered when written
            var dbAntennaNoiseField = new DbAntennaNoiseRadioTapField {
                AntennaNoisedB = 33
            };

            p.Add(dbAntennaNoiseField);

            expectedLength += dbAntennaNoiseField.Length;
            Assert.AreEqual(expectedLength, p.Length);

            var dbAntennaSignalField = new DbAntennaSignalRadioTapField {
                SignalStrengthdB = 44
            };

            p.Add(dbAntennaSignalField);

            expectedLength += dbAntennaSignalField.Length;
            Assert.AreEqual(expectedLength, p.Length);

            //we will just put a single byte of data because we dont want it to be parsed into
            //an 802.11 frame in this test
            p.PayloadData = new byte[] { 0xFF };

            var frameBytes = p.Bytes;

            var recreatedFrame = Packet.ParsePacket(LinkLayers.Ieee80211Radio, frameBytes) as RadioPacket;

            Assert.IsNotNull(p[RadioTapType.Flags]);
            Assert.IsNotNull(p[RadioTapType.DbAntennaSignal]);
            Assert.IsNotNull(p[RadioTapType.DbAntennaNoise]);
            Assert.AreEqual(new byte[] { 0xFF }, recreatedFrame.PayloadData);
        }