Exemple #1
0
            internal static PacketOrByteArraySegment ParseEncapsulatedBytes(ByteArraySegment payload, FlagsRadioTapField flagsField)
            {
                var      payloadPacketOrData = new PacketOrByteArraySegment();
                MacFrame frame = null;

                if (flagsField != null)
                {
                    bool fcsPresent = ((flagsField.Flags & RadioTapFlags.FcsIncludedInFrame) == RadioTapFlags.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 OsiPresentationPacket(ByteArraySegment bas, Packet parent)
        {
            ParentPacket     = parent;
            UserData         = new TLV(bas);
            FullyEncodedData = new TLV(UserData.Value.Bytes, UserData);
            PdvList          = new TLV[2];
            PdvList[0]       = new TLV(FullyEncodedData.Value.Bytes, FullyEncodedData);
            PresentationContextIdentifier = (ContextIdentifier)(PdvList[0].Value.RawBytes[0]);

            PdvList[1]         = new TLV(FullyEncodedData.Value.Bytes.EncapsulatedBytes(), FullyEncodedData);
            this.header        = bas;
            this.header.Length = UserData.Bytes.Length - PdvList[1].Bytes.Length;
            var payload = PdvList[1].Value.Bytes;

            payloadPacketOrData = new PacketOrByteArraySegment();

            switch (PresentationContextIdentifier)
            {
            case ContextIdentifier.Mms:
                payloadPacketOrData.ThePacket = new MmsPacket(payload, this);
                break;

            default:
                payloadPacketOrData.TheByteArraySegment = payload;
                break;
            }
        }
Exemple #3
0
        public OsiSessionPacket(byte[] rawData, Packet parent)
        {
            this.ParentPacket = parent;
            int offset = 0;

            header  = new ByteArraySegment(rawData);
            PduType = (PduIdentifier)rawData[offset];
            if (PduType == PduIdentifier.GiveToken)
            {
                offset += OsiSessionFileds.PiLength;
                Pdu     = new OsiSessionPdu();
                Spdu    = new OsiSessionPdu();

                Pdu.Length = (int)rawData[offset];
                offset    += OsiSessionFileds.PduLiLength;

                if (Pdu.Length > 0)
                {
                    Pdu.PI  = rawData[offset];
                    offset += 1;
                    rawData.CopyTo(Pdu.Value, offset);
                }

                SpduType = (SpduIdentifier)rawData[offset];
                if (SpduType == SpduIdentifier.DataTransfer)
                {
                    offset += OsiSessionFileds.SpiLength;

                    Spdu.Length = (int)rawData[offset];
                    offset     += OsiSessionFileds.SpduLiLength;
                    if (SpduLength > 0)
                    {
                        Spdu    = new OsiSessionPdu();
                        Spdu.PI = rawData[offset];
                        offset += 1;
                        rawData.CopyTo(Spdu.Value, offset);
                    }

                    header        = new ByteArraySegment(rawData);
                    header.Length = OsiSessionFileds.PiLength + OsiSessionFileds.PduLiLength + PduLength +
                                    OsiSessionFileds.SpduLiLength + OsiSessionFileds.SpiLength + SpduLength;
                    var payload = header.EncapsulatedBytes();
                    payloadPacketOrData           = new PacketOrByteArraySegment();
                    payloadPacketOrData.ThePacket = new OsiPresentationPacket(payload, this);
                    parent.PayloadPacket          = this;
                }
            }
        }
Exemple #4
0
        public CotpPacket(ByteArraySegment bas, Packet parent)
        {
            this.ParentPacket = parent;
            header            = bas;

            header.Length = BigEndianBitConverter.Big.ToInt8(new ByteArraySegment(bas.Bytes, bas.Offset, 1).ActualBytes(), 0) +
                            CotpFileds.LengthLength;
            byte num_eot = header.ActualBytes()[CotpFileds.LengthLength + CotpFileds.PduTypeLength];

            this.Type = (TpduType)(BigEndianBitConverter.Big.ToInt8(header.ActualBytes(), 1));
            switch (Type)
            {
            case TpduType.ConnectioinRequest:
                break;

            case TpduType.ConnectionConfirm:
                break;

            case TpduType.DataTransfer:
                TpduNumber   = num_eot & TPDU_NUM_MASK;
                LastDataUnit = Convert.ToBoolean(num_eot >> LAST_DU_BIT);
                break;

            case TpduType.DisconnectionRequest:
                break;

            case TpduType.ExpectedDataTransfer:
                break;

            default:
                break;
            }

            var payload = header.EncapsulatedBytes();

            payloadPacketOrData = new PacketOrByteArraySegment();
            payloadPacketOrData.TheByteArraySegment = payload;
        }
            /// <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);
            }
 /// <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;
 }