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); }
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); }
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); }
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); }