⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getports.c

📁 非常高效的扫描器
💻 C
字号:
// not done yet, not used.#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <time.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>int getports(char *ip, struct portscan_ *ports){  struct sockaddr_in addr[ports->numports];  // set up sockets and address struct's for each port to scan.  // remember to add the new structure members in multiscan.c  int sockets[ports->numports], count;  for(count = ports->numports; count > 0; count--)  {     sockets[count] = socket(AF_INET, SOCK_STREAM, 0);     addr[count].sin_family = AF_INET;     addr[count].sin_port = htons(ports.ports[count]);     addr[count].sin_addr = inet_addr(ip);  }connect_nonb(int sockfd, struct sockaddr *saptr, int salen, int nsec){ int flags, n, error; int len; fd_set rset, wset; struct timeval tval; flags = fcntl(sockfd, F_GETFL, 0); fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); error = 0; if ( (n = connect(sockfd, (struct sockaddr *)saptr, salen)) < 0)       if (errno != EINPROGRESS)        return( -1 );   if ( n == 0 )    goto done; FD_ZERO(&rset); FD_SET(sockfd, &rset); wset = rset; tval.tv_sex = nsec; tval.tv_usec = 0; if ( (n = select(sockfd + 1, &rset, 	&wset, NULL, nsec ? &tval : NULL)) == 0) {    close(sockfd);    errno = ETIMEDOUT;    return (-1);   }   if ( FD_ISSET(sockfd, &rset) || FD_ISSET(sockfd, &wset)) {     len = sizeof(error);     if(getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &error, &len) < 0)        return ( -1 );   } else printf(" select error: sockfd not set\n");  done:   fcntl(sockfd, F_SETFL, flags);    if( error ) {      close(sockfd);      errno = error;      return ( -1 );   }   return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -