Exemple #1
0
        /// <summary> Convert captured packet data into an object.</summary>
        public static Packet dataToPacket(int linkType, byte[] bytes, Timeval tv)
        {
            int ethProtocol;

            // record the length of the headers associated with this link layer type.
            // this length is the offset to the header embedded in the packet.
            lLen = LinkLayer.getLinkLayerLength(linkType);

            // extract the protocol code for the type of header embedded in the
            // link-layer of the packet
            int offset = LinkLayer.getProtoOffset(linkType);

            if (offset == -1)
            {
                // if there is no embedded protocol, assume IP?
                ethProtocol = EthernetProtocols_Fields.IP;
            }
            else
            {
                ethProtocol = ArrayHelper.extractInteger(bytes, offset, EthernetFields_Fields.ETH_CODE_LEN);
            }

            // try to recognize the ethernet type..
            switch (ethProtocol)
            {
            // arp
            case EthernetProtocols_Fields.ARP:
                return(new ARPPacket(lLen, bytes, tv));

            case EthernetProtocols_Fields.IP:
                // ethernet level code is recognized as IP, figure out what kind..
                int ipProtocol = IPProtocol.extractProtocol(lLen, bytes);
                switch (ipProtocol)
                {
                // icmp
                case IPProtocols_Fields.ICMP: return(new ICMPPacket(lLen, bytes, tv));

                // igmp

                case IPProtocols_Fields.IGMP: return(new IGMPPacket(lLen, bytes, tv));

                // tcp

                case IPProtocols_Fields.TCP: return(new TCPPacket(lLen, bytes, tv));

                // udp

                case IPProtocols_Fields.UDP: return(new UDPPacket(lLen, bytes, tv));

                // unidentified ip..

                default: return(new IPPacket(lLen, bytes, tv));
                }
            // ethernet level code not recognized, default to anonymous packet..
            //goto default;

            default: return(new EthernetPacket(lLen, bytes, tv));
            }
        }
Exemple #2
0
 /// <summary> Create a new TCP packet.</summary>
 public TCPPacket(int lLen, byte[] bytes, Timeval tv)
     : this(lLen, bytes)
 {
     this._timeval = tv;
 }
        /// <summary> Convert captured packet data into an object.</summary>
        public static Packet dataToPacket(int linkType, byte[] bytes, Timeval tv)
        {
            int ethProtocol;

            // record the length of the headers associated with this link layer type.
            // this length is the offset to the header embedded in the packet.
            lLen = LinkLayer.getLinkLayerLength(linkType);

            // extract the protocol code for the type of header embedded in the
            // link-layer of the packet
            int offset = LinkLayer.getProtoOffset(linkType);
            if (offset == -1)
                // if there is no embedded protocol, assume IP?
                ethProtocol = EthernetProtocols_Fields.IP;
            else
                ethProtocol = ArrayHelper.extractInteger(bytes, offset, EthernetFields_Fields.ETH_CODE_LEN);

            // try to recognize the ethernet type..
            switch (ethProtocol)
            {

                // arp
                case EthernetProtocols_Fields.ARP:
                    return new ARPPacket(lLen, bytes, tv);

                case EthernetProtocols_Fields.IP:
                    // ethernet level code is recognized as IP, figure out what kind..
                    int ipProtocol = IPProtocol.extractProtocol(lLen, bytes);
                    switch (ipProtocol)
                    {

                        // icmp
                        case IPProtocols_Fields.ICMP: return new ICMPPacket(lLen, bytes, tv);
                        // igmp

                        case IPProtocols_Fields.IGMP: return new IGMPPacket(lLen, bytes, tv);
                        // tcp

                        case IPProtocols_Fields.TCP: return new TCPPacket(lLen, bytes, tv);
                        // udp

                        case IPProtocols_Fields.UDP: return new UDPPacket(lLen, bytes, tv);
                        // unidentified ip..

                        default: return new IPPacket(lLen, bytes, tv);

                    }
                    // ethernet level code not recognized, default to anonymous packet..
                    //goto default;

                default: return new EthernetPacket(lLen, bytes, tv);

            }
        }
Exemple #4
0
 /// <summary> Create a new TCP packet.</summary>
 public TCPPacket(int lLen, byte[] bytes, Timeval tv)
     : this(lLen, bytes)
 {
     this._timeval = tv;
 }