Autor
|
Tema: script para sacar emails de paginas webs [python] [v3.0] (Leído 22,443 veces)
|
The_Mushrr00m
Desconectado
Mensajes: 163
"Don't worry, be Hacked........"
|
Que buen aporte bro. Se mira bien.... le daré una leida a ver si se me ocurre alguna idea para expandirlo Saludos..!
|
|
|
En línea
|
«No hay camino para la verdad, la verdad es el camino»
|
|
|
Eleкtro
Ex-Staff
Conectado
Mensajes: 9.878
|
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
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Conectado
Mensajes: 9.878
|
Tal y como tienes ahora mismo el regex del email, no acepta este tipo de emails (debería): 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: The 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!
|
|
« Última modificación: 1 Mayo 2013, 18:20 pm por EleKtro H@cker »
|
En línea
|
|
|
|
|
#!drvy
|
Hola, Vengo a trollear un poco xDSabiais que 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
|
|
« Última modificación: 2 Mayo 2013, 03:20 am por drvy | BSM »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Conectado
Mensajes: 9.878
|
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!
|
|
|
En línea
|
|
|
|
#!drvy
|
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 limitshttp://tools.ietf.org/html/rfc1035PD: El dominio mas largo del mundo xD http://www.thelongestdomainnameintheworldandthensomeandthensomemoreandmore.com/http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.comSon 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
|
|
« Última modificación: 2 Mayo 2013, 07:35 am por drvy | BSM »
|
En línea
|
|
|
|
Kase
Desconectado
Mensajes: 1.288
programa bonito ¬¬
|
"^(?=.{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 <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
|
|
|
En línea
|
|
|
|
Kase
Desconectado
Mensajes: 1.288
programa bonito ¬¬
|
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()
|
|
|
En línea
|
|
|
|
binario010101
Desconectado
Mensajes: 136
|
hola amigo
estoy interesado en el tema pero no se como usar el codigo me puedes explicar?
gracias
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
La Policía alerta de emails y webs falsos que piden datos bancarios para la ...
Noticias
|
wolfbcn
|
0
|
2,383
|
4 Abril 2011, 22:18 pm
por wolfbcn
|
|
|
Simple tool para inyectar pass en páginas webs
Hacking
|
rembolso
|
8
|
9,556
|
19 Mayo 2012, 18:21 pm
por m0rf
|
|
|
Servidores para páginas webs
Desarrollo Web
|
CarlStanks
|
5
|
3,424
|
7 Febrero 2013, 18:24 pm
por patofeo
|
|
|
Algún buen programa para extraer direcciones de emails de paginas web
Software
|
Mister12
|
0
|
1,768
|
10 Agosto 2013, 22:32 pm
por Mister12
|
|
|
Script para renovar anuncios en webs gratuitas!
Programación General
|
cron0ar8R
|
8
|
8,527
|
21 Febrero 2014, 12:32 pm
por cron0ar8R
|
|