/* :: dynamicscan.c :: DynamicScan Port Scanner v1.2. :: Created by Dr4g, Founder of DynamicHell. */ #include #include #include #include #include #include #include #include #include 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_ports_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 <-- Optional\n\nDynamicScan v1.2\n"); return 0; }