Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add option to run tool against a single target as an argument
  • Loading branch information
njfox committed Jun 5, 2018
commit a8b2c8a1773f00e134efeea7628b8ddc07e2cd1e
77 changes: 41 additions & 36 deletions httpscreenshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,7 @@ def signal_handler(signal, frame):

parser.add_argument("-l","--list",help='List of input URLs')
parser.add_argument("-i","--input",help='nmap gnmap/xml output file')
parser.add_argument("-H","--host",help='Run against a single host')
parser.add_argument("-o","--output_dir",help='directory to store screenshots')
parser.add_argument("-p","--headless",action='store_true',default=False,help='Run in headless mode (using phantomjs)')
parser.add_argument("-w","--workers",default=1,type=int,help='number of threads')
Expand Down Expand Up @@ -517,44 +518,48 @@ def signal_handler(signal, frame):
uris = open(args.uri_list,'r').readlines()
uris.append('')

if(args.input is not None):
inFile = open(args.input,'rU')
if(detectFileType(inFile) == 'gnmap'):
hosts = parseGnmap(inFile,args.autodetect)
urls = []
for host,ports in hosts.items():
for port in ports:
for uri in uris:
url = ''
if port[1] == True:
url = ['https://'+host+':'+port[0]+uri.strip(),args.vhosts,args.retries]
else:
url = ['http://'+host+':'+port[0]+uri.strip(),args.vhosts,args.retries]
urls.append(url)
elif(detectFileType(inFile) == 'xml'):
hosts = parsexml(inFile)
urls = []
if(args.host is not None):
urls.append([args.host, args.vhosts, args.retries])
else:
if(args.input is not None):
inFile = open(args.input,'rU')
if(detectFileType(inFile) == 'gnmap'):
hosts = parseGnmap(inFile,args.autodetect)
urls = []
for host,ports in hosts.items():
for port in ports:
for uri in uris:
url = ''
if port[1] == True:
url = ['https://'+host+':'+port[0]+uri.strip(),args.vhosts,args.retries]
else:
url = ['http://'+host+':'+port[0]+uri.strip(),args.vhosts,args.retries]
urls.append(url)
elif(detectFileType(inFile) == 'xml'):
hosts = parsexml(inFile)
urls = []
for host,ports in hosts.items():
for port in ports:
for uri in uris:
url = ''
if port[1] == True:
url = ['https://'+host+':'+port[0]+uri.strip(),args.vhosts,args.retries]
else:
url = ['http://'+host+':'+port[0]+uri.strip(),args.vhosts,args.retries]
urls.append(url)
else:
print 'Invalid input file - must be Nmap GNMAP or Nmap XML'

elif (args.list is not None):
f = open(args.list,'r')
lst = f.readlines()
urls = []
for host,ports in hosts.items():
for port in ports:
for uri in uris:
url = ''
if port[1] == True:
url = ['https://'+host+':'+port[0]+uri.strip(),args.vhosts,args.retries]
else:
url = ['http://'+host+':'+port[0]+uri.strip(),args.vhosts,args.retries]
urls.append(url)
for url in lst:
urls.append([url.strip(),args.vhosts,args.retries])
else:
print 'Invalid input file - must be Nmap GNMAP or Nmap XML'

elif (args.list is not None):
f = open(args.list,'r')
lst = f.readlines()
urls = []
for url in lst:
urls.append([url.strip(),args.vhosts,args.retries])
else:
print "No input specified"
sys.exit(0)
print "No input specified"
sys.exit(0)

if (args.output_dir is not None):
output_dir = args.output_dir
Expand Down