学习Linux下的网络监听技术 保卫您电脑三
http://www.secu.com.cn 中国安防产品网 时间:2006-9-25 8:20:00
相应的数据结构: struct arphdr {unsigned short int ar_hrd; unsigned short int ar_pro; unsigned char ar_hln;unsigned char ar_pln; unsigned short int ar_op;#if 0unsigned char _ar_sha[ETH_ALEN];unsigned char _ar_sip[4];unsigned char _ar_tha[ETH_ALEN];unsigned char _ar_tip[4];#end if}; 这是linux 的arp 协议报头,其中ar_hrd 是硬件地址的格式,ar_pro协议地址的格式,ar_hln是硬件地址的长度,ar_pln时协议地址的长度,ar_op是arp协议的分类0x001是arp echo 0x0002 是 arp reply.接下来的分别是源地址的物理地址,源ip地址,目标地址的物理地址,目标ip地址。 Tcphdr ip协议的tcp协议报头 以下是相应数据结构: struct tcphdr {u_int16_t source; u_int16_t dest; u_int32_t seq; u_int32_t ack_seq; # if _BYTE_ORDER == _LITTLE _ENDIANu_int16_t resl:4; u_int16_t doff:4;u_int16_t fin:1;u_int16_t syn:1; u_int16_t rst:1;u_int16_t psh:1;u_int16_t ack:1; u_int16_t urg:1;u_int16_t res2:2; #elif _BYTE _ORDER == _BIG _ENDIANu_int16_t doff:4; u_int16_t res1:4;u_int16_t res2:2;u_int16_t urg:1; u_int16_t ack:1;u_int16_t psh:1;u_int16_t rst:1; u_int16_t syn:1;u_int16_t fin:1; #else#error "Adjust your defines"#endifu_int16_t window; u_int16_t check;u_int16_t urg_ptr;}; 这是Linux 下tcp协议的一部分与ip协议相同取BIG,其中source是源端口,dest 是目的端口,seq是s序,ack_seq是a序号,其余的是tcp的连接标志其中包括6个标志:syn表示连接请求,urg 表示紧急信息,fin表示连接结束,ack表示连接应答,psh表示推栈标志,rst表示中断连接。window是表示接受数据窗口大小,check是校验码,urg ptr是紧急指针。 Udphdr 这是udp协议报头 struct udphdr {u_int16_t source; u_int16_t dest;u_int16_t len;u_int16_t check;} 这是Linux下ip协议中udp协议的一部分,结构很明显 source 源端口,dest目的端口,len udp 长度,check 是校验码。 Icmphdr 这是ip协议的icmp协议的报头 struct icmphdr{u_int8_t type;u_int8_t code;u_int16_t checksum;union{struct {u_int16_t id;u_int16_t sequence;} echo;u_int32_t gateway;struct{u_int16_t_unused;u_int16_t mtu;} frag;} un;}; 这是linux下的ip协议中的icmp的协议,这里面主要的是前两项参数,其中type是icmp协议的类型,而code 则是对type类型的再分析。如:type 0x03 是表示unsearchable,这时code的不同表示了不同的unsearchable :0x00表示网络不可寻,0x01表示主机不可寻,0x02表示协议不可寻,0x03表示端口不可寻,0x05表示源路由失败,0x06网络不可知,0x07主机不可知。 Igmphdr 这是ip协议的igmp协议报头 struct igmphdr{ _u8 type;_u8 code;_u16 csum;_u32 group;}; 这是Linux下的ip协议中的igmp协议,协议中主要是前面两个属性,Type表示igmp 协议的信息类型,code表示routing code. 然后,将截取的数据帧的地址赋值给定义的结构.由此可根据不同的结构分析数据,得到我们需要的信息。
【评论 】【大 中 小 】【打印 】【关闭 】
资讯搜索