diff --git a/EmailHarvester.py b/EmailHarvester.py index f755304..b08b692 100644 --- a/EmailHarvester.py +++ b/EmailHarvester.py @@ -91,10 +91,7 @@ class myparser: return emails def unique(self): - self.new = [] - for x in self.temp: - if x not in self.new: - self.new.append(x) + self.new = list(set(self.temp)) return self.new @@ -160,15 +157,11 @@ def red(text): return colored(text, 'red', attrs=['bold']) def unique(data): - unique = [] - for x in data: - if x not in unique: - unique.append(x) - return unique + return list(set(data)) def checkProxyUrl(url): url_checked = urlparse(url) - if ((url_checked.scheme != 'http') & (url_checked.scheme != 'https')) | (url_checked.netloc == ''): + if (url_checked.scheme not in ('http', 'https')) | (url_checked.netloc == ''): raise argparse.ArgumentTypeError('Invalid {} Proxy URL (example: http://127.0.0.1:8080).'.format(url)) return url_checked @@ -212,33 +205,26 @@ if __name__ == '__main__': if len(sys.argv) is 1: parser.print_help() sys.exit() - + args = parser.parse_args() - - domain = "" - if(args.domain): - domain = args.domain - else: + if not args.domain: print(red("[-] Please specify a domain name to search.")) sys.exit(2) - - userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1" - if(args.uagent): - userAgent = args.uagent + domain = args.domain + + userAgent = (args.uagent or + "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1") print("User-Agent in use: {}".format(yellow(userAgent))) - if(args.proxy): + if args.proxy: print("Proxy server in use: {}".format(yellow(args.proxy.scheme + "://" + args.proxy.netloc))) - - filename = "" - if(args.filename): - filename = args.filename - + + filename = args.filename or "" limit = args.limit engine = args.engine - googleUrl = "http://www.google.com/search?num=100&start={counter}&hl=en&q=%40\"{word}\"" + googleUrl = 'http://www.google.com/search?num=100&start={counter}&hl=en&q=%40"{word}"' bingUrl = "http://www.bing.com/search?q=%40{word}&count=50&first={counter}" askUrl = "http://www.ask.com/web?q=%40{word}" yahooUrl = "http://search.yahoo.com/search?p=%40{word}&n=100&ei=UTF-8&va_vt=any&vo_vt=any&ve_vt=any&vp_vt=any&vd=all&vst=0&vf=all&vm=p&fl=0&fr=yfp-t-152&xargs=0&pstart=1&b={counter}" @@ -289,39 +275,35 @@ if __name__ == '__main__': all_emails = unique(all_emails) print(green("\n\n[+] Emails found:")) - print(green("------------------")) + print(green("-" * 18)) - if all_emails == []: + if not all_emails: print(red("No emails found")) sys.exit(3) else: for emails in all_emails: print(emails) - if filename != "": + if filename: try: print(green("[+] Saving files...")) - file = open(filename, 'w') - for email in all_emails: - try: - file.write(email + "\n") - except: - print(red("Exception " + email)) - pass - file.close + with open(filename, 'w') as out_file: + for email in all_emails: + try: + out_file.write(email + "\n") + except: + print(red("Exception " + email)) except Exception as e: print(red("Error saving TXT file: " + e)) try: filename = filename.split(".")[0] + ".xml" - file = open(filename, 'w') - file.write('') - for x in all_emails: - file.write('' + x + '') - file.write('') - file.flush() - file.close() + with open(filename, 'w') as out_file: + out_file.write('') + for x in all_emails: + out_file.write('{}'.format(x)) + out_file.write('') print(green("Files saved!")) except Exception as er: print(red("Error saving XML file: " + er)) - +