发新话题
打印

伪造ip包

伪造ip包

怎样用C伪造一个IP包,IP包的基本原理?能否详细告诉我      

TOP

按IP包结构填然后发出去就行了      

TOP

ip=(struct ip *)buffer;
ip->ip_v=IPVERSION; /** 版本一般的是 4 **/
ip->ip_hl=sizeof(struct ip)>>2; /** IP数据包的头部长度 **/
ip->ip_tos=0; /** 服务类型 **/
ip->ip_len=htons(head_len); /** IP数据包的总长度(头+数据) **/
ip->ip_id=0; /** 让系统去填写吧 **/
ip->ip_off=0; /** 和上面一样,省点时间 **/
ip->ip_ttl=MAXTTL; /** 最长的时间 255 **/
ip->ip_p=IPPROTO_TCP; /** 我们要发的是 TCP包 **/
ip->ip_sum=0; /** 校验和让系统去做 **/
ip->ip_dst=addr->sin_addr; /** 我们攻击的对象 **/

其中,ip->ip_hl那一句为什么要是sizeof(struct ip)>>2而不是sizeof(struct ip)?      

TOP

IP头长度字段只有4位,是按4字节为一个单位算的,所以要将实际值除4      

TOP

thank,我明白了,可是在tcp/ip的协议中有这个规定吗,包头长度以4byte为一个单位?      

TOP

当然是IP协议规定的了,但不同协议会有不同的规定,写程序前要先看协议      

TOP

发新话题