elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  script para sacar emails de paginas webs [python] [v3.0]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: script para sacar emails de paginas webs [python] [v3.0]  (Leído 16,991 veces)
The_Mushrr00m

Desconectado Desconectado

Mensajes: 163


"Don't worry, be Hacked........"


Ver Perfil WWW
Re: script para sacar emails de paginas webs [python] [v2.0]
« Respuesta #10 en: 1 Mayo 2013, 06:16 am »

Que buen aporte bro.
Se mira bien.... le daré una leida a ver si se me ocurre alguna idea para expandirlo

Saludos..!  :P


En línea

«No hay camino para la verdad, la verdad es el camino»

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: script para sacar emails de paginas webs [python] [v2.0]
« Respuesta #11 en: 1 Mayo 2013, 12:36 pm »

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:
Código
  1. import sys,os
  2.  
  3. if sys.platform.startswith('win'):
  4.    # Windows
  5.    os.system('cls')
  6. elif sys.platform.startswith('linux'):
  7.    # Linux
  8.    os.system('clear')
  9. elif sys.platform.startswith('cygwin'):
  10.    # Windows (Cygwin)
  11.    os.system('cmd /c cls')
  12. elif sys.platform.startswith('darwin'):
  13.    # MacOSX
  14.    os.system('clear')
  15. elif sys.platform.startswith('freebsd'):
  16.    # FreeBSD
  17.    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
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: script para sacar emails de paginas webs [python] [v2.0]
« Respuesta #12 en: 1 Mayo 2013, 18:01 pm »

Tal y como tienes ahora mismo el regex del email, no acepta este tipo de emails (debería):
Código:
"elektro69#@maniac.com"

Pero estos si los acepta (no debería):
Código:
"..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:

Código:
"^(?=.{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:
Citar
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


Kase


Desconectado Desconectado

Mensajes: 1.288


programa bonito ¬¬


Ver Perfil WWW
Re: script para sacar emails de paginas webs [python] [v2.0]
« Respuesta #13 en: 1 Mayo 2013, 20:29 pm »

sorprendente! me estas enctuciasmando a llebar esto mas alla del simple script y convertirlo en un sistema... en unas horas actualizo con calma :D
En línea

#!drvy


Desconectado Desconectado

Mensajes: 5.635



Ver Perfil WWW
Re: script para sacar emails de paginas webs [python] [v2.0]
« Respuesta #14 en: 2 Mayo 2013, 03:17 am »

Hola,

Vengo a trollear un poco xD

Sabiais que

Código:
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
« Última modificación: 2 Mayo 2013, 03:20 am por drvy | BSM » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.709



Ver Perfil
Re: script para sacar emails de paginas webs [python] [v2.0]
« Respuesta #15 en: 2 Mayo 2013, 06:35 am »

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


Desconectado Desconectado

Mensajes: 5.635



Ver Perfil WWW
Re: script para sacar emails de paginas webs [python] [v2.0]
« Respuesta #16 en: 2 Mayo 2013, 07:05 am »

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
« Última modificación: 2 Mayo 2013, 07:35 am por drvy | BSM » En línea

Kase


Desconectado Desconectado

Mensajes: 1.288


programa bonito ¬¬


Ver Perfil WWW
Re: script para sacar emails de paginas webs [python] [v3.0]
« Respuesta #17 en: 2 Mayo 2013, 08:31 am »

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

Código
  1. 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")
  2.  




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/&amp;sa=U&amp;ei=JQeCUdz3DoK49QSYvoDAAQ&amp;ved=0CCEQFjAA&amp;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 Desconectado

Mensajes: 1.288


programa bonito ¬¬


Ver Perfil WWW
Re: script para sacar emails de paginas webs [python] [v3.0]
« Respuesta #18 en: 22 Julio 2013, 05:41 am »

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.


Código
  1. # -*- coding: utf-8 -*-
  2. ## by kase: kase@boredsoft.com  
  3. import requests,re,os,time,sys
  4. from argparse import ArgumentParser, RawTextHelpFormatter
  5.  
  6.  
  7. parser = ArgumentParser(description="google dorks email spider ", version="1.0", formatter_class=RawTextHelpFormatter)
  8. ## -url
  9. parser.add_argument("-b",  dest="busqueda", help='Cadena a buscar en google entre comillas')
  10. ## -max_links links
  11. parser.add_argument("-p",  dest="paginas", help='Maximo de paginas a analizar en google (cada pagina contiene 10 enlaces) por defecto 10')
  12. argumento = parser.parse_args()
  13.  
  14. dominio = 'http://google.com.mx'
  15. 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")
  16. urlssrch = re.compile(r'href=[\'"]?([^\'" >]+)')
  17. googlesrch = re.compile(r'href=[\'"]?/url\?q=([^\'" &]+)')
  18. contador = 0
  19. links_internos = []
  20. links_visitados = []
  21. emails_capturados = []
  22. if not argumento.paginas:
  23. paginas = 10
  24. else:
  25. paginas = argumento.paginas
  26.  
  27. ## recorre las paginas de google (de 10 en 10)
  28. for x in range(0,paginas):
  29. r=requests.get(dominio+''+'/search?q=%s&start=%s&num=100' % (argumento.busqueda,contador))
  30. contador +=100
  31.  
  32. links_google = googlesrch.findall( r.text)
  33. ##recorre los links que arroje los resultados de google
  34. for link in links_google:
  35. time.sleep(15)
  36. r2=requests.get(link)
  37. emails = mailsrch.findall(r2.text)
  38. ##detecta los emails encontrados en la web de resultado
  39. for email in  emails:
  40. if email not in emails_capturados:
  41. emails_capturados.append(email)
  42. ## recorre un nivel en los enlaces de la web resultado bajo la teoria de que deben ser de tematica similar
  43. links = urlssrch.findall( r2.text)
  44.  
  45. ########## informe de pantalla
  46. if sys.platform.startswith('win'):
  47.    # Windows
  48.    os.system('cls')
  49. elif sys.platform.startswith('linux'):
  50.    # Linux
  51.    os.system('clear')
  52. elif sys.platform.startswith('cygwin'):
  53.    # Windows (Cygwin)
  54.    os.system('cmd /c cls')
  55. elif sys.platform.startswith('darwin'):
  56.    # MacOSX
  57.    os.system('clear')
  58. elif sys.platform.startswith('freebsd'):
  59.    # FreeBSD
  60.    os.system('clear')
  61. print 'parametro de busqueda: ' , argumento.busqueda
  62. print 'pagina checada: ', contador/10
  63. print 'paginas por checar: ', paginas - (contador/10)
  64. print 'emails capturados: ', len(emails_capturados)
  65. print 'url victima actual: ', r2.url
  66. ##fin de informe de pantalla
  67.  
  68. while links:
  69. try:
  70. link = links.pop()
  71. if not link[0] == '/':
  72. r3=requests.get(link)
  73. ##else:  falta codigo para detectar el dominio :(
  74. except:
  75. ci = os.system('ping -c 1 google.com') ## checa si hay conexion de internet
  76. if ci == 0:  #si existe conexion elimina el enlace muerto
  77. link = links.pop()
  78.  
  79. #guarda emails de el nivel 2.
  80. emails = mailsrch.findall(r3.text)
  81. for email in  emails:
  82. if email not in emails_capturados:
  83. emails_capturados.append(email)
  84.  
  85. f = open('google_%s.txt' % argumento_busqueda.replace('.','_'),'w+')
  86. f.write("\n".join(emails_capturados))
  87. f.close()
  88.  
En línea

binario010101

Desconectado Desconectado

Mensajes: 136


Ver Perfil
Re: script para sacar emails de paginas webs [python] [v3.0]
« Respuesta #19 en: 7 Agosto 2013, 20:18 pm »

hola amigo

estoy interesado en el tema pero no se como usar el codigo me puedes explicar?

gracias
En línea

binario010101@hotmail.com
no soy ing estudio sicologia
Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines