[C] Filtered Port Scanner

Download | Vote Up (0) | Vote Down (0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>

#define TIMEOUT 60
#define FILTERED 61

int main(int argc, char **argv)
{
  int cSock;
  struct sockaddr_in sSock;
  int port;
  char ip[50];
  int result;

  if(argc > 3)
    {
      printf("## SakiiR Port Scanner ##\n");
      printf("##   http://sakiir.fr  ##\n");
      printf("## Usage : %s ip port  ##\n",argv[0]);
      exit(0);
    }

  strncpy(ip, argv[1] , 49);
  port = atoi(argv[2]);

  cSock = socket(PF_INET, SOCK_STREAM, 0);
  memset((char *) &sSock, 0, sizeof(struct sockaddr_in));
  sSock.sin_family = AF_INET;
  sSock.sin_port = htons(port);
  inet_aton(ip, &(sSock.sin_addr));

  result = connect(cSock,(struct sockaddr *) &sSock, sizeof(struct sockaddr_in));
  switch(result)
    {
    case 0:
      printf("[^] Port %d is Openned\n", port);
      break;
    case TIMEOUT:
      printf("[^] Timeout on port : %d\n", port);
      break;
    case FILTERED:
      printf("[^] Not listenning or filtred port : %d\n", port);
      break;
    default:
      printf("[^] Unknow error on port : %d\n", port);
      break;
    }
}

sakiir


Comments

St0rn
Le principe de mon outil n'est en aucun cas retransmis dans le tien, tu a fait un scanner de port basique qui prend en argument 2 parametres, la logique de mon outil est de trouver les ports filtré sur une machine déjà piraté (après l'obtention d'un shell pas très stable ou peu pratique). ça s'appelle de la post exploitation, j'en ai eu besoin pendant ma période de labo de l'OSCP, de plus ton morceau de code scan un seul port, le mien une range. Bref je te répond simplement comme tu est venu fanfaroné que tu avait fait MON outil en C, je ne veut pas être méchant mais avant de te lancer dans une campagne pour savoir qui à la plus grosse, comprend l'utilité d'un outil et surtout cherche des projets propre à toi même.
saelyx
Pour l'apprentissage, ça peut être sympa, mais dans la pratique, ça ne sert pas à grand'chose : nmap -h|grep -i connect -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans -Pn: Treat all hosts as online -- skip host discovery # nmap -sT -Pn vmlabo_dvl1.local -p 22 Un simple netcat (toutes versions : insecure/debian/openbsd) fait également un Connect() : # nc vmlabo_dvl1.local 22 & killall nc

Please login to comment !