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;}