conectar a um servidor ftp [RESOLVIDO]

1. conectar a um servidor ftp [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/03/2024 - 15:11h

boas glr.
codei um bruteforce em c mas não consigo fazer funcinar, estou testando usando vsftpd na minha maquina...
apos enviar USER e PASS para fazer login, eu não consigo continuar recebendo dados, como por exemplo status code.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <errno.h>
int main(){
char result[256];
char user[50];
char word[256];
int sock, cnx;
char ip[15];
FILE *open;
char buf[256];
printf("BruteFTP v1.0 by major\n");
printf("[i]=-************-=[i]\n");
printf("*******************************\n");
printf("IP: ");
scanf("%[^\n]", ip);
printf("User: ");
getchar();
scanf("%[^\n]", user);
printf("Wordlist: ");
getchar();
scanf("%[^\n]", word);
open = fopen(word, "rb");
if(open == NULL){
perror("I/O Error");
exit(EXIT_FAILURE);
} else{
struct sockaddr_in skt={
.sin_family=AF_INET,
.sin_port = htons(21),
.sin_addr.s_addr = inet_addr(ip)
};
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock == -1){
perror("Erro de abertura");
exit(EXIT_FAILURE);
}
else{
cnx = connect(sock, (struct sockaddr_in *) &skt, sizeof(skt));
if(cnx == -1){
perror("Imposivel conectar");
exit(EXIT_FAILURE);
}
else{
strcat(buf, "USER ");
strcat(buf, user);
send(sock, buf, strlen(buf), 0);
read(sock, result, 256);
puts(result);
close(sock);
}
close(cnx);
close(sock);
}
}

return 0;
}



  


2. Re: conectar a um servidor ftp [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 24/03/2024 - 03:13h

Faz muito tempo que eu vi isso na faculdade (27 ou 28 anos) mas, que eu me lembre, o canal de comandos do FTP é orientado a linha, e cada linha tem de terminar com o par CR+LF (em C, seria a string "\r\n").

No seu código, eu não identifiquei que você tenha enviado esses caracteres após o nome do usuário.

Além disso, se você estiver trabalhando com sockets que não tenham sido explicitamente marcados como não-blocantes, eu tenho quase certeza de que se você pedir para ler 256 bytes, a função read() vai ficar esperando chegarem exatamente 256 bytes antes de retornar. Aqui seria um daqueles casos em que o mais prudente seria ter um socket não-blocante, e usar select() ou poll() para aguardar a chegada de dados e, uma vez que tais dados tenham chegado, ler em blocos para um buffer, e ver se encontrou uma ou mais linhas que você possa interpretar como possíveis valores válidos de resposta do protocolo, e tomando as decisões no seu programa de acordo o tipo e o conteúdo das respostas recebidas.


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


3. Re: conectar a um servidor ftp [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/03/2024 - 15:07h


obrigado por responder, mas já resolvi o problema, me desculpe por tomar seu tempo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts