#include #include #include #include #include #include #include #include #include #include #include int main (int argc, char **argv) { int sd, result, server_port; struct hostent *he; struct sockaddr_in servaddr; printf ("Test TCP/IP port scanner:\n"); if (argc != 2) { printf ("Usage: %s host\n", argv[0]); exit (1); } if ((he = gethostbyname (argv[1])) == NULL) { perror ("gethostbyname()"); exit (1); } printf ("Scanning %s\n", argv[1]); for (server_port = 0; server_port < 65536; server_port++) { if ((sd = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { perror ("socket()"); exit (1); } bzero (&servaddr, sizeof servaddr); servaddr.sin_family = AF_INET; servaddr.sin_port = htons (server_port); servaddr.sin_addr = *((struct in_addr *) he->h_addr); result = connect (sd, (struct sockaddr *) &servaddr, sizeof servaddr); if (result != -1) { printf ("open port: %d\n",server_port); } close (sd); } return result; }