les comparto este script que realiza para sacar emails de una web usando una arañita que recorre enlaces internos...
lo comparto por si se les ocurre modificaciones poder mejorarlo
repo git > https://github.com/Boredsoft/email-spider (https://github.com/Boredsoft/email-spider)
** acepta parametros
-url obligatorio con formato http://somthing.com/ (la / final es necesaria)
-max_links maxima cantidad de links a analizar antes de cortar el programa y guardar
-max_emails maxima cantidad de emails a obtener antes de finalizar el programa y guardar
-external acepta links externos, pero si no se usa junto con max_links o max_emails el programa nunca se detendra :(
** si la conexion de internet se cae el programa espera 30 segundos para reanudarse
** no se traba con enlaces muertos
** uso de "sort" para revisar enlaces con mayor probabilidad de tener email despues de cierto tiempo
Citar
fix 3.0
soporte para mas sistemas operativos
mejor detección de emails mediante el regex
fix v 2.0
ahora detecta mas tipos de urls internas
ahora detecta si es windows o linux para usar el comando correcto de limpiar pantalla.
# -*- coding: utf-8 -*-
## by kase: kase@boredsoft.com colaboraciones: EleKtro H@cker
import requests,re,os,time,sys
from argparse import ArgumentParser, RawTextHelpFormatter
parser = ArgumentParser(description="email spider", version="3.0", formatter_class=RawTextHelpFormatter)
## -url
parser.add_argument("-url", dest="url", help='url a analizar en formato http://web.com/')
## -max_links links
parser.add_argument("-max_links", dest="max_links", help='maximo de links internos a analizar')
## -max_emails emails
parser.add_argument("-max_emails", dest="max_emails", help='maximo de emails a analizar')
## -external default False
parser.add_argument("-external", dest="external", help='investigar links externos [si|no]')
argumento = parser.parse_args()
url_web = argumento.url
url_web_limpio = argumento.url.replace('http://','').replace('/','').replace('www.','')
links_internos = ['/']
links_visitados = []
emails_capturados = []
mailsrch = re.compile(r"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum|mx|com\.mx|xxx|tv|tk)\b")
#old mailsrch = re.compile(r'[\w\-][\w\-\.]+@[\w\-][\w\-\.]+[a-zA-Z]{2,6}')
urlssrch = re.compile(r'href=[\'"]?([^\'" >]+)')
contador = 0
while links_internos:
try:
## saca el ultimo link de la lista
##print links_internos
link = links_internos.pop()
## añade ese link a visitados, para no volverlo a tener en cuenta
links_visitados.append(link)
if link[0] == '/' or link == '':
r=requests.get(url_web+''+link)
else:
r=requests.get(link)
links = urlssrch.findall( r.text)
##print 'xxxxxxxxxxxxx', links
emails = mailsrch.findall(r.text)
## guarda todos los emails que se topa checando que no existan repeticiones
for email in emails:
if email not in emails_capturados:
emails_capturados.append(email)
## guarda todos los links internos que se tope checando que no existan en la cola o en vistados
for link in links:
if not argumento.external: ## verifica si usar enlaces externos o no
if link[0] == '/' or url_web_limpio in link:
if link not in links_internos and link not in links_visitados:
links_internos.append(link)
elif argumento.external == 'si':
if link not in links_internos and link not in links_visitados:
links_internos.append(link)
contador +=1
## informacion en pantalla
if contador % 50 == 0:
if sys.platform.startswith('win'):
# Windows
os.system('cls')
elif sys.platform.startswith('linux'):
# Linux
os.system('clear')
elif sys.platform.startswith('cygwin'):
# Windows (Cygwin)
os.system('cmd /c cls')
elif sys.platform.startswith('darwin'):
# MacOSX
os.system('clear')
elif sys.platform.startswith('freebsd'):
# FreeBSD
os.system('clear')
print 'web atacada:', url_web
print 'total de emails obtenidos:', len(emails_capturados)
print 'urls recorridas: ', len(links_visitados)
print 'urls faltantes: ', len(links_internos)
print '----- (~._.)~ '
## pequeño arreglo para tener mas chanse de optener emails en web grandes
## primero analiza los enlaces internos mas cortos y despues de un tiempo, analiza los mas largos primero
## en paginas tipo blog, los enlaces mas largos son los de las post con comentarios donde posiblemente existan emails
if contador %10000 == 0:
if contador <= 10000:
links_internos.sort(reverse=True)
else:
links_internos.sort()
## si ahi un maximo de links internos rompe el ciclo y termina
if argumento.max_links:
if contador >= int(argumento.max_links):
break
## si ahi un maximo de emails capturados rompe el ciclo y termina
if argumento.max_emails:
if len(emails_capturados) >= int(argumento.max_emails):
break
## si la conexion se cae duerme el proceso 20 segundos y reintenta
except:
r = os.system('ping -c 1 google.com') ## checa si hay conexion de internet
if r == 0: #si existe conexion elimina el enlace muerto
link = links_internos.pop()
else: ##sino espera 20 segundos a que se reanude la conexion de internet
time.sleep(30)
if sys.platform.startswith('win'):
# Windows
os.system('cls')
elif sys.platform.startswith('linux'):
# Linux
os.system('clear')
elif sys.platform.startswith('cygwin'):
# Windows (Cygwin)
os.system('cmd /c cls')
elif sys.platform.startswith('darwin'):
# MacOSX
os.system('clear')
elif sys.platform.startswith('freebsd'):
# FreeBSD
os.system('clear')
print 'web atacada:', url_web
print 'total de emails obtenidos:', len(emails_capturados)
print 'urls recorridas: ', len(links_visitados)
print 'urls faltantes: ', len(links_internos)
print '----- (~._.)~ CONEXION CAIDA, ESPERANDO 30 SEGUNDOS (X__X)'
f = open('%s.txt' % url_web.replace('http://','').replace('/','').replace('.','_'),'w+')
f.write("\n".join(emails_capturados))
f.close()
mejoras en las que pueden ayudarme
no soy muy bueno con expresiones regulares
estas me funcionan en el 90 de los casos, pero derrepente tienen errores (como cuando alguien usa el @ como a/o, o no detecta urls internas si no comienzan con /)
mailsrch = re.compile(r'[\w\-][\w\-\.]+@[\w\-][\w\-\.]+[a-zA-Z]{1,4}')
urlssrch = re. compile(r'href=[\'"]?/([^\'" >]+)')
funciones que pienso agregar a futuro
** comandos para pausar las tarea y guardar donde se quedaron
** serializar cada cierto tiempo la tarea para no perder el trabajo cuando se reinicie la computadora forzosamente
::)
yo le pondria que ademas de esto busque con dorks en google paginas que puedan tener mails
spamer ;D
buen aporte jeje
interesante.... explicame un poco mas la idea, y podria interesarme sacarla :D
estoy por comenzar una campaña de mailing de varias webs... mas emails a disposicion no estaria mal...
para burlar los filtros antispam uso send blaster.... auke e considerado hacer todo una aplicacion yo mismo para mandar los emails y sacarlos de webs y contruir listas e base a criterios
pues me refiero a que ademas de poderle pasar de parametro la web a buscar mails usar tambien avanzadas en google como estas:
inurl:contact
inurl:nosotros.php
tambien se puede usar intitle:contactenos
o cosas asi
en los que es bastante probable encontrar mails eso seguro aumentaria bastante la lista de mails a spamear :D
Cita de: daryo en 29 Abril 2013, 21:43 PM
pues me refiero a que ademas de poderle pasar de parametro la web a buscar mails usar tambien avanzadas en google como estas:
inurl:contact
inurl:nosotros.php
tambien se puede usar intitle:contactenos
o cosas asi
en los que es bastante probable encontrar mails eso seguro aumentaria bastante la lista de mails a spamear :D
pues tienes razon en eso, pero por ejemplo yo uso la araña para solarta en una web de tematica X de ese modo se que sus usuarios estan interesados en el tema..
quisas pueda hacer una busqueda en google por palabras algo asi como:
"palabra" @hotmail
y luego recorrer los enlaces
asi encontraria emails de tematicas que me interesen.
interesante, con un poco de ingenio podrías recorrer miles de webs mientras dejas el script en un servidor mandando spam xD
@Kase
He probado esto:
Kase.py -url http://elhacker.net/
Output:
carlos@cool
Solo me devuelve un "email", ¿Eso es normal? xD
Los parámetros de maxpages y maxmails son opcionales, ¿no? (también los he probado pero obtengo lo mismo).
PD: Lo has testeado en Windows?
PD2: Si esto funciona corréctamente le pongo una chincheta.
Muy bueno.
Cita de: EleKtro H@cker en 30 Abril 2013, 20:22 PM
@Kase
He probado esto:
Kase.py -url http://elhacker.net/
Output:
carlos@cool
Solo me devuelve un "email", ¿Eso es normal? xD
Muy bueno.
lo que pasa es que la pagina del hacker solo tiene links del tipo
<a href='www.elhacker.net/enlace_interno'>
y la expresion regular que uso solo esta preparada para buscar
<a href='/encalce_interno/'>
como veras, ahi webs que son inmunes a esta expresion regular.. por ejemplo ah algunas que solo tienes el dominio y todo lo interno se maneja mediante
<a href='www.elhacker.net?get=key' >
hacer una expresion regular que contemple todas las opciones no es imposible...
pero mi conocimiento en expresiones regulares es limitado, por eso coloque aqui el script, para ver si me ayudan a mejorarlo...
CitarLos parámetros de maxpages y maxmails son opcionales, ¿no? (también los he probado pero obtengo lo mismo).
los parametros max_linsk, y max_emails si son opcionales, los coloque por que la primera web que ataque tenia mas de 80,000 enlaces internos y tras 24 horas solo abia recorrido 40,000 xD
Quiero hacer un sistema completo que pueda guardar los emails en una bd con etiquetas para saber los intereses del email. que este mismo pueda usar la araña y que a su vez puedan mandar los emails con formato html + txt_pano y mandar 1 cada x segundos (programado) para burlar filtros anti spam
y de paso que pueda tambien aceptar importaciones csv y permita mandar los emails personalizados con nombre y otros datos...
con tiempo creo poder hacerlo en 1 semana, el problema es que ando muy cortito de dinero, y debo darle prioridad a un par de webs pendientes para las que me contrataron. aun asi, les informo si me lanzo a hacerlo en 1 semana o dos
CitarPD: Lo has testeado en Windows?
os.system('clear')
esta linea es para limpiar pantalla en linux, en windows creo que es diferente.. pero con poner la correcta deberia funcionar
CitarPD2: Si esto funciona corréctamente le pongo una chincheta.
eso seria genial :D ojala pronto quede la version que detecte mejor los enlaces internos.
por que el sistema que unifique la recoleccion y el envio de emails ya no es scripting, en eso usaria objetos y un framework como django para montar toda una buena interfaz de administracion.
Cita de: Kase en 30 Abril 2013, 20:59 PMos.system('clear')
ups, de haberlo visto estaba claro, no me fijé en el código la verdad xD solo le he dado un par de vueltas al regex.
Sobre la parte de mejorar la dinámica de los RegEx para aceptar el tipo de urls que has comentado no debería ser muy dificil, solo tienes que usar el operador "|" y añadir una expresión más a la derecha, así se dará por válida cualquiera de las dos expresiones (si se encuentra una de las dos).
Ejemplo:
(r'^href=expresión1$|^href=expresión2$')
Puedes usarlo las veces que quieras, aunque para usar las expresiones regulares extendidas primero se necesita que el regex que usa python séa el extendido... no lo he comprobado personálmente pero vamos, es python, me imagino que debe poder aceptar esos operadores.
En el regex del Mail usas {1,4}, pero yo lo cambiaria por {2,6} ya que existen dominios de 6 caracteres: http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains y por lo que véo no existe ningúno de 1 solo caracter.
(Ya... quizás solo un 0,001% de la población mundial usa esos dominios... pero así es como se consigue la perfección xD.)
Espero que tu script vaya creciendo y mejorando poco a poco para que le podamos sacar todo el beneficio posible,
¡ESO SI, SIEMPRE SIN MALAS INTENCIONES! .
EDITO: Como innovación estaría bien que en una próxima versión añadas una opción para obtener sólamente los mails que acaben en ".net",".com" etc, a elección del usuario.
Gracias por compartir.
Un saludo!
ya arregle lo de detectar mas tipos de webs
al final no lo ise con una expresion regular, por que ahi muchas variaciones
ahora detecto todos los href en bruto, y luego los filtro
si tienen el nombre de la web en la url o si empiezan con un / se incluye como enlace interno, en su defecto se descarta
de este modo tambien resuelvo el problema de recorrer subdominios :D
url_web_limpio = argumento.url.replace('http://','').replace('/','').replace('www.','')
if not argumento.external: ## verifica si usar enlaces externos o no
if link[0] == '/' or url_web_limpio in link:
if link not in links_internos and link not in links_visitados:
links_internos.append(link)
elif argumento.external == 'si':
if link not in links_internos and link not in links_visitados:
links_internos.append(link)
ahora si
EleKtro H@cker puedes hacer un
CitarKase.py -url http://elhacker.net/
pero si no usar un -max_emails 500 o -max_urls 10000 el programa nunca se detendra, el hacker es inmenso!
es en estos casos cuando la idea de
daryo serviria
estaria padre poder lanzar el script con un
Citarkase.py -google 'insite:elhacker.net @hotmail'
de tal modo que aprobechemos el indice de google para que nos devuelva las urls indexeadas del hacker donde algun usuario dejo su correo electronico
PD: ahora si debo volver al trabajo!!! no se cuando tenga la siguiente version D:
Que buen aporte bro.
Se mira bien.... le daré una leida a ver si se me ocurre alguna idea para expandirlo
Saludos..! :P
La condicional donde detectas si es Win o Linux da error de sintaxis (al menos en py 2.7), mira a ver si lo puedes arreglar...
De paso te la extiendo por si quieres añadir más OS:
import sys,os
if sys.platform.startswith('win'):
# Windows
os.system('cls')
elif sys.platform.startswith('linux'):
# Linux
os.system('clear')
elif sys.platform.startswith('cygwin'):
# Windows (Cygwin)
os.system('cmd /c cls')
elif sys.platform.startswith('darwin'):
# MacOSX
os.system('clear')
elif sys.platform.startswith('freebsd'):
# FreeBSD
os.system('clear')
PD: No estoy seguro si el comando de MACOS es el correcto, lo he googleado un poco.
Saludos
Tal y como tienes ahora mismo el regex del email, no acepta este tipo de emails (debería):
"elektro69#@maniac.com"
Pero estos si los acepta (no debería):
"..elektro..@maniac.com"
"""""""elektro@maniac.com"
Lo mismo con el resto de caracteres especiales válidos para un email, no los acepta según el orden en el que estén.
He optimizado bastante el regex del email, mira a ver si puedes usarlo en python:
"^(?=.{1,254}$)[^\.]([\w-\!\#\$\%\&\'\*\+\-\/\=\`\{\|\}\~\?\^]+)([\.]{0,1})([\w-\!\#\$\%\&\'\*\+\-\/\=\`\{\|\}\~\?\^]+)[^\.]@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$"
La parte local cumple todos estos requisitos:
CitarThe local-part of the e-mail address may use any of these ASCII characters:
Uppercase and lowercase English letters (a-z, A-Z)
Digits 0 to 9
Characters ! # $ % & ' * + - / = ? ^ _ ` { | } ~
Character . (dot, period, full stop) provided that it is not the first or last character, and provided also that it does not appear two or more times consecutively.
PD: también la detección de 2 puntos en la parte local: "a.b.c@hotmail.com"
Lo de sólo letras inglesas me lo he saltado porque juraría haber visto emails con la C trencada "Ç" y digo yo que los chinos, egipcios, etc... no usarán letras inglesas para sus emails.
La parte del dominio no la he exprimido del todo, aún tengo que informarme sobre los detalles, pero acepta por ejemplo "user@blabla.com.edu" y "user@blabla.museum", así que por el momento funciona genial el regex.
También falta limitar el regex a cadenas de menos de 254 caracteres según el límite válido para la longitud de un email.He actualizado el RegEx para que solo encuentre cadenas de menos de hasta 254 caracteres.
Un saludo!
sorprendente! me estas enctuciasmando a llebar esto mas alla del simple script y convertirlo en un sistema... en unas horas actualizo con calma :D
Hola,
Vengo a trollear un poco xD
Sabiais que
asdasd@64.233.161.83
Es un correo valido ? xD Lo propongo como idea nada mas.. lo mismo pasa con las direcciones IPv6 pero esas no las admite ni gmail xD
Saludos
pues yo no lo sabia xD y para nada me parece trolleamiento que nos aclares esas cosas.
estaría bien que aportases más datos al tema si ves que nos hemos saltado algún otro detalle como el que has comentado, para hacer el regex perfecto.
..como por ejemplo saber el límite de "Second-level and lower level domains" de un email, si es que hubiera algún límite (sin tener en cuenta el límite de caracteres de un email).
Bueno, un saludo!
Técnicamente puede haber hasta 127 sub niveles de dominio. Osease, w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.........com xD
En ningún caso, el dominio (completo) puede exceder los 253 caracteres y los nombres de los "sub-dominios" no pueden exceder de los 63. Esto significa básicamente que en: parte3.parte2.com, parte3 o parte2 no pueden exceder de los 63 caracteres.
Mas info aquí:
2.3.4. Size limits
http://tools.ietf.org/html/rfc1035
PD: El dominio mas largo del mundo xD
http://www.thelongestdomainnameintheworldandthensomeandthensomemoreandmore.com/
http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.com
Son iguales de longitud (63 caracteres) pasa que este tipo de fuente... no es monospace xD
Básicamente (según mis cálculos) lo que quiere decir esto es que en un correo (nombre@dominio.com) el nombre no debería de exceder los 63~64 caracteres para que se adapte a cualquier dominio.
Y si queréis una cuenta email con un dominio largo..
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com ofrece cuentas gratuitas xD
Saludos
Citar"^(?=.{1,254}$)[^\.]([\w-\!\#\$\%\&\'\*\+\-\/\=\`\{\|\}\~\?\^]+)([\.]{0,1})([\w-\!\#\$\%\&\'\*\+\-\/\=\`\{\|\}\~\?\^]+)[^\.]@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$"
no me a servido xD no se por que, pero marca error... y por mas que le busco y le busco, no lo logro..
pero esta otra si funciono
mailsrch = re.compile(r"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum|mx|com\.mx|xxx|tv|tk)\b")
y en otras noticias, estuve trasteando el codigo html de google ala par que la api de custom search...
la api es una basura diseñada para no explotarse conestos fines u__u
pero el codigo html no... el chiste es desactiva el javascript, pero al pedir la web mediante python automaticamente la sirve preparada para no usar javascript
entonces nos encontramos con que la url victima viene en formato
Citar<a href="/url?q=http://www.elhacker.net/&sa=U&ei=JQeCUdz3DoK49QSYvoDAAQ&ved=0CCEQFjAA&usg=AFQjCNE8PCIInwOQ84p63ylCDShXtjtiAA">
quisas una expresion regular pueda identificar los links /url? y extraer de los parametros get la web a la que se quiera atacar...
nuevamente mi conocimiento es bajo en expresiones regulares u__u
aun asi espero hacer un script alterno al cual se le puedan pasar parametros de busqueda de google...
asiendo este script, me lanzo a hacer el sistema mas completo xD
porcierto aqui esta el que hace busquedas en google :3
no esta terminado, por que google te banea aveces.. xD pero igual a alguien le interesa.
# -*- coding: utf-8 -*-
## by kase: kase@boredsoft.com
import requests,re,os,time,sys
from argparse import ArgumentParser, RawTextHelpFormatter
parser = ArgumentParser(description="google dorks email spider ", version="1.0", formatter_class=RawTextHelpFormatter)
## -url
parser.add_argument("-b", dest="busqueda", help='Cadena a buscar en google entre comillas')
## -max_links links
parser.add_argument("-p", dest="paginas", help='Maximo de paginas a analizar en google (cada pagina contiene 10 enlaces) por defecto 10')
argumento = parser.parse_args()
dominio = 'http://google.com.mx'
mailsrch = re.compile(r"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum|mx|com\.mx|xxx|tv|tk)\b")
urlssrch = re.compile(r'href=[\'"]?([^\'" >]+)')
googlesrch = re.compile(r'href=[\'"]?/url\?q=([^\'" &]+)')
contador = 0
links_internos = []
links_visitados = []
emails_capturados = []
if not argumento.paginas:
paginas = 10
else:
paginas = argumento.paginas
## recorre las paginas de google (de 10 en 10)
for x in range(0,paginas):
r=requests.get(dominio+''+'/search?q=%s&start=%s&num=100' % (argumento.busqueda,contador))
contador +=100
links_google = googlesrch.findall( r.text)
##recorre los links que arroje los resultados de google
for link in links_google:
time.sleep(15)
r2=requests.get(link)
emails = mailsrch.findall(r2.text)
##detecta los emails encontrados en la web de resultado
for email in emails:
if email not in emails_capturados:
emails_capturados.append(email)
## recorre un nivel en los enlaces de la web resultado bajo la teoria de que deben ser de tematica similar
links = urlssrch.findall( r2.text)
########## informe de pantalla
if sys.platform.startswith('win'):
# Windows
os.system('cls')
elif sys.platform.startswith('linux'):
# Linux
os.system('clear')
elif sys.platform.startswith('cygwin'):
# Windows (Cygwin)
os.system('cmd /c cls')
elif sys.platform.startswith('darwin'):
# MacOSX
os.system('clear')
elif sys.platform.startswith('freebsd'):
# FreeBSD
os.system('clear')
print 'parametro de busqueda: ' , argumento.busqueda
print 'pagina checada: ', contador/10
print 'paginas por checar: ', paginas - (contador/10)
print 'emails capturados: ', len(emails_capturados)
print 'url victima actual: ', r2.url
##fin de informe de pantalla
while links:
try:
link = links.pop()
if not link[0] == '/':
r3=requests.get(link)
##else: falta codigo para detectar el dominio :(
except:
ci = os.system('ping -c 1 google.com') ## checa si hay conexion de internet
if ci == 0: #si existe conexion elimina el enlace muerto
link = links.pop()
#guarda emails de el nivel 2.
emails = mailsrch.findall(r3.text)
for email in emails:
if email not in emails_capturados:
emails_capturados.append(email)
f = open('google_%s.txt' % argumento_busqueda.replace('.','_'),'w+')
f.write("\n".join(emails_capturados))
f.close()
hola amigo
estoy interesado en el tema pero no se como usar el codigo me puedes explicar?
gracias
Estaría más bueno todavía, si también se pudiera con paginas con dominio no http.. Algo asi como..
martasicaria.designweb.edu.ar <--- SÓLO UN EJEMPLO, ESA PAGINA NO EXISTE.. No se si han entendido a lo que me refería.. Vamos a seguir aportando a ver si logramos un SUPER-SYSTEM!
Hola buenas, perdón por resucitar el hilo, pero necesito este script :P.
Estoy usándolo en Ubuntu 12.04 LTS y cuando uso el parámetro max_emails, y encuentra un email no lo muestra por pantalla. ¿Alguien sabe porqué?
EDIT: Por ejemplo si pongo -url http://victima.net -max_emails 1 no me muestra nada por pantalla, cuando debería mostrarme el primer email que encuentre. ¿No?.
Un saludo.