que tal.
Bueno, pues el kaso es que voy a compartir un software ( kreado por mi .. un tanto lame x supuesto )
que sirve para scannear puertos. Esta basados en sockets Linux ( Berkeley API ), asi que esta hecho para
plataformas Linux.
El codigo es lame, pero funciona. El kaso es que direis.. Y pa que? si ya GNU viene incluyendo nmap
en toda distro?? Bueno, pero aki entran varias kosas komo que:
Para hacer un Stealth Scan, o derivados, has de ser r00t.
Si haces un scann tipo Connect ( -sT ), ahi si no necesitas ser r00t; pero el logueo/canteo estara servido.
Pues basandome en esto ultimo, el port-scanner que expongo es casi igual de cantoso, que la opcion de
scanneo no-r00t de Nmap ( -sT ).
Ahora, lo mas importante ( pff.. ), es que puede ser que el Admin de la Red haya deshabilitado Nmap.
Es ahi kuando necesitareis ( si kereis scannear claro ) un scanner para vuestro sistema Linux; y es
entonces cuando mas util puede resultaros mi scanner :_)
Bueno, al code:
/* port-scanner By averno
* Compilacion:
* # gcc -o port-scanner port-scanner.c
* Uso:
* # ./port-scanner 192.168.1.63
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#define MAX 65535
/*** Kon esta version NO puedo usar hostnames, solo IPs al no hacer uso de
gethostbyname() */
int main(int argc, char *argv[])
{
struct sockaddr_in dest;
struct hostent *he;
int fd[MAX];
int i;
unsigned int port;
if (argc != 2) {
fprintf(stderr, "\n\t\t****** PORT SCANNER by AVERNO ******\n");
fprintf(stderr, "\n\nUso: %s <IP>\n\n\n", argv[0]);
exit(0);
}
/* if ((he = gethostbyname(argv[1])) == NULL) {
error("gethostbyname()");
exit(-1);
} */
printf("\n\nKomenzando el scanneo ..\n\n\n");
for (i = 0, port = 0; i < MAX+1; i++, port++) {
if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket()");
exit(-1);
}
memset(&dest, 0, sizeof(dest));
dest.sin_family = AF_INET;
dest.sin_port = htons(port);
dest.sin_addr.s_addr = inet_addr(argv[1]);
/* dest.sin_addr = *((struct in_addr *)he->h_addr); */
/* bzero(&(dest.sin_zero), 8); */
if (connect(fd, (struct sockaddr *)&dest, sizeof(struct sockaddr)) == 0) {
printf("Puerto %i OPEN!\n", port);
}
close(fd);
}
return 0;
}
/* EOF */
Bueno, pues cortais el codigo y lo pegais en un archivo. Guardadlo como port-scanner.c
Compilacion en comentarios.
Ya se: es lame.
Saludos, Suerte.
P.D: Si os kuesta trabajo cortar desde aki el code, podeis intentarlo desde:
http://www.geocities.com/shirleylla/port-scanner.c
Lo acabo de subir por lo mismo. Eah, taotra.










Autor



En línea
