All pastes #138678 Raw Edit

Dr4g

public c v1 · immutable
#138678 ·published 2006-08-19 12:46 UTC
rendered paste body
/* :: dynamicscan.c:: DynamicScan Port Scanner v1.2.:: Created by Dr4g, Founder of DynamicHell.*/#include <stdio.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/socket.h>#include <signal.h>#include <netdb.h>#include <sys/time.h>#include <unistd.h>struct sockaddr_in client; struct hostent *he; struct servent *se; int scan(int port);int usage();int banner();void timeout(int);int sockfd;int main(int argc, char *argv[]) {	int start_port,end_port;        if(argc < 3) {                  usage();                exit(1);        }	else if (argc == 3 ) {		banner();		start_port=atoi(argv[2]);		end_port=atoi(argv[2]);	}				else {		banner(); 	        start_port=atoi(argv[2]);	        end_port=atoi(argv[3]);	        if(end_port<start_port) {        	        printf("Error: End port cannot be less than start port");                	exit(1);		}        }         /* ----- Check Hostname is correct ----- */	/* ------------------------------------- */        if((he=gethostbyname(argv[1]))==NULL){                printf("Can't Resolve Hostname\n\n");                exit(1);        }        	/* ------- Set signal SIGALRM --------------- */	/* ----- Set Signal Handler to timeout() -----*/	/* ------------------------------------------ */	signal (SIGALRM, &timeout);		/* -------- File Handling -------- */	/* ------------------------------- */	FILE *fp;        fp = fopen("dslog.txt","a+");	        /* ------ Get Time ------- */        /* ----------------------- */        time_t curtime,fin_time;        time(&curtime);        printf("Scanning host on; %s\n",ctime(&curtime));                 fprintf(fp,"\nScanned Host; %s\n-------------------------\n",(argv[1]));   	fprintf(fp,"Time of Scan %s\n",ctime(&curtime));	for(start_port;start_port<=end_port;start_port++) {                /* --------- Check if Scan() Returns 1; Port Open -------- */		/* ------------------------------------------------------- */                if(scan(start_port)) {                         se=getservbyport(htons(start_port),"tcp");                        printf("Port %d is Open;  Running Service %s\n",start_port,(se == NULL)?"Unknown":se->s_name);			fprintf(fp,"Port %d is Open;  Running Service %s\n",start_port,(se == NULL)?"Unknown":se->s_name);                }                else{                        /* if you remove this commented out line,                        it will print closed ports also, meaning you know what port its on.                        (was used for debugging) */      			//printf("Port %d is Closed",start_port);                } 	        }	time(&fin_time);	printf("\nScan Finished at %s \n",ctime(&fin_time));	fprintf(fp,"End of Scan at %s\n-------------------\n",ctime(&fin_time));	fclose(fp);        return 0;}int scan(port) {	/* ---------- Creating Our Socket ---------- */	/* ----------------------------------------- */        if((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0) {               printf("Error Creating Socket");	       printf("port: %d\n",port);               return 0;	}	else {		client.sin_family=AF_INET; 		client.sin_port=htons(port);		client.sin_addr=*((struct in_addr *)he->h_addr); 		memset(&(client.sin_zero), '\0', 8); 	/* ------------ Init alarm for 2 secs and try to connect ------------ */	/* ------------------------------------------------------------------ */		alarm(2);		if(connect(sockfd,(struct sockaddr *)&client, sizeof(client))==-1) {			alarm(0);			close(sockfd);			return 0;		}		alarm(0);		close(sockfd);	return 1;	}}void timeout (int signum){	/* -------- Handler for Timeout. ---- */	/* -------- Close the socket -------- */        close(sockfd);} int banner() {	printf(" _____                              _       _____  \n");	printf("|  __ \\                            (_)     / ____|\n");	printf("| |  | |_   _ _ __   __ _ _ __ ___  _  ___| (___   ___ __  _ __  \n");	printf("| |  | | | | | '_ \\ / _` | '_ ` _ \\| |/ __|\\___ \\ / __/ _` | '_ \\ \n");	printf("| |__| | |_| | | | | (_| | | | | | | | (__ ____) | (_| (_| | | | |\n");	printf("|_____/ \\__, |_| |_|\\__,_|_| |_| |_|_|\\___|_____/ \\___\\__,_|_| |_|\n");	printf("         __/ |   Version 1.2 | DynamicHell.com\n");	printf("        |___/\n\n");	return 0;}int usage() {        printf("Incorrect Parameters !\nUsage: ./dynamicscan <HOST> <START PORT> <END PORT> <-- Optional\n\nDynamicScan v1.2\n");	return 0;}