"""
This file is part of the UFONet project, https://ufonet.03c8.net
Copyright (c) 2013/2020 | psy <[email protected]>
You should have received a copy of the GNU General Public License along
with UFONet; if not, write to the Free Software Foundation, Inc., 51
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
"""
import ssl, random, re
import urllib.request, urllib.error
from urllib.parse import urlparse as urlparse
class Inspector(object):
def __init__(self,ufonet):
self.ufonet=ufonet
self.c_images = 0
self.c_mov = 0
self.c_webm = 0
self.c_avi = 0
self.c_swf = 0
self.c_mpg = 0
self.c_mpeg = 0
self.c_mp3 = 0
self.c_ogg = 0
self.c_ogv = 0
self.c_wmv = 0
self.c_css = 0
self.c_js = 0
self.c_xml = 0
self.c_php = 0
self.c_html = 0
self.c_jsp = 0
self.c_asp = 0
self.c_txt = 0
self.ctx = ssl.create_default_context()
self.ctx.check_hostname = False
self.ctx.verify_mode = ssl.CERT_NONE
def proxy_transport(self, proxy):
proxy_url = self.ufonet.extract_proxy(proxy)
proxy = urllib.request.ProxyHandler({'https': proxy_url})
opener = urllib.request.build_opener(proxy)
urllib.request.install_opener(opener)
def inspecting(self, target):
biggest_files = {}
if target.endswith(""):
target.replace("", "/")
self.ufonet.user_agent = random.choice(self.ufonet.agents).strip()
headers = {'User-Agent' : self.ufonet.user_agent, 'Referer' : self.ufonet.referer}
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target, None, headers)
target_reply = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target, None, headers)
target_reply = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
except:
print('[Error] [AI] Unable to connect to target -> [Exiting!]\n')
return
try:
regex_img = []
regex_img1 = "<img src='(.+?)'"
regex_img.append(regex_img1)
regex_img2 = '<img src="(.+?)"'
regex_img.append(regex_img2)
for regimg in regex_img:
pattern_img = re.compile(regimg)
img_links = re.findall(pattern_img, target_reply)
imgs = {}
for img in img_links:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
self.ufonet.user_agent = random.choice(self.ufonet.agents).strip()
headers = {'User-Agent' : self.ufonet.user_agent, 'Referer' : self.ufonet.referer}
try:
if img.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
if img.startswith("data:image"):
size = 0
else:
if img.startswith('/'):
img = img.replace("/", "", 1)
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + img, None, headers)
img_file = urllib.request.urlopen(req, context=self.ctx).read()
else:
req = urllib.request.Request(target_url + img, None, headers)
img_file = urllib.request.urlopen(req, context=self.ctx).read()
print('+Image found: ' + target_url + img.split('"')[0])
size = len(img_file)
print('(Size: ' + str(size) + ' Bytes)')
imgs[img] = int(size)
self.c_images = self.c_images + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Image -> [Discarding!]')
size = 0
biggest_image = max(list(imgs.keys()), key=lambda x: imgs[x])
if biggest_image:
biggest_files[biggest_image] = imgs[biggest_image]
except:
pass
try:
regex_mov = []
regex_mov1 = "<a href='(.+?.mov)'"
regex_mov.append(regex_mov1)
regex_mov2 = '<a href="(.+?.mov)"'
regex_mov.append(regex_mov2)
for regmov in regex_mov:
pattern_mov = re.compile(regmov)
mov_links = re.findall(pattern_mov, target_reply)
movs = {}
for mov in mov_links:
try:
if mov.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + mov, None, headers)
mov_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + mov, None, headers)
mov_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Video (.mov) found: ' + target_url + mov.split('"')[0])
size = len(mov_file)
movs[mov] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_mov = self.c_mov + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Video -> [Discarding!]')
size = 0
biggest_mov = max(list(movs.keys()), key=lambda x: movs[x])
if biggest_mov:
biggest_files[biggest_mov] = movs[biggest_mov]
except:
pass
try:
regex_webm = []
regex_webm1 = "<a href='(.+?.webm)'"
regex_webm.append(regex_webm1)
regex_webm2 = '<a href="(.+?.webm)"'
regex_webm.append(regex_webm2)
for regwebm in regex_webm:
pattern_webm = re.compile(regwebm)
webm_links = re.findall(pattern_webm, target_reply)
webms = {}
for webm in webm_links:
try:
if webm.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + webm, None, headers)
webm_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + webm, None, headers)
webm_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Video (.webm) found: ' + target_url + webm.split('"')[0])
size = len(webm_file)
webms[webm] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_webm = self.c_webm + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Video -> [Discarding!]')
size = 0
biggest_webm = max(list(webms.keys()), key=lambda x: webms[x])
if biggest_webm:
biggest_files[biggest_webm] = webms[biggest_webm]
except:
pass
try:
regex_avi = []
regex_avi1 = "<a href='(.+?.avi)'"
regex_avi.append(regex_avi1)
regex_avi2 = '<a href="(.+?.avi)"'
regex_avi.append(regex_avi2)
for regavi in regex_avi:
pattern_avi = re.compile(regavi)
avi_links = re.findall(pattern_avi, target_reply)
avis = {}
for avi in avi_links:
try:
if avi.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + avi, None, headers)
avi_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + avi, None, headers)
avi_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Video (.avi) found: ' + target_url + avi.split('"')[0])
size = len(avi_file)
avis[avi] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_avi = self.c_avi + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Video -> [Discarding!]')
size = 0
biggest_avi = max(list(avis.keys()), key=lambda x: avis[x])
if biggest_avi:
biggest_files[biggest_avi] = avis[biggest_avi]
except:
pass
try:
regex_swf = []
regex_swf1 = "<value='(.+?.swf)'"
regex_swf.append(regex_swf1)
regex_swf2 = '<value="(.+?.swf)"'
regex_swf.append(regex_swf2)
for regswf in regex_swf:
pattern_swf = re.compile(regswf)
swf_links = re.findall(pattern_swf, target_reply)
swfs = {}
for swf in swf_links:
try:
if swf.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + swf, None, headers)
swf_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + swf, None, headers)
swf_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Flash (.swf) found: ' + target_url + swf.split('"')[0])
size = len(swf_file)
swfs[swf] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_swf = self.c_swf + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Flash -> [Discarding!]')
size = 0
biggest_swf = max(list(swfs.keys()), key=lambda x: swfs[x])
if biggest_swf:
biggest_files[biggest_swf] = swfs[biggest_swf]
except:
pass
try:
regex_mpg = []
regex_mpg1 = "<src='(.+?.mpg)'"
regex_mpg.append(regex_mpg1)
regex_mpg2 = '<src="(.+?.mpg)"'
regex_mpg.append(regex_mpg2)
for regmpg in regex_mpg:
pattern_mpg = re.compile(regmpg)
mpg_links = re.findall(pattern_mpg, target_reply)
mpgs = {}
for mpg in mpg_links:
try:
if mpg.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + mpg, None, headers)
mpg_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + mpg, None, headers)
mpg_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Video (.mpg) found: ' + target_url + mpg.split('"')[0])
size = len(mpg_file)
mpgs[mpg] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_mpg = self.c_mpg + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Video -> [Discarding!]')
size = 0
biggest_mpg = max(list(mpgs.keys()), key=lambda x: mpgs[x])
if biggest_mpg:
biggest_files[biggest_mpg] = mpgs[biggest_mpg]
except:
pass
try:
regex_mpeg = []
regex_mpeg1 = "<src='(.+?.mpeg)'"
regex_mpeg.append(regex_mpeg1)
regex_mpeg2 = '<src="(.+?.mpeg)"'
regex_mpeg.append(regex_mpeg2)
for regmpeg in regex_mpeg:
pattern_mpeg = re.compile(regmpeg)
mpeg_links = re.findall(pattern_mpeg, target_reply)
mpegs = {}
for mpeg in mpeg_links:
try:
if mpeg.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + mpeg, None, headers)
mpeg_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + mpeg, None, headers)
mpeg_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Video (.mpeg) found: ' + target_url + mpeg.split('"')[0])
size = len(mpeg_file)
mpegs[mpeg] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_mpeg = self.c_mpeg + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Video -> [Discarding!]')
size = 0
biggest_mpeg = max(list(mpegs.keys()), key=lambda x: mpegs[x])
if biggest_mpeg:
biggest_files[biggest_mpeg] = mpegs[biggest_mpeg]
except:
pass
try:
regex_mp3 = []
regex_mp31 = "<src='(.+?.mp3)'"
regex_mp3.append(regex_mp31)
regex_mp32 = '<src="(.+?.mp3)"'
regex_mp3.append(regex_mp32)
for regmp3 in regex_mp3:
pattern_mp3 = re.compile(regmp3)
mp3_links = re.findall(pattern_mp3, target_reply)
mp3s = {}
for mp3 in mp3_links:
try:
if mp3.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + mp3, None, headers)
mp3_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + mp3, None, headers)
mp3_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Audio (.mp3) found: ' + target_url + mp3.split('"')[0])
size = len(mp3_file)
mp3s[mp3] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_mp3 = self.c_mp3 + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Audio -> [Discarding!]')
size = 0
biggest_mp3 = max(list(mp3s.keys()), key=lambda x: mp3s[x])
if biggest_mp3:
biggest_files[biggest_mp3] = mp3s[biggest_mp3]
except:
pass
try:
regex_mp4 = []
regex_mp41 = "<src='(.+?.mp4)'"
regex_mp4.append(regex_mp41)
regex_mp42 = '<src="(.+?.mp4)"'
regex_mp4.append(regex_mp42)
for regmp4 in regex_mp4:
pattern_mp4 = re.compile(regmp4)
mp4_links = re.findall(pattern_mp4, target_reply)
mp4s = {}
for mp4 in mp4_links:
try:
if mp4.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + mp4, None, headers)
mp4_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + mp4, None, headers)
mp4_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Video (.mp4) found: ' + target_url + mp4.split('"')[0])
size = len(mp4_file)
mp4s[mp4] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_mp4 = self.c_mp4 + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Video -> [Discarding!]')
size = 0
biggest_mp4 = max(list(mp4s.keys()), key=lambda x: mp4s[x])
if biggest_mp4:
biggest_files[biggest_mp4] = mp4s[biggest_mp4]
except:
pass
try:
regex_ogg = []
regex_ogg1 = "<src='(.+?.ogg)'"
regex_ogg.append(regex_ogg1)
regex_ogg2 = '<src="(.+?.ogg)"'
regex_ogg.append(regex_ogg2)
for regogg in regex_ogg:
pattern_ogg = re.compile(regogg)
ogg_links = re.findall(pattern_ogg, target_reply)
oggs = {}
for ogg in ogg_links:
try:
if ogg.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + ogg, None, headers)
ogg_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + ogg, None, headers)
ogg_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Audio (.ogg) found: ' + target_url + ogg.split('"')[0])
size = len(ogg_file)
oggs[ogg] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_ogg = self.c_ogg + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Audio -> [Discarding!]')
size = 0
biggest_ogg = max(list(oggs.keys()), key=lambda x: oggs[x])
if biggest_ogg:
biggest_files[biggest_ogg] = oggs[biggest_ogg]
except:
pass
try:
regex_ogv = []
regex_ogv1 = "<src='(.+?.ogv)'"
regex_ogv.append(regex_ogv1)
regex_ogv2 = '<src="(.+?.ogv)"'
regex_ogv.append(regex_ogv2)
for regogv in regex_ogv:
pattern_ogv = re.compile(regogv)
ogv_links = re.findall(pattern_ogv, target_reply)
ogvs = {}
for ogv in ogv_links:
try:
if ogv.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + ogv, None, headers)
ogv_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + ogv, None, headers)
ogv_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Video (.ogv) found: ' + target_url + ogv.split('"')[0])
size = len(ogv_file)
ogvs[ogv] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_ogv = self.c_ogv + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Video -> [Discarding!]')
size = 0
biggest_ogv = max(list(ogvs.keys()), key=lambda x: ogvs[x])
if biggest_ogv:
biggest_files[biggest_ogv] = ogvs[biggest_ogv]
except:
pass
try:
regex_wmv = []
regex_wmv1 = "<src='(.+?.wmv)'"
regex_wmv.append(regex_wmv1)
regex_wmv2 = '<src="(.+?.wmv)"'
regex_wmv.append(regex_wmv2)
for regwmv in regex_wmv:
pattern_wmv = re.compile(regwmv)
wmv_links = re.findall(pattern_wmv, target_reply)
wmvs = {}
for wmv in wmv_links:
try:
if wmv.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + wmv, None, headers)
wmv_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + wmv, None, headers)
wmv_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Video (.wmv) found: ' + target_url + wmv.split('"')[0])
size = len(wmv_file)
wmvs[wmv] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_wmv = self.c_wmv + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Video -> [Discarding!]')
size = 0
biggest_wmv = max(list(wmvs.keys()), key=lambda x: wmvs[x])
if biggest_wmv:
biggest_files[biggest_wmv] = wmvs[biggest_wmv]
except:
pass
try:
regex_css = []
regex_css1 = "href='(.+?.css[^']*)'"
regex_css.append(regex_css1)
regex_css2 = 'href="(.+?.css[^"]*)"'
regex_css.append(regex_css2)
for regcss in regex_css:
pattern_css = re.compile(regcss)
css_links = re.findall(pattern_css, target_reply)
csss = {}
for css in css_links:
try:
if css.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
if css.startswith("//"):
size = 0
elif "http://" in css or "https://" in css:
size = 0
else:
if css.startswith('/'):
css = css.replace("/", "", 1)
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + css, None, headers)
css_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + css, None, headers)
css_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Style (.css) found: ' + target_url + css.split('"')[0])
size = len(css_file)
csss[css] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_css = self.c_css + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Style -> [Discarding!]')
size = 0
biggest_css = max(list(csss.keys()), key=lambda x: csss[x])
if biggest_css:
biggest_files[biggest_css] = csss[biggest_css]
except:
pass
try:
regex_js = []
regex_js1 = "src='(.+?.js[^']*)'"
regex_js.append(regex_js1)
regex_js2 = 'src="(.+?.js[^"]*)"'
regex_js.append(regex_js2)
for regjs in regex_js:
pattern_js = re.compile(regjs)
js_links = re.findall(pattern_js, target_reply)
jss = {}
for js in js_links:
try:
if js.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
if js.startswith("//"):
size = 0
elif "http://" in js or "https://" in js:
size = 0
else:
if js.startswith('/'):
js = js.replace("/", "", 1)
print('+Script (.js) found: ' + target_url + js.split('"')[0])
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + js, None, headers)
js_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + js, None, headers)
js_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
size = len(js_file)
jss[js] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_js = self.c_js + 1
print('-'*12)
except:
print('[Error] [AI] Unable to retrieve info from Script -> [Discarding!]')
size = 0
biggest_js = max(list(jss.keys()), key=lambda x: jss[x])
if biggest_js:
biggest_files[biggest_js] = jss[biggest_js]
except:
pass
try:
regex_xml = []
regex_xml1 = "href='(.+?.xml)'"
regex_xml.append(regex_xml1)
regex_xml2 = 'href="(.+?.xml)"'
regex_xml.append(regex_xml2)
for regxml in regex_xml:
pattern_xml = re.compile(regxml)
xml_links = re.findall(pattern_xml, target_reply)
xmls = {}
for xml in xml_links:
try:
if xml.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + xml, None, headers)
xml_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + xml, None, headers)
xml_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Script (.xml) found: ' + target_url + xml).split('"')[0]
size = len(xml_file)
xmls[xml] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_xml = self.c_xml + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Script -> [Discarding!]')
size = 0
biggest_xml = max(list(xmls.keys()), key=lambda x: xmls[x])
if biggest_xml:
biggest_files[biggest_xml] = xmls[biggest_xml]
except:
pass
try:
regex_php = []
regex_php1 = "href='(.+?.php)'"
regex_php.append(regex_php1)
regex_php2 = 'href="(.+?.php)"'
regex_php.append(regex_php2)
for regphp in regex_php:
pattern_php = re.compile(regphp)
php_links = re.findall(pattern_php, target_reply)
phps = {}
for php in php_links:
try:
if php.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + php, None, headers)
php_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + php, None, headers)
php_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Webpage (.php) found: ' + target_url + php.split('"')[0])
size = len(php_file)
phps[php] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_php = self.c_php + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Webpage -> [Discarding!]')
size = 0
biggest_php = max(list(phps.keys()), key=lambda x: phps[x])
if biggest_php:
biggest_files[biggest_php] = phps[biggest_php]
except:
pass
try:
regex_html = []
regex_html1 = "href='(.+?.html)'"
regex_html.append(regex_html1)
regex_html2 = 'href="(.+?.html)"'
regex_html.append(regex_html2)
for reghtml in regex_html:
pattern_html = re.compile(reghtml)
html_links = re.findall(pattern_html, target_reply)
htmls = {}
for html in html_links:
try:
if html.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + html, None, headers)
html_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + html, None, headers)
html_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Webpage (.html) found: ' + target_url + html.split('"')[0])
size = len(html_file)
htmls[html] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_html = self.c_html + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Webpage -> [Discarding!]')
size = 0
biggest_html = max(list(htmls.keys()), key=lambda x: htmls[x])
if biggest_html:
biggest_files[biggest_html] = htmls[biggest_html]
except:
pass
try:
regex_jsp = []
regex_jsp1 = "href='(.+?.jsp)'"
regex_jsp.append(regex_jsp1)
regex_jsp2 = 'href="(.+?.jsp)"'
regex_jsp.append(regex_jsp2)
for regjsp in regex_jsp:
pattern_jsp = re.compile(regjsp)
jsp_links = re.findall(pattern_jsp, target_reply)
jsps = {}
for jsp in jsp_links:
try:
if jsp.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + jsp, None, headers)
jsp_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + jsp, None, headers)
jsp_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Webpage (.jsp) found: ' + target_url + jsp.split('"')[0])
size = len(jsp_file)
jsps[jsp] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_jsp = self.c_jsp + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Webpage -> [Discarding!]')
size = 0
biggest_jsp = max(list(jsps.keys()), key=lambda x: jsps[x])
if biggest_jsp:
biggest_files[biggest_jsp] = jsps[biggest_jsp]
except:
pass
try:
regex_asp = []
regex_asp1 = "href='(.+?.asp)'"
regex_asp.append(regex_asp1)
regex_asp2 = 'href="(.+?.asp)"'
regex_asp.append(regex_asp2)
for regasp in regex_asp:
pattern_asp = re.compile(regasp)
asp_links = re.findall(pattern_asp, target_reply)
asps = {}
for asp in asp_links:
try:
if asp.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + asp, None, headers)
asp_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + asp, None, headers)
asp_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+Webpage (.asp) found: ' + target_url + asp.split('"')[0])
size = len(asp_file)
asps[asp] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_asp = self.c_asp + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Webpage -> [Discarding!]')
size = 0
biggest_asp = max(list(asps.keys()), key=lambda x: asps[x])
if biggest_asp:
biggest_files[biggest_asp] = asps[biggest_asp]
except:
pass
try:
regex_txt = []
regex_txt1 = "href='(.+?.txt)'"
regex_txt.append(regex_txt1)
regex_txt2 = 'href="(.+?.txt)"'
regex_txt.append(regex_txt2)
for regtxt in regex_txt:
pattern_txt = re.compile(regtxt)
txt_links = re.findall(pattern_txt, target_reply)
txts = {}
for txt in txt_links:
try:
if txt.startswith('http'):
size = 0
else:
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if not target_url.endswith('/'):
target_url = target_url + "/"
try:
if self.ufonet.options.proxy:
self.proxy_transport(self.ufonet.options.proxy)
req = urllib.request.Request(target_url + txt, None, headers)
txt_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
else:
req = urllib.request.Request(target_url + txt, None, headers)
txt_file = urllib.request.urlopen(req, context=self.ctx).read().decode('utf-8')
print('+File (.txt) found: ' + target_url + txt.split('"')[0])
size = len(txt_file)
txts[txt] = int(size)
print('(Size: ' + str(size) + ' Bytes)')
self.c_txt = self.c_txt + 1
print('-'*12)
except:
size = 0
except:
print('[Error] [AI] Unable to retrieve info from Text file -> [Discarding!]')
size = 0
biggest_txt = max(list(txts.keys()), key=lambda x: txts[x])
if biggest_text:
biggest_files[biggest_txt] = txts[biggest_txt]
except:
pass
print("\n" +'='*80)
total_objects = self.c_images + self.c_mov + self.c_webm + self.c_avi + self.c_swf + self.c_mpg + self.c_mpeg + self.c_mp3 + self.c_ogg + self.c_ogv + self.c_wmv + self.c_css + self.c_js + self.c_xml + self.c_php + self.c_html + self.c_jsp + self.c_asp + self.c_txt
print("Total objects found:", total_objects)
print('-'*20)
print("images:", self.c_images)
print(".mov :", self.c_mov)
print(".jsp :", self.c_jsp)
print(".avi :", self.c_avi)
print(".html :", self.c_html)
print(".mpg :", self.c_mpg)
print(".asp :", self.c_asp)
print(".mp3 :", self.c_mp3)
print(".js :", self.c_js)
print(".ogv :", self.c_ogv)
print(".wmv :", self.c_wmv)
print(".css :", self.c_css)
print(".mpeg :", self.c_mpeg)
print(".xml :", self.c_xml)
print(".php :", self.c_php)
print(".txt :", self.c_txt)
print(".webm :", self.c_webm)
print(".ogg :", self.c_ogg)
print(".swf :", self.c_swf)
print('-'*20)
print('='*80)
if(biggest_files=={}):
print("\n[Info] [AI] Not any link found on target! -> [Exiting!]\n\n")
print('='*80 + '\n')
return
biggest_file_on_target = max(list(biggest_files.keys()), key=lambda x: biggest_files[x])
target_host = urlparse(target)
target_url = target_host.scheme + "://" + target_host.netloc + target_host.path
if biggest_file_on_target.startswith('http'):
for url,size in list(biggest_files.items()):
if url.startswith('http'):
if not target_url in url:
del biggest_files[url]
biggest_file_on_target = max(list(biggest_files.keys()), key=lambda x: biggest_files[x])
print('=Biggest File: ' + biggest_file_on_target)
else:
if not target_url.endswith('/'):
target_url = target_url + "/"
print('=Biggest File: ' + target_url + biggest_file_on_target)
print('='*80 + '\n')