
Sosyal Mühendislik Saldırıları Için Başlangıç Noktası Kuruma Ait E-Posta Adreslerinin Bulunmasıdır. Bunun Için Farklı Yöntemler Kullanılmaktadır. Özellikle Bir Çok Kurum Internet Sayfalarında Kuruma Ait E-Posta Adreslerini Yayınlamaktadırlar. El Ile Kuruma Ait E-Posta Adreslerinin Çıkartılması Mümkün Olmamaktadır. Bu Işlem Otomatize Bir Şekilde Herhangi Bir Programlama Dili Ile Gerçekleştirilebilir.
Bu Işlemi Python Ile Gerçekleştirmek Için Aşağıdaki Kod Kullanılabilir.
Kod:
#!/Usr/Bin/Python
# -*- Coding: Utf-8 -*-
__VERSION__ = '0.1'
__AUTHOR__ = 'Galkan'
__DATE__ = '30.10.2013'
Try:
Import Urllib2
Import Sys
Import Re
Import Random
Import Argparse
Import Time
Except ImportError,Err:
Import Sys
Sys.Stdout.Write("%S\N" %Err)
Sys.Exit(1)
Class Crawl:
Def __init__(Self, Url_opt, Mail_opt, Time = 0):
Self.HEADERS = {
'User-Agent': 'Mozilla/5.0',
'Accept': 'Text/Html,Application/Xhtml+Xml,Application/Xml;Q=0.9,*/*;Q=0.8',
'Accept-Encoding': 'Gzip, Deflate',
'Connection': 'Close',
'DNT': '1'
}
Self.UAS = [
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, Like Gecko) Chrome/23.0.1271.97 Safari/537.11',
'Mozilla/5.0 (Windows NT 6.1; WOW64; Rv:17.0) Gecko/20100101 Firefox/17.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, Like Gecko) Version/6.0.2 Safari/536.26.17',
'Mozilla/5.0 (Linux; U; Android 2.2; Fr-Fr; Desire_A8181 Build/FRF91) App3leWebKit/53.1 (KHTML, Like Gecko) Version/4.0 Mobile Safari/533.1',
'Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1; SV1; FunWebProducts; .NET CLR 1.1.4322; PeoplePal 6.2)',
'Mozilla/5.0 (Windows NT 5.1; Rv:13.0) Gecko/20100101 Firefox/13.0.1',
'Opera/9.80 (Windows NT 5.1; U; En) Presto/2.10.289 Version/12.01',
'Mozilla/5.0 (Windows NT 5.1; Rv:5.0.1) Gecko/20100101 Firefox/5.0.1',
'Mozilla/4.0 (Compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.5.30729)'
]
Self.Time = Time
Self.Url_opt = Url_opt
Self.Mail_opt = Mail_opt
Self.Url_reg = Re.Compile("Href\S*=\S*\"([^\"]+)\"")
If Not Self.Mail_opt == "All":
Self.Email_reg = Re.Compile("[\D\W\-\_\.]+@%S"% (Self.Mail_opt))
Else:
Self.Email_reg = Re.Compile("[\D\W\-\_\.]+@[\D\W\-\_\.]+")
Self.Site_reg = Re.Compile("(Https?|Ftp://)|(Javascript|Mailto)")
Def Crawl(Self, Html):
Ret_list = []
For Node In Html:
If Re.Findall(Self.Url_reg, Node):
Resp = Re.Findall(Self.Url_reg, Node)
For Elem In Resp:
If Not Re.Match(Self.Site_reg, Elem):
If Not Elem In Ret_list:
Ret_list.Append(Elem)
Return Ret_list
Def Extract_email(Self, Html):
Email_res = []
For Node In Html:
If Re.Findall(Self.Email_reg, Node):
Email = Re.Findall(Self.Email_reg, Node)
For Node In Email:
If Node Not In Email_res:
Email_res.Append(Node)
Return Email_res
Def Get_webpage(Self, Url):
Html = None
Request = Urllib2.Request(Url)
Self.HEADERS['User-Agent'] = Random.Choice(Self.UAS)
Request.Add_header('User-Agent', Self.HEADERS)
Response = Urllib2.Urlopen(Request)
Html = Response.Readlines()
Return Html
Def Main(Self, Url):
Hostname = Url.Split("/")[2]
Html = Self.Get_webpage(Url)
If Not Html == None:
If Self.Url_opt == "Url":
Response_list = Self.Extract_email(Html)
For Node In Response_list:
Print Node
Elif Self.Url_opt == "Url-All":
Crawled_url = Self.Crawl(Html)
For Url In Crawled_url:
New_url = ""
If Not Re.Match("/", Url):
New_url = "Https://" + Hostname + "/" + Url
Else:
New_url = "Https://" + Hostname + Url
Email_list = []
For Url In Crawled_url:
New_url = ""
If Not Re.Match("/", Url):
New_url = "Https://" + Hostname + "/" + Url
Else:
New_url = "Https://" + Hostname + Url
Html = Self.Get_webpage(New_url)
Response_list = Self.Extract_email(Html)
For Node In Response_list:
If Node And Node Not In Email_list:
Email_list.Append(Node)
If Not Self.Time == 0:
Sleep_time = Random.Randint(1,Int(Self.Time))
Time.Sleep(Sleep_time)
For Email_res In Email_list:
Print Email_res
Else:
Print "Error, Gettig Html Web Page !!!"
Sys.Exit(3)
##
### Main ...
##
If __name__ == "__main__":
Parser = Argparse.ArgumentParser(Description='Email Crawler From Web Sites')
G = Parser.Add_mutually_exclusive_group(Required=True)
G.Add_argument('--Url', Dest='Url', Action='Store_const', Const='Url', Help="Only This Url")
G.Add_argument('--Url-All', Dest='Url', Action='Store_const', Const='Url-All', Help="All The Urls Discovered")
Parser.Add_argument('Options', Nargs=1)
Parser.Add_argument('--Mail', Dest='Mail', Help="Email", Required = True)
Parser.Add_argument('--Time', Dest='Time', Help="Random Sleep Time")
Args = Parser.Parse_args()
If Not Re.Match("Https?://",Args.Options[0]):
Print >> Sys.Stderr , "Url: \"%S\" Must Start With Http(S) Pattern !!!"% (Args.Options[0])
Sys.Exit(2)
If Args.Time:
Crawl = Crawl(Args.Url, Args.Mail, Args.Time)
Else:
Crawl = Crawl(Args.Url, Args.Mail, 0)
Crawl.Main(Args.Options[0])
# ./Mail-Crawl.Py --Url-All Https://Www.Fotomac.Com.Tr/ --Mail Fotomac.Com
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

