Buenas, estoy trabajando en un bruteforce de Telnet, llamado Evil Bruteforce. El caso es que para hacerlo primero hice un server telnet, solo que en el port 31337, pues es una prueba. Sin embargo, tengo dos problemillas con el server:
1. Presentación: Este, aunque es un fallo sin importancia, me mosquea. Despues del listening, deberia aparecer un letrerito "
- Esperando cliente...", pero no sale hasta que alguien se conecta. El segundo fallo tiene mas importancia, pero me gustaria saber pork no va...
2. Fallos continuos: Si compilan mi server, este va la primera vez. Solo hay que meter la contraseña para que el bruteforce sea sencillo, pero luego lo perfeccionare xD. Sin embargo, al correr la segunda vez, suelta un fallo en Binding. Estos fallos se producen porque no se tienen privilegios para hacer el binding (puertos bajos), o que el port esta usado. Si el port esta usado es porque: o no cerre bien el port cuando acabe el primer programa, o otro programa lo esta usando (el primero no se ha cerrado y sigue operativo). Para resolver estas dos cuestiones cree una funcion de acabado de programa, y quite el bucle for () infinito. Aun asi, no va.
Alguien me puede ayudar???
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int sockfd, newsock;
int finalizar (int state)
{
close (sockfd);
close (newsock);
}
int main ()
{
printf ("#*************************************#\n");
printf ("# -[ EvilBruteforce.0 - by Sagrini ]- #\n");
printf ("# --------------------------------- #\n");
printf ("# Telnet Bruteforce #\n");
printf ("#*************************************#\n\n\n");
struct sockaddr_in host, client;
int a=sizeof (struct sockaddr);
char pass [30];
printf("[+] Creando el Socket...");
if ((sockfd=socket (2, 1, 0))!=-1)
else
{
finalizar (1);
}
host.sin_port=htons(31337);
host.sin_family=AF_INET;
host.sin_addr.s_addr=0;
if(bind(sockfd,(struct sockaddr*)&host,sizeof(host))==-1)
{
finalizar (1);
}
if(listen(sockfd,5)==-1)
{
finalizar (1);
}
else
printf("[+] Esperando cliente...");
if((newsock=accept(sockfd, (struct sockaddr*)&client, &a))==-1)
{
finalizar (1);
}
else
printf("[+] Conexion establecida.\n");
send (newsock, "Password: ", 11, 0);
recv (newsock, &pass, 30, 0);
if (strcmp (pass
, "strike\n")==1)
{
printf (" ==> Access granted\n\n");
send (newsock, " ==> Access granted.\n\n", 23, 0);
}
else
{
printf (" ==> Access denied.\n\n");
send (newsock, " ==> Access denied.\n\n", 22, 0);
}
finalizar (0);
}
Evidentemente, este code es bastante simple, pero no funciona como deberia. Pueden ayudarme?
Saludos y muchas gracias.