Índice
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:
- La dirección de correo de la persona a suplantar.
- Dirección de correo de facebook de la persona a quién se va a engañar.
- Un sistema para enviar correos SMTP
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:
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: [email protected]
To: [email protected]
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 [email protected]"
#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 = '[email protected]'
receivers = ['[email protected]']
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 o comentando abajo.