FORUM DARKERS

Tecnologia & Informática => Programação => C/C#/C++ => Tópico iniciado por: spl0w online 30 de Julho , 2011, 10:27:53 PM

Título: C - Sockets - Port Scanner - Dúvida.
Enviado por: spl0w online 30 de Julho , 2011, 10:27:53 PM
Olá a todos do forum,

Estou a algumas madrugadas estudando C, mas sabe quando trava a mente e vc acaba nao resolvendo oque deseja implementar? sei que muitos ja passaram por isso...

No meu caso acontece que digito o ip, a porta e o programa trava.
não sai mais do lugar.
quando adiciono manualmente em  htons(22) e inet_addr("127.0.0.1"); funciona normalmente.

mas oque eu quero fazer?
quero ler oque foi digitado e não fazer manualmente.

axo que consegui me expressar de uma forma mais facil possivel. :D
Espero que alguem consiga me ajudar.

Mais detalhes:
- Uso para compilar o seguinte comando: cc programa.c -o programa;
- Trabalho com FreeBSD;

Meu codigo abaixo:


/*
*   #########################
*   Author: spl0w
*    coisa port scanner
*   #########################
*/
#include <stdio.h>                     
#include <string.h> 
#include <stdlib.h>                       
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>
#include <netinet/in.h>

int conexao;
int coisa_socket;
char ip;
int porta;
struct sockaddr_in destino;
int main()
{                                           
char command[10];
printf ("* Coisa Port Scanner *\n\n");
printf("host:\n");
scanf("%c,%d",&ip);
printf("porta:\n");
scanf("%d",&porta);
coisa_socket = socket(AF_UNIX,SOCK_STREAM,0);
if(coisa_socket < 0)
{
  perror("wtf error");
  exit(1);
}
destino.sin_family = AF_UNIX;
destino.sin_port = htons(porta);
destino.sin_addr.s_addr = inet_addr("ip");
bzero(&(destino.sin_zero),8);
conexao = connect(coisa_socket,(struct sockaddr * )&destino,
sizeof(destino));
if(conexao < 0) {
    perror("A porta esta filtrada ou fechada.\n");
    close(coisa_socket);
    exit(1);
  }
printf("A Porta esta aberta!\n\n");
   close(coisa_socket); // fexa o socket;
return 0;

Título: Re:C - Sockets - Port Scanner - Dúvida.
Enviado por: m0nad online 30 de Julho , 2011, 10:57:57 PM
Opa, então, eu modifiquei seu código para corri-lo

#include <stdio.h>                     
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main()
{       
int conexao;
int coisa_socket;
char ip[256];
int porta;
struct sockaddr_in destino;
                                   
printf ("* Coisa Port Scanner *\n\n");
printf("host:\n");
scanf("%s%*c",ip);
printf("porta:\n");
scanf("%d",&porta);
coisa_socket = socket(AF_INET,SOCK_STREAM,6);
if(coisa_socket < 0)
{
  perror("wtf error");
  return 1;
}
destino.sin_family = AF_INET;
destino.sin_port = htons(porta);
destino.sin_addr.s_addr = inet_addr(ip);
bzero(&(destino.sin_zero),8);
conexao = connect(coisa_socket,(struct sockaddr *)&destino, sizeof(destino));
close (coisa_socket);
if(conexao < 0) {
    printf("A porta esta filtrada ou fechada.\n");
    return 1;
}
printf("A Porta esta aberta!\n");
return 0;
}


Se quiser um exemplo de portscanner em C, pode ver o meu em
http://bugsec.googlecode.com/files/m0nad_portscan.c

Abraços,
  m0nad
Título: Re:C - Sockets - Port Scanner - Dúvida.
Enviado por: spl0w online 31 de Julho , 2011, 03:12:37 AM
opa irmão, fmz a correção, muito obrigado.
vc é o cara.
Título: Re:C - Sockets - Port Scanner - Dúvida.
Enviado por: Reeves online 02 de Agosto , 2011, 01:52:33 AM
m0nad camarada de mais, valeu pela contribuição aqui no fórum!
valeu pela ótima pergunta spl0w, sempre aprendemos juntos!

RESOLVIDO!
Título: Re:C - Sockets - Port Scanner - Dúvida.
Enviado por: spl0w online 02 de Agosto , 2011, 08:26:30 PM
pdcrê, fmz o truta mesmo.

alguem mais aqui do forum programa em C ANSI?

o forum tem canal no irc?

abrass