User Tools

Site Tools


Sidebar

Programming Reference/Librarys

Question & Answer

Q&A is closed







c:examples:port_scanner

portscanner in c

compile with gcc portscanner.c -o portscanner

portscanner c example

/*
 * 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);
}

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

on the occasion of the current invasion of Russia in Ukraine

Russian Stop this War
c/examples/port_scanner.txt · Last modified: 2024/02/16 01:05 (external edit)

Impressum Datenschutz