Probleme boucle do while
Résolu
miki
-
miki -
miki -
Bonjour,a tous voila je realise un petit programme simple de brute force ftp le probleme etant que l'une de mes boucle de fonctionne pas correctement ou du moin elle continu de boucle infiniment.Je poste la première ébauche du code :
#include <stdio.h>
#include <stdlib.h>
#include<winsock2.h>
#include<string.h>
int main(int argc, char *argv[])
{
char user[200]={0};
char buffer[200]={0};
char pass[200]={0};
char verification[]="530 Login or password incorrect!";
int i;
FILE *pu;
FILE *pp;
pp=fopen("user.txt","r");//ouverture du fichier texte contenant les nom d'utilisateur
fgets(user,sizeof user,pp);//lecture de la première ligne dans le txt et ecriture dans user
pu=fopen("pass.txt","r");//ouverture du fichier txt contenant les pass
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
/* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
sock = socket(AF_INET, SOCK_STREAM, 0);//creation d'une soket
sin.sin_addr.s_addr = inet_addr("192.168.1.4");//parametrage de la soket
sin.sin_family = AF_INET;
sin.sin_port = htons(21);
connect(sock, (SOCKADDR *)&sin, sizeof(sin));// connection sur l'hote
recv(sock, buffer, sizeof(buffer), 0);//reception des donnees envoyer par le serveur ftp
printf("%s\n",buffer);
do
{
send(sock, user, sizeof(user), 0);//envoie du premier nom d'utilisateur precede de la commande user
for(i=0;i<200;i++)//boucle pour vider le buffer
{
buffer[i]=0;
}
recv(sock, buffer, sizeof(buffer), 0);
fgets(pass,sizeof pass,pu);//lecture du fichier txt pass
printf("%s\n",pass);
send(sock, pass, sizeof(pass), 0);//envoi du pass celui-ci etant precedé de la commande pass
for(i=0;i<200;i++)//2eme boucle pour vider le buffer
{
buffer[i]=0;
}
recv(sock, buffer, sizeof(buffer), 0);//reception des données envoyer par le serveur
printf("%s\n",buffer);
strcmp(buffer,verification);//comparaison des deux chaines pour savoir si le pass et correct ou non
}while(strcmp(buffer,verification)==0);//si la chaine buffer et egal à la chaine verification on boucle
closesocket(sock);
WSACleanup();
system("PAUSE>0");
return 0;
}
le probleme etant que normalement lorsque le pass et bon le serveur renvoi une chaine differente de celle contenu dans verification et malgre cela meme si le pass et bon le programme boucle quand meme pourriez vous m'aidez a comprendre pourquoi sil vouplait
#include <stdio.h>
#include <stdlib.h>
#include<winsock2.h>
#include<string.h>
int main(int argc, char *argv[])
{
char user[200]={0};
char buffer[200]={0};
char pass[200]={0};
char verification[]="530 Login or password incorrect!";
int i;
FILE *pu;
FILE *pp;
pp=fopen("user.txt","r");//ouverture du fichier texte contenant les nom d'utilisateur
fgets(user,sizeof user,pp);//lecture de la première ligne dans le txt et ecriture dans user
pu=fopen("pass.txt","r");//ouverture du fichier txt contenant les pass
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
/* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
sock = socket(AF_INET, SOCK_STREAM, 0);//creation d'une soket
sin.sin_addr.s_addr = inet_addr("192.168.1.4");//parametrage de la soket
sin.sin_family = AF_INET;
sin.sin_port = htons(21);
connect(sock, (SOCKADDR *)&sin, sizeof(sin));// connection sur l'hote
recv(sock, buffer, sizeof(buffer), 0);//reception des donnees envoyer par le serveur ftp
printf("%s\n",buffer);
do
{
send(sock, user, sizeof(user), 0);//envoie du premier nom d'utilisateur precede de la commande user
for(i=0;i<200;i++)//boucle pour vider le buffer
{
buffer[i]=0;
}
recv(sock, buffer, sizeof(buffer), 0);
fgets(pass,sizeof pass,pu);//lecture du fichier txt pass
printf("%s\n",pass);
send(sock, pass, sizeof(pass), 0);//envoi du pass celui-ci etant precedé de la commande pass
for(i=0;i<200;i++)//2eme boucle pour vider le buffer
{
buffer[i]=0;
}
recv(sock, buffer, sizeof(buffer), 0);//reception des données envoyer par le serveur
printf("%s\n",buffer);
strcmp(buffer,verification);//comparaison des deux chaines pour savoir si le pass et correct ou non
}while(strcmp(buffer,verification)==0);//si la chaine buffer et egal à la chaine verification on boucle
closesocket(sock);
WSACleanup();
system("PAUSE>0");
return 0;
}
le probleme etant que normalement lorsque le pass et bon le serveur renvoi une chaine differente de celle contenu dans verification et malgre cela meme si le pass et bon le programme boucle quand meme pourriez vous m'aidez a comprendre pourquoi sil vouplait
A voir également:
- Probleme boucle do while
- My people do - Télécharger - Organisation
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Do not turn off target traduction - Forum Samsung
- Samsung galaxy tab S Bloquer Downloading do not turn off target - Forum Téléphones & tablettes Android
- What you do what you say - Forum Audio