⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ippacket.java

📁 Java抓包必备
💻 JAVA
字号:
package jpcap;

/**
 * IP僷働僢僩傪昞尰偡傞僋儔僗偱偡丅<P>
 * v4/v6偺椉曽傪庢傝埖偆偙偲偑弌棃傑偡丅
 */
public class IPPacket extends Packet
{
        /**
         * IP偺僶乕僕儑儞 (v4/v6)
         */
        public byte version;
        /**
         * 偙偺僷働僢僩偺桪愭搙(僋儔僗) (v4/v6)
         */
        public byte priority;
        /**
         * IP僼儔僌價僢僩 [D]elay 嬌椡抶墑偝偣側偄 (v4)
         */
        public boolean d_flag;
        /**
         * IP僼儔僌價僢僩[T]hrough 崅僗儖乕僾僢僩梫媮 (v4)
         */
        public boolean t_flag;
        /**
         * IP僼儔僌價僢僩[R]eliability 崅怣棅惈梫媮 (v4)
         */
        public boolean r_flag;
        /**
         * 僷働僢僩挿 (v4/v6)
         */
        public short length;
        /**
         * 梊栺僼儔僌儊儞僩僼儔僌 (v4)
         */
        public boolean rsv_frag;
        /**
         * 僼儔僌儊儞僩嬛巭僼儔僌 (v4)
         */
        public boolean dont_frag;
        /**
         * 僼儔僌儊儞僩屻懕偁傝偺僼儔僌 (v4)
         */
        public boolean more_frag;
        /**
         * 僼儔僌儊儞僩僆僼僙僢僩 (v4)
         */
        public short offset;
        /**
         * 儂僢僾尷奅抣 (媽Time To Live) (v4/v6)
         */
        public short hop_limit;
        /**
         * 壓埵儗僀儎僾儘僩僐儖 (v4/v6)
         */
        public short protocol;
        /**
         * IDENTIFICATION (v4)
         */
        public int ident;
        /**
         * 僼儘乕儔儀儖 (v6)
         */
        public int flow_label;

        /**
         * 憲怣尦IP傾僪儗僗
         */
        public IPAddress src_ip;
        /**
         * 憲怣愭IP傾僪儗僗
         */
        public IPAddress dst_ip;

        /**
         * 僆僾僔儑儞僿僢僟 (v6)
         **/
        public java.util.Vector options=null;

        /**
         * IPv4偲偟偰僷働僢僩偺僷儔儊乕僞傪愝掕偟傑偡
         *
         * @param priority 桪愭搙
         * @param d_flag,t_flag,r_flag Delay, Through, Realiability僼儔僌
         * @param rsv_frag 梊栺僼儔僌儊儞僩僼儔僌
         * @param dont_frag 僼儔僌儊儞僩嬛巭僼儔僌
         * @param more_frag 屻懕僼儔僌儊儞僩僼儔僌
         * @param offset 僆僼僙僢僩
         * @param ident 幆暿巕
         * @param ttl Time To Live
         * @param protocol 僾儘僩僐儖斣崋 (忋埵儗僀儎僾儘僩僐儖(eg. TCPPacket)傪宲彸偟偰偄傞応崌偼偙偺抣
偼柍帇偝傟傑偡丅)
         * @param src 憲怣尦IP傾僪儗僗
         * @param dst 憲怣愭IP傾僪儗僗
         **/
        public void setIPv4Parameter(int priority,
                                         boolean d_flag,boolean t_flag,boolean r_flag,
                                         boolean rsv_frag,boolean dont_frag,boolean more_frag,
                                         int offset,int ident,int ttl,
                                         int protocol,IPAddress src,IPAddress dst){
                this.version=4;
                this.priority=(byte)priority;
                this.d_flag=d_flag;this.t_flag=t_flag;this.r_flag=r_flag;
                this.rsv_frag=rsv_frag;this.dont_frag=dont_frag;
                this.more_frag=more_frag;
                offset=(short)offset;
                this.ident=ident;
                this.hop_limit=(short)ttl;
                this.protocol=(short)protocol;
                this.src_ip=src;
                this.dst_ip=dst;
        }

        /**
         * IPv6偲偟偰僷働僢僩偺僷儔儊乕僞傪愝掕偟傑偡
         *
         * @param class 僋儔僗
         * @param flow_label 僼儘乕儔儀儖
         * @param nxt_hdr 師僿僢僟
         * @param hop_limit 尷奅儂僢僾悢
         * @param src 憲怣尦傾僪儗僗
         * @param dst 憲怣愭傾僪儗僗
         **/
        public void setIPv6Parameter(int cls,int flowlabel,int nxt_hdr,
                                         int hop_limit,IPAddress src,IPAddress dst){
                this.version=6;
                this.priority=(byte)cls;
                this.flow_label=flowlabel;
                this.protocol=(short)nxt_hdr;
                this.hop_limit=(short)hop_limit;
                this.src_ip=src;
                this.dst_ip=dst;
        }

        void setIPv4Value(byte ver,byte pri,boolean d,boolean t,boolean r,
                                          boolean rf,boolean df,boolean mf,short offset,
                                          short len,short ident,short ttl,short proto,
                                          byte[] src_ip,byte[] dst_ip){

                this.version=ver;
                this.priority=pri;
                d_flag=d;t_flag=t;r_flag=r;
                rsv_frag=rf;dont_frag=df;more_frag=mf;
                this.offset=offset;
                this.length=len;
                this.ident=ident;
                this.hop_limit=ttl;
                this.protocol=proto;
                this.src_ip=new IPAddress(4,src_ip);
                this.dst_ip=new IPAddress(4,dst_ip);
        }

        void setIPv6Value(byte ver,byte v6class,int flow,
                                          short payload,byte nxt,short hlim,
                                          byte[] src,byte[] dst){
                this.version=ver;
                this.priority=v6class;
                this.flow_label=flow;
                this.length=payload;
                this.protocol=nxt;
                this.hop_limit=hlim;
                this.src_ip=new IPAddress(6,src);
                this.dst_ip=new IPAddress(6,dst);
        }

        void addOptionHeader(IPv6Option header){
                if(options==null)
                        options=new java.util.Vector();

                options.addElement(header);
        }

        byte[] getSourceAddress(){
                return src_ip.getAddress();
        }

        byte[] getDestinationAddress(){
                return dst_ip.getAddress();
        }

        /**
         * 偙偺僷働僢僩偺撪梕傪暥帤楍偱昞尰偡傞<P>
         * 宍幃(IPv4): src_ip->dst_ip protocol(protocol) priority(priority)
         * [D][T][R] hop(hop_limit) [RF/][DF/][MF] offset(offset) ident(ident)<P>
         * 宍幃(IPv6): src_ip->dst_ip protocol(protocol) priority(priority)
         * flowlabel(flow_label) hop(hop_limit)
         */
        public String toString(){
                if(version==4){
                        return super.toString()+" "+src_ip+"->"+
                                dst_ip+" protocol("+protocol+
                                ") priority("+priority+") "+(d_flag?"D":"")+(t_flag?"T":"")+
                                (r_flag?"R":"")+" hop("+hop_limit+") "+(rsv_frag?"RF/":"")+
                                (dont_frag?"DF/":"")+(more_frag?"MF":"")+" offset("+offset+
                                ") ident("+ident+")";
                }else{
                        return super.toString()+" "+src_ip+"->"+
                                dst_ip+" protocol("+protocol+") priority("+priority+
                                ") flowlabel("+flow_label+") hop("+hop_limit+")";;
                }
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -