Xhack

Un forum dedicato all'hacking
 
IndiceIndice  PortalePortale  CalendarioCalendario  FAQFAQ  CercaCerca  RegistratiRegistrati  Lista UtentiLista Utenti  GruppiGruppi  Accedi  

Condividi | 
 

 [C] Invio di email (emulazione di telnet)

Andare in basso 
AutoreMessaggio
BlackLight
Moderatore
Moderatore
BlackLight

Numero di messaggi : 277
Et : 32
Data d'iscrizione : 22.08.07

MessaggioTitolo: [C] Invio di email (emulazione di telnet)   Mar Ott 02, 2007 7:33 pm

Eccovi qui un programmino in C che invia una mail a un destinatario arbitrario, specificando l'IP del server SMTP da usare come argomento:

Codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <netinet/in.h>

#define PORT            25

void addr_init (struct sockaddr_in *addr, int port, long int ip)  {
        addr->sin_family=AF_INET;
        addr->sin_port = htons((u_short) port);
        addr->sin_addr.s_addr=ip;
}

main (int argc, char **argv)  {
        int sd;
        char s[BUFSIZ],input[BUFSIZ];
        char *host;
        int port;
        struct sockaddr_in server,client;
        int sock_size=sizeof(struct sockaddr_in);

        if (argc==1)
                exit(1);

        if (argc==2)  {
                host=argv[1];
                port=PORT;
        }

        if (argc==3)  {
                host=argv[1];
                port=atoi(argv[2]);
        }

        addr_init (&server,port,inet_addr(host));

        if ((sd=socket(AF_INET,SOCK_STREAM,0))<0)
                exit(2);

        if (connect(sd, (struct sockaddr*) &server, sock_size)<0)
                exit(3);

        snprintf (s,BUFSIZ,"HELO %s\r\n",argv[1]);

        if (send(sd,s,strlen(s),0)<0)
                exit(4);
        if (recv(sd,s,sizeof(s),0)<0)
                exit(4);

        printf ("%s",s);
        memset (s,0,sizeof(s));

        printf ("MAIL FROM: ");
        fgets (input,BUFSIZ,stdin);
        input[strlen(input)-1]=0;

        snprintf (s,BUFSIZ,"MAIL FROM: %s\r\n",input);

        if (send(sd,s,strlen(s),0)<0)
                exit(5);
        if (recv(sd,s,sizeof(s),0)<0)
                exit(5);

        printf ("%s",s);
        memset (s,0,sizeof(s));

        printf ("RCPT TO: ");
        fgets (input,BUFSIZ,stdin);
        input[strlen(input)-1]=0;

        snprintf (s,BUFSIZ,"RCPT TO: %s\r\n",input);

        if (send(sd,s,strlen(s),0)<0)
                exit(6);
        if (recv(sd,s,sizeof(s),0)<0)
                exit(6);

        printf ("%s",s);
        memset (s,0,sizeof(s));

        printf ("DATA: ");
        fgets (input,BUFSIZ,stdin);
        input[strlen(input)-1]=0;

        if (send(sd,"DATA\r\n",sizeof("DATA\r\n"),0)<0)
                exit(7);
        if (recv(sd,s,sizeof(s),0)<0)
                exit(7);
        printf ("%s",s);
    memset (s,0,sizeof(s));

        snprintf (s,BUFSIZ,"%s\r\n.\r\n",input);

        if (send(sd,s,strlen(s),0)<0)
                exit(8);
        if (recv(sd,s,sizeof(s),0)<0)
                exit(8);

        printf ("%s",s);
        memset (s,0,sizeof(s));

        if (send(sd,"QUIT\r\n",6,0)<0)
                exit(9);
        if (recv(sd,s,sizeof(s),0)<0)
                exit(9);
        printf ("%s",s);
        memset (s,0,sizeof(s));

        close(sd);
}

_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/CM/CC/E/IT/LS/M d-(--) s:- a-- C+++$ UBL++++$ P+++ L+++++$ E- W+++ N+ o? K? w-- !O !M>+ !V PS+++ PE-- Y++ PGP+ !t !5 !X R+ tv-- b++>+++ DI? D+ G>+++ e++>++++ h r++ y+++
------END GEEK CODE BLOCK------

Codice:
blacklight@nightmare:/$ touch figa
touch: cannot touch `figa': Permission denied
Torna in alto Andare in basso
Visualizza il profilo http://blacklight.gotdns.org
 
[C] Invio di email (emulazione di telnet)
Torna in alto 
Pagina 1 di 1

Permessi di questa sezione del forum:Non puoi rispondere agli argomenti in questo forum
Xhack :: Programmazione :: C/C++-
Vai verso: