mirror of
https://github.com/j3ssie/osmedeus.git
synced 2026-08-20 22:52:32 +02:00
98 lines
3.7 KiB
Python
98 lines
3.7 KiB
Python
from modules import skeleton
|
|
from lib.core import utils
|
|
from lib.mode import speed
|
|
from lib.sender import execute
|
|
from lib.sender import polling
|
|
from lib.sender import report
|
|
from lib.sender import summary
|
|
|
|
|
|
class PortScan(skeleton.Skeleton):
|
|
"""docstring for PortScan"""
|
|
|
|
def banner(self):
|
|
utils.print_banner("Port Scanning")
|
|
utils.make_directory(self.options['WORKSPACE'] + '/portscan')
|
|
utils.make_directory(self.options['WORKSPACE'] + '/portscan/screenshot')
|
|
utils.make_directory(self.options['WORKSPACE'] + '/portscan/screenshot/raw-gowitness/')
|
|
self.delay = 500
|
|
|
|
def update_ports(self, command):
|
|
utils.print_good('Cleaning for {0}:{1}'.format(
|
|
command.get('banner'), command.get('pre_run')))
|
|
|
|
csv_data = utils.just_read(command.get('requirement'), get_list=True)
|
|
if not csv_data:
|
|
utils.print_bad('Requirement not found: {0}'.format(
|
|
command.get('requirement')))
|
|
return False
|
|
|
|
result = {}
|
|
for line in csv_data[1:]:
|
|
host = line.split(',')[0]
|
|
port = line.split(',')[3]
|
|
if result.get(host, None):
|
|
result[host] += "," + str(port).strip(',')
|
|
else:
|
|
result[host] = port
|
|
|
|
# store it as format can submit to summaries
|
|
final_result = []
|
|
for host, ports in result.items():
|
|
item = "ip_address|{0};;ports|{1}".format(host, ports)
|
|
final_result.append(item)
|
|
|
|
utils.just_write(command.get('cleaned_output'),
|
|
"\n".join(final_result))
|
|
summary.push_with_file(self.options, command.get('cleaned_output'))
|
|
# update ports to db
|
|
|
|
def get_scheme(self, command):
|
|
utils.print_good('Preparing for {0}:{1}'.format(
|
|
command.get('banner'), command.get('pre_run')))
|
|
|
|
scheme_path = utils.replace_argument(
|
|
self.options, '$WORKSPACE/portscan/scheme-$OUTPUT.txt')
|
|
|
|
csv_data = utils.just_read(command.get('requirement'), get_list=True)
|
|
|
|
if not csv_data:
|
|
utils.print_bad('Requirement not found: {0}'.format(
|
|
command.get('requirement')))
|
|
return False
|
|
result = []
|
|
for line in csv_data[1:]:
|
|
host = line.split(',')[0]
|
|
port = line.split(',')[3]
|
|
result.append("http://" + host + ":" + port)
|
|
result.append("https://" + host + ":" + port)
|
|
|
|
utils.just_write(scheme_path, "\n".join(result))
|
|
utils.check_output(scheme_path)
|
|
# self.update_ports(command)
|
|
|
|
def clean_gowitness(self, command):
|
|
utils.print_good('Cleaning for {0}:{1}'.format(
|
|
command.get('banner'), command.get('post_run')))
|
|
|
|
real_cmd = utils.resolve_command(self.options, {
|
|
"banner": "gowitness gen report",
|
|
"cmd": "$GO_PATH/gowitness report generate -n $WORKSPACE/portscan/screenshot/$OUTPUT-raw-gowitness.html --destination $WORKSPACE/portscan/screenshot/raw-gowitness/ --db $WORKSPACE/portscan/screenshot/gowitness.db",
|
|
"output_path": "$WORKSPACE/portscan/screenshot/$OUTPUT-raw-gowitness.html",
|
|
})
|
|
|
|
execute.send_cmd(self.options, real_cmd)
|
|
raw_html = utils.just_read(real_cmd.get('output_path'))
|
|
if not raw_html:
|
|
utils.print_bad('Requirement not found: {0}'.format(
|
|
real_cmd.get('output_path')))
|
|
return False
|
|
|
|
local_path = utils.replace_argument(
|
|
self.options, '$WORKSPACE/portscan/')
|
|
real_html = raw_html.replace(local_path, '')
|
|
utils.just_write(command.get('cleaned_output'), real_html)
|
|
utils.check_output(command.get('cleaned_output'))
|
|
# update screenshot in summaries
|
|
|