Advertisement
dienpv_58

Simple Port Scanner Tool

Jan 19th, 2017
1,005
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.44 KB | None | 0 0
  1. //Simple Port Scanner - Using C Language
  2. //all libs to run
  3. #include<stdio.h>
  4. #include<sys/types.h>
  5. #include<sys/socket.h>
  6. #include<netinet/in.h>
  7. #include<string.h>
  8. #include<stdlib.h>
  9. #include<unistd.h>
  10. #include<netdb.h>
  11. #include<arpa/inet.h>
  12. #include<pthread.h>
  13. #include<time.h>
  14. //deploy--------------
  15. static char* ip_address;
  16. //---------------------
  17. void mapping_services(int port){
  18.     switch(port){
  19.         case 20: printf("ftp-data"); break;
  20.         case 21: printf("ftp-control"); break;
  21.         case 22: printf("ssh"); break;
  22.         case 23: printf("telnet"); break;
  23.         case 25: printf("smtp"); break;
  24.         case 43: printf("whois"); break;
  25.         case 53: printf("dns"); break;
  26.         case 63: printf("whois++"); break;
  27.         case 69: printf("tftp"); break;
  28.         case 80: printf("http"); break;
  29.         case 107: printf("rtelnet"); break;
  30.         case 109: printf("pop2"); break;
  31.         case 110: printf("pop3"); break;
  32.         case 115: printf("sftp"); break;
  33.         case 118: printf("sql-services"); break;
  34.         case 143: printf("imap"); break;
  35.         case 443: printf("https"); break;
  36.         case 161: printf("snmp"); break;
  37.         case 546: printf("dhcp-client"); break;
  38.         case 547: printf("dhcp-server"); break;
  39.         default: printf("unknow");
  40.     }
  41. }
  42.  
  43. void* scanning(void* port){
  44.     //---------------------
  45.     int n = *((int*)port);
  46.     pthread_detach(pthread_self());
  47.     int sockfd, check;
  48.     struct sockaddr_in target;
  49.     sockfd = socket(AF_INET, SOCK_STREAM,0);
  50.     bzero((char*)&target, sizeof(target));
  51.     target.sin_family = AF_INET;
  52.     target.sin_addr.s_addr = inet_addr(ip_address);
  53.     target.sin_port = htons(n);
  54.     check = connect(sockfd, (struct sockaddr*)&target, sizeof(target));
  55.     //---------------- 
  56.     if(check != -1){
  57.         printf("  %d\t open\t   ",n);
  58.         mapping_services(n);
  59.         printf("\n");
  60.     }
  61.     close(sockfd);
  62.     return NULL;
  63. }
  64. //----------------------
  65. int main(int argc, char *argv[]){
  66.     //---------------------
  67.     printf("\n+----------------------------------------------------+\n");  
  68.     printf("|THE SIMPLE PORT SCANNER - USING C LANGUAGE - n0Sk!LL|\n");
  69.     printf("+----------------------------------------------------+\n");
  70.     printf("\nUSAGE\n");
  71.     printf("+---------------------------------------------------------------+\n");
  72.     printf("|./scanner <ip-address> (default)                               |\n");
  73.     printf("|./scanner <ip-address> <port-start> <port-end> (set port range)|\n");
  74.     printf("+---------------------------------------------------------------+\n\n");
  75.     if(argc < 2 || argc > 4 || argc == 3){
  76.         perror("Argument is wrong  !!!\n");
  77.         exit(0);
  78.     }
  79.  
  80.     ip_address = argv[1];
  81.     if(argc == 4){
  82.         int start, end, *port;
  83.         start = atoi(argv[2]);
  84.         end = atoi(argv[3]);
  85.         printf("start: %d  end : %d\n",start,end);
  86.         printf("-PORT-\t-STATE-\t-SERVICE-\n");
  87.         port = &start;
  88.         pthread_t thread_id;
  89.         for(start; start <= end; start++){
  90.             pthread_create(&thread_id, NULL, &scanning,(void*)port);
  91.             sleep(1);
  92.         }
  93.         port = NULL;
  94.     }
  95.     else{
  96.         int i, length, *port;
  97.         pthread_t thread_id;
  98.         int port_list[]={20,21,22,23,25,43,53,63,69,80,107,109,110,115,118,143,161,443,546,547};
  99.         port = port_list;
  100.         length = sizeof(port_list) / sizeof(int);
  101.         printf("-PORT-\t-STATE-\t-SERVICE-\n");
  102.         for(i = 0; i < length; i++){
  103.             pthread_create(&thread_id, NULL, &scanning,(void*)(port+i));
  104.             sleep(1);
  105.         }
  106.         port = NULL;
  107.     }
  108. //-------------------
  109.     return 0;
  110. }
  111.  
  112. //author:dienpv.uet
  113. //this program run on linux/unix not windows
  114. //to run, you can type command(linux): gcc -o scanner.c outfile -pthread (beacause using multi-thread)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement