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 | ||
+ | |||