This shows you the differences between two versions of the page.
| — |
c:examples:port_scanner [2024/02/16 01:05] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== portscanner in c ====== | ||
| + | compile with gcc portscanner.c -o portscanner | ||
| + | |||
| + | |||
| + | ===== portscanner c example ===== | ||
| + | <code c> | ||
| + | /* | ||
| + | * This example is a very simple Portscanner | ||
| + | * for c network programming | ||
| + | * http://code-reference.com/c/examples/port_scanner | ||
| + | */ | ||
| + | |||
| + | #include <stdio.h> | ||
| + | #include <sys/socket.h> | ||
| + | #include <netinet/in.h> | ||
| + | #include <errno.h> | ||
| + | #include <netdb.h> | ||
| + | #include <signal.h> | ||
| + | |||
| + | int main(int argc, char **argv) | ||
| + | { | ||
| + | int probeport = 0; | ||
| + | struct hostent *host; | ||
| + | int err, i, net,a,b,c,d,anz,x,w; | ||
| + | struct sockaddr_in sa; | ||
| + | struct servent *bar; | ||
| + | |||
| + | if (argc != 2) { | ||
| + | printf("Usage: %s Host\n", argv[0]); | ||
| + | exit(1); | ||
| + | } | ||
| + | printf("\nVery simple PortScanner by http://code-reference.com\n\nHost\t\tPort\tService\n"); | ||
| + | |||
| + | for (i = 1; i < 65536; i++) { | ||
| + | strncpy((char *)&sa, "", sizeof sa); | ||
| + | sa.sin_family = AF_INET; | ||
| + | if (isdigit(*argv[1])) | ||
| + | sa.sin_addr.s_addr = inet_addr(argv[1]); | ||
| + | else if ((host = gethostbyname(argv[1])) != 0) | ||
| + | strncpy((char *)&sa.sin_addr, (char *)host->h_addr, sizeof sa.sin_addr); | ||
| + | else { | ||
| + | herror(argv[1]); | ||
| + | exit(2); | ||
| + | } | ||
| + | sa.sin_port = htons(i); | ||
| + | net = socket(AF_INET, SOCK_STREAM, 0); | ||
| + | if (net < 0) { | ||
| + | perror("\nsocket"); | ||
| + | exit(2); | ||
| + | } | ||
| + | err = connect(net, (struct sockaddr *) &sa, sizeof sa); | ||
| + | if (err < 0) { | ||
| + | //printf("%s %-5d %s\r", argv[1], i, strerror(errno)); | ||
| + | fflush(stdout); | ||
| + | } else { | ||
| + | bar = getservbyport(htons(i),"tcp"); | ||
| + | printf("%s\t%d\t%s\n",argv[1],i,(bar == NULL) ? "UNKNOWN" : bar->s_name); | ||
| + | if (shutdown(net, 2) < 0) { | ||
| + | perror("\nshutdown"); | ||
| + | exit(2); | ||
| + | } | ||
| + | } | ||
| + | close(net); | ||
| + | } | ||
| + | printf(" \r"); | ||
| + | fflush(stdout); | ||
| + | printf("\n"); | ||
| + | return (0); | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | ==== output ==== | ||
| + | Very simple PortScanner by http://code-reference.com | ||
| + | |||
| + | Host Port Service | ||
| + | 192.168.1.2 22 ssh | ||
| + | 192.168.1.2 25 smtp | ||
| + | 192.168.1.2 80 http | ||
| + | 192.168.1.2 111 sunrpc | ||
| + | 192.168.1.2 443 https | ||
| + | 192.168.1.2 8080 http-alt | ||
| + | 192.168.1.2 49678 UNKNOWN | ||
| + | |||