#!/usr/bin/python # # Simple proxy for SET, note will show up in history # import sys import getpass import os import src.core.setcore as core # Py2/3 compatibility # Python3 renamed raw_input to input try: input = raw_input except NameError: pass # grab the operating system operating_system = core.check_os() # if windows then do some stuff if operating_system == "posix": definepath = os.getcwd() print("\n[*] Welcome to the SET-Proxy Configuration Utility") print("\nEnter the proxy setting informatiom below.\n\nExample: http://10.3.1.1:8080\n") try: proxy = input("Enter the proxy server: ") username = input( "Enter the username for the proxy (hit enter for none): ") password = getpass.getpass( "Enter the password for the proxy (hit enter for none): ") except KeyboardInterrupt: print("\n[!] Exiting the Social-Engineer Toolkit.") sys.exit() if username != "": proxy_string = "export http_proxy='http://%s:%s@%s'" % ( username, password, proxy) if username == "": proxy_string = "export http_proxy='http://%s'" % (proxy) filewrite = open(core.setdir + "/proxy.config", "w") filewrite.write(proxy_string) filewrite.close() from src.core.set import * def kill_proc(port, flag): proc = subprocess.Popen("netstat -antp | grep '%s'" % (port), shell=True, stdout=subprocess.PIPE) stdout_value = proc.communicate()[0] a = re.search("\d+/%s" % (flag), stdout_value) if a: b = a.group() b = b.replace("/%s" % (flag), "") subprocess.Popen("kill -9 %s 1> /dev/null 2> /dev/null" % (b), shell=True).wait() # cleans up stale processes from SET try: # kill anything python running on 80 kill_proc("80", "python") # kill anything on 443 ruby which is generally a rogue listener kill_proc("443", "ruby") # handle errors except Exception as error: log(error) else: print("[!] Sorry, this only works on posix (nix) based systems and is not compatible with this operating system.")