def whois(self): utils.print_good('Starting Whois') cmd = 'whois $TARGET | tee $WORKSPACE/info/$TARGET-whois.txt' cmd = utils.replace_argument(self.options, cmd) output_path = utils.replace_argument( self.options, '$WORKSPACE/info/$OUTPUT-whois.txt') std_path = utils.replace_argument( self.options, '$WORKSPACE/info/std-$OUTPUT-whois.std') #log the command slack.slack_log(self.options, mess={ 'title': "{0} | Whois | {1} | Execute".format( self.options['TARGET'], self.module_name), 'content': '```{0}```'.format(cmd), }) execute.send_cmd(cmd, output_path, std_path, self.module_name) # upload the output utils.just_waiting(self.module_name, seconds=2) slack.slack_file(self.options, mess={ 'title': "{0} | Whois | {1} | Output".format( self.options['TARGET'], self.module_name), 'filename': '{0}'.format(output_path), })
def unique_result(self): utils.print_good('Unique result') # gobuster clean up go_raw = utils.replace_argument( self.options, '$WORKSPACE/subdomain/raw-$OUTPUT-gobuster.txt') if utils.not_empty_file(go_raw): go_clean = [x.split(' ')[1] for x in utils.just_read(go_raw).splitlines()] go_output = utils.replace_argument( self.options, '$WORKSPACE/subdomain/$OUTPUT-gobuster.txt') utils.just_write(go_output, "\n".join(go_clean)) # massdns clean up massdns_raw = utils.replace_argument( self.options, '$WORKSPACE/subdomain/raw-massdns.txt') if utils.not_empty_file(massdns_raw): massdns_output = utils.replace_argument( self.options, '$WORKSPACE/subdomain/$OUTPUT-massdns.txt') if not os.path.exists(massdns_raw): with open(massdns_raw, 'r+') as d: ds = d.read().splitlines() for line in ds: newline = line.split(' ')[0][:-1] with open(massdns_output, 'a+') as m: m.write(newline + "\n") utils.check_output(utils.replace_argument( self.options, '$WORKSPACE/subdomain/$OUTPUT-massdns.txt')) # joining the output all_output = glob.glob(utils.replace_argument(self.options, '$WORKSPACE/subdomain/$OUTPUT-*.txt')) domains = [] for file in all_output: domains += utils.just_read(file).splitlines() output_path = utils.replace_argument(self.options, '$WORKSPACE/subdomain/full-$OUTPUT.txt') utils.just_write(output_path, "\n".join(set([x.strip() for x in domains]))) # finding more subdomain permutation_domains = self.permutation() if permutation_domains: domains.extend(permutation_domains) output_path = utils.replace_argument( self.options, '$WORKSPACE/subdomain/full-$OUTPUT.txt') utils.just_write(output_path, "\n".join( set([x.strip() for x in domains]))) else: output_path = utils.replace_argument( self.options, '$WORKSPACE/subdomain/final-$OUTPUT.txt') utils.just_write(output_path, "\n".join( set([x.strip() for x in domains]))) time.sleep(1) slack.slack_file('report', self.options, mess={ 'title': "{0} | {1} | Output".format(self.options['TARGET'], self.module_name), 'filename': '{0}'.format(output_path), })
def unique_result(self): #just clean up some output #gobuster clean up cmd = 'cat $WORKSPACE/subdomain/raw-$OUTPUT-gobuster.txt | cut -d ' ' -f 2 > $WORKSPACE/subdomain/$OUTPUT-gobuster.txt' cmd = utils.replace_argument(self.options, cmd) output_path = utils.replace_argument( self.options, '$WORKSPACE/subdomain/$OUTPUT-gobuster.txt') execute.send_cmd(cmd, output_path, '', self.module_name) #massdns clean up massdns_raw = utils.replace_argument( self.options, '$WORKSPACE/subdomain/raw-massdns.txt') massdns_output = utils.replace_argument( self.options, '$WORKSPACE/subdomain/$OUTPUT-massdns.txt') if not os.path.exists(massdns_raw): with open(massdns_raw, 'r+') as d: ds = d.read().splitlines() for line in ds: newline = line.split(' ')[0][:-1] with open(massdns_output, 'a+') as m: m.write(newline + "\n") utils.check_output( utils.replace_argument( self.options, '$WORKSPACE/subdomain/$OUTPUT-massdns.txt')) utils.print_good('Unique result') cmd = "cat $WORKSPACE/subdomain/$OUTPUT-*.txt | sort | awk '{print tolower($0)}' | uniq >> $WORKSPACE/subdomain/final-$OUTPUT.txt" cmd = utils.replace_argument(self.options, cmd) output_path = utils.replace_argument( self.options, '$WORKSPACE/subdomain/final-$OUTPUT.txt') execute.send_cmd(cmd, output_path, '', self.module_name) slack.slack_file(self.options, mess={ 'title': "{0} | {1} | Output".format( self.options['TARGET'], self.module_name), 'filename': '{0}'.format(output_path), })