Пример #1
0
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}
Пример #2
0
 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)