def _install_socks_proxy_opener(proxytype, proxyaddr, proxyport=None):
""" Install a socks proxy handler so that all urllib2 requests are routed through the socks proxy. """
try:
import socks
from sockshandler import SocksiPyHandler
except ImportError:
warn('WARNING: Failed to load PySocks module. Try installing it with `pip install PySocks`.')
return
if proxytype == 4:
proxytype = socks.SOCKS4
elif proxytype == 5:
proxytype = socks.SOCKS5
else:
abort("Unknown Socks Proxy type {0}".format(proxytype))
opener = urllib2.build_opener(SocksiPyHandler(proxytype, proxyaddr, proxyport))
urllib2.install_opener(opener)
python类SOCKS5的实例源码
def __init__(self, roomId):
proxyIp = "216.189.158.147"
proxyPort = 52940 # socks ??????
# self.sock = socks.socksocket()
# self.sock.set_proxy(socks.SOCKS5, proxyIp, proxyPort)
self.mongo_clent = MongoDBClient.MongoDBClient('douyu')
# socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, proxyIp, proxyPort)
socks.set_default_proxy(socks.PROXY_TYPE_SOCKS5, proxyIp, proxyPort)
socket.socket = socks.socksocket
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.codeLocalToServer = 689
self.serverToLocal = 690
self.gid = -9999
self.roomId = roomId
self.server = {}
self.log("??? :" + str(self.roomId))
def init_proxy(proxy):
res = urlparse(proxy)
use_proxy = True
if res.scheme == 'socks4':
mode = socks.SOCKS4
elif res.scheme == 'socks5':
mode = socks.SOCKS5
elif res.scheme == 'http':
mode = socks.HTTP
else:
use_proxy = False
ksprint.print_error('Unknown proxy "%s", starting without proxy...' % proxy)
if use_proxy:
socks.set_default_proxy(mode, res.netloc.split(':')[0], int(res.netloc.split(':')[1]))
soc.socket = socks.socksocket
ksprint.print_success('[*] Proxy "%s" using' % proxy)
def init_proxy(proxy):
res = urlparse(proxy)
use_proxy = True
if res.scheme == 'socks4':
mode = socks.SOCKS4
elif res.scheme == 'socks5':
mode = socks.SOCKS5
elif res.scheme == 'http':
mode = socks.HTTP
else:
use_proxy = False
ksprint.print_error('Unknown proxy "%s", starting without proxy...' % proxy)
if use_proxy:
socks.set_default_proxy(mode, res.netloc.split(':')[0], int(res.netloc.split(':')[1]))
soc.socket = socks.socksocket
ksprint.print_success('[*] Proxy "%s" using' % proxy)
def init_proxy(proxy):
res = urlparse(proxy)
use_proxy = True
if res.scheme == 'socks4':
mode = socks.SOCKS4
elif res.scheme == 'socks5':
mode = socks.SOCKS5
elif res.scheme == 'http':
mode = socks.HTTP
else:
use_proxy = False
ksprint.print_error('Unknown proxy "%s", starting without proxy...' % proxy)
if use_proxy:
socks.set_default_proxy(mode, res.netloc.split(':')[0], int(res.netloc.split(':')[1]))
soc.socket = socks.socksocket
ksprint.print_success('[*] Proxy "%s" using' % proxy)
def _update(__version__, __code_name__, language, socks_proxy):
try:
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks_version, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
data = requests.get(url, headers={"User-Agent": "OWASP Nettacker"}).content
if version() is 3:
data = data.decode("utf-8")
if __version__ + ' ' + __code_name__ == data.rsplit('\n')[0]:
info(messages(language, 103))
else:
warn(messages(language, 101))
warn(messages(language, 85))
except:
warn(messages(language, 102))
return
def _check(__version__, __code_name__, language, socks_proxy):
try:
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks_version, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
data = requests.get(url, headers={"User-Agent": "OWASP Nettacker"}).content
if version() is 3:
data = data.decode("utf-8")
if __version__ + ' ' + __code_name__ == data.rsplit('\n')[0]:
info(messages(language, 103))
else:
warn(messages(language, 101))
except:
warn(messages(language, 102))
return
def __connect_to_port(port, timeout_sec, target, retries, language, num, total, time_sleep, ports_tmp_filename, socks_proxy):
exit = 0
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks.SOCKS5, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
while 1:
try:
if timeout_sec is not None:
my_ftp = FTP(timeout=timeout_sec)
else:
my_ftp = FTP()
my_ftp.connect(target, int(port))
exit = 0
break
except:
exit += 1
if exit is retries:
error(messages(language, 68).format(target, port, str(num), str(total)))
try:
f = open(ports_tmp_filename, 'a')
f.write(str(port) + '\n')
f.close()
except:
pass
break
time.sleep(time_sleep)
def test(target, retries, timeout_sec, user_agent, http_method, socks_proxy):
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks_version, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
n = 0
while 1:
try:
if http_method == "GET":
r = requests.get(target, timeout=timeout_sec, headers=user_agent, verify=True)
elif http_method == "HEAD":
r = requests.head(target, timeout=timeout_sec, headers=user_agent, verify=True)
return 0
except:
n += 1
if n is retries:
return 1
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
config.PROXY_ENABLE = 0
return
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
config.PROXY_ENABLE = 0
return
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def __init__(self, host="localhost", port=1080, protocol=socks.SOCKS5):
self.host = host
self.port = port
self.protocol = protocol
def __init__(self):
self._proxy_type = socks.SOCKS5
self._addr = '127.0.0.1'
self._connection_port = 9050
self._control_port = 9051
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
config.PROXY_ENABLE = 0
return
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
config.PROXY_ENABLE = 0
return
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
config.PROXY_ENABLE = 0
return
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def __init__(self, config):
'''Takes dictionary and gets all information, if it is not in dictionary uses default'''
self.host = config.get("host", "irc.freenode.net")
self.port = config.get("port", 6667)
self.ipv6 = config.get("IPv6", False)
self.ssl = config.get("SSL", False)
self.sasl = config.get("SASL", False)
self.do_auth = config.get("do_auth", False)
self.auth_pass = config.get("auth_pass")
self.auth_user = config.get("auth_user")
self.nick = config.get("nick", "EzzyBot")
self.ident = config.get("ident", "EzzyBot")
self.realname = config.get("realname", "EzzyBot: a simple python framework for IRC bots.")
self.channels = config.get("channels", ["#EzzyBot"])
self.analytics = config.get("analytics", True)
self.quit_message = config.get("quit_message", "EzzyBot: a simple python framework for IRC bots.")
self.flood_protection = config.get("flood_protection", True)
self.permissions = config.get("permissions", {})
self.proxy = config.get("proxy", False)
self.proxy_type = config.get("proxy_type", "SOCKS5")
self.proxy_host = config.get("proxy_host", "")
self.proxy_port = config.get("proxy_port", 1080)
self.proxy_type = {"SOCKS5": socks.SOCKS5, "SOCKS4": socks.SOCKS4}[self.proxy_type]
self.log_channel = config.get("log_channel", "#ezzybot-debug")
self.password = config.get("pass")
self.fifo = config.get("fifo", True)
self.command_limiting_initial_tokens = config.get("command_limiting_initial_tokens", 20)
self.command_limiting_message_cost = config.get("command_limiting_message_cost", 4)
self.command_limiting_restore_rate = config.get("command_limiting_restore_rate", 0.13)
self.limit_override = config.get("limit_override", ["admin", "dev"])
self.add_devs = config.get("add_devs", False)
self.pingfreq = 60
self.timeout = self.pingfreq * 2
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
global default_socket
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
raise
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def load_proxy_config():
if config.PROXY_ENABLE:
if config.PROXY_TYPE == "HTTP":
proxy_type = socks.HTTP
elif config.PROXY_TYPE == "SOCKS4":
proxy_type = socks.SOCKS4
elif config.PROXY_TYPE == "SOCKS5":
proxy_type = socks.SOCKS5
else:
xlog.error("proxy type %s unknown, disable proxy", config.PROXY_TYPE)
config.PROXY_ENABLE = 0
return
socks.set_default_proxy(proxy_type, config.PROXY_HOST, config.PROXY_PORT, config.PROXY_USER, config.PROXY_PASSWD)
def __connect_to_port(port, timeout_sec, target, retries, language, num, total, time_sleep, ports_tmp_filename,
thread_number, total_req, socks_proxy):
exit = 0
port = int(port)
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks_version, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
while 1:
try:
if timeout_sec is not None:
server = smtplib.SMTP(target, int(port), timeout=timeout_sec)
else:
server = smtplib.SMTP(target, int(port))
server.starttls()
server.quit()
exit = 0
break
except:
exit += 1
if exit is retries:
error(messages(language, 74).format(target, port, str(num), str(total)))
try:
f = open(ports_tmp_filename, 'a')
f.write(str(port) + '\n')
f.close()
except:
pass
break
time.sleep(time_sleep)
def connect(host, port, timeout_sec, log_in_file, language, time_sleep, thread_tmp_filename, socks_proxy):
_HOST = messages(language, 53)
_USERNAME = messages(language, 54)
_PASSWORD = messages(language, 55)
_PORT = messages(language, 56)
_TYPE = messages(language, 57)
_DESCRIPTION = messages(language, 58)
time.sleep(time_sleep)
try:
if socks_proxy is not None:
socks_version = socks.SOCKS5 if socks_proxy.startswith('socks5://') else socks.SOCKS4
socks_proxy = socks_proxy.rsplit('://')[1]
socks.set_default_proxy(socks_version, str(socks_proxy.rsplit(':')[0]), int(socks_proxy.rsplit(':')[1]))
socket.socket = socks.socksocket
socket.getaddrinfo = getaddrinfo
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if timeout_sec is not None:
s.settimeout(timeout_sec)
s.connect((host, port))
s.close()
info(messages(language, 80).format(host, port))
save = open(log_in_file, 'a')
save.write(json.dumps({_HOST: host, _USERNAME: '', _PASSWORD: '', _PORT: port, _TYPE: 'tcp_connect_port_scan',
_DESCRIPTION: messages(language, 79)}) + '\n')
save.close()
thread_write = open(thread_tmp_filename, 'w')
thread_write.write('0')
thread_write.close()
return True
except:
return False