def _set_network_proxy(): if conf.proxy: debug_msg = "setting the HTTP/SOCKS proxy for all network requests" logger.debug(debug_msg) try: _ = urlsplit(conf.proxy) except Exception as ex: err_msg = "invalid proxy address '{0}' ('{1}')".format( conf.proxy, str(ex)) raise PocsuiteSyntaxException(err_msg) hostname_port = _.netloc.split(":") scheme = _.scheme.upper() hostname = hostname_port[0] port = None username = None password = None if len(hostname_port) == 2: try: port = int(hostname_port[1]) except Exception: pass if not all((scheme, hasattr(PROXY_TYPE, scheme), hostname, port)): err_msg = "proxy value must be in format '({0})://address:port'".format( "|".join(_[0].lower() for _ in get_public_type_members(PROXY_TYPE))) raise PocsuiteSyntaxException(err_msg) if conf.proxy_cred: _ = re.search(r"\A(.*?):(.*?)\Z", conf.proxy_cred) if not _: err_msg = "proxy authentication credentials " err_msg += "value must be in format username:password" raise PocsuiteSyntaxException(err_msg) else: username = _.group(1) password = _.group(2) if scheme in (PROXY_TYPE.SOCKS4, PROXY_TYPE.SOCKS5): socks.set_default_proxy( socks.PROXY_TYPE_SOCKS5 if scheme == PROXY_TYPE.SOCKS5 else socks.PROXY_TYPE_SOCKS4, hostname, port, username=username, password=password) socket.socket = socks.socksocket else: if conf.proxy_cred: proxy_string = "{0}@".format(conf.proxy_cred) else: proxy_string = "" proxy_string = "{0}{1}:{2}".format(proxy_string, hostname, port) conf.proxies = {"http": proxy_string, "https": proxy_string}
def check_settings(self, addr, port): if self.OS_TARGET not in get_public_type_members(OS, only_values=True): raise Exception('Can\'t generate shellcode for OS: %s' % self.OS_TARGET) if self.OS_TARGET_ARCH not in ['32bit', '64bit']: raise Exception('Can\'t generate shellcode for ARCH: %s' % self.OS_TARGET_ARCH) if not validate_ip_addr(addr): raise Exception('IP address %s is not valid' % addr) if not 0 <= port <= 65535: raise Exception('PORT %s is not valid' % port)