示例#1
0
 def connect_socks(self, host, port):
     socksconn = None
     try:
         socksconn = socket.create_connection(
             (self.socksip, self.socksport), timeout=self.timeout)
         if not socksutils.basic_handshake_client(socksconn):
             socksconn.close()
         addrtype = socksutils.addr_type(host)
         socksutils.send_request(socksconn,
                                 cmd=socksmsg.CONNECT,
                                 addrtype=addrtype,
                                 dstaddr=host,
                                 dstport=port)
         reply = socksutils.read_reply(socksconn)
         if reply.rep != socksmsg.SUCCEEDED:
             log.info("error response %d returned from socks server" %
                      reply.rep)
             socksconn.close()
             return None
         return socksconn
     except Exception as e:
         log.error("[Exception][connect_socks]: %s" % str(e))
         if socksconn:
             socksconn.close()
         return None
示例#2
0
 def cmd_connect(self, req):
     self.socksconn.sendall(req.pack())
     reply = read_reply(self.socksconn)
     resp = reply.pack()
     headers = [
         (HEADER_SESSION_ID, self.sessionid),
         (HEADER_MSGTYPE, MSGTYPE_DATA)
     ]
     
     self.threads.append(gevent.spawn(self.meeks_write_to_socks_thread))
     self.threads.append(gevent.spawn(self.meeks_read_from_socks_thread))
     # clean_thread will join the other two threads, then clean resources
     gevent.spawn(self.meeks_clean_thread)
     self.status = SESSION_TCP
     return resp, headers
示例#3
0
 def cmd_udp_associate(self, req):
     self.udpsock = bind_local_udp(self.socksconn)
     self.allsocks.append(self.udpsock)
     addrtype, ip, port = sock_addr_info(self.udpsock)
     self.socksconn.sendall(Request(cmd=UDP_ASSOCIATE,
         addrtype=addrtype, dstaddr=ip, dstport=port).pack())
     reply = read_reply(self.socksconn)
     resp = reply.pack()
     headers = [
         (HEADER_SESSION_ID, self.sessionid),
         (HEADER_MSGTYPE, MSGTYPE_DATA)
     ]
     
     self.udp_associate = (reply.bndaddr, reply.bndport)
     self.threads.append(gevent.spawn(self.meeks_write_to_socks_thread))
     self.threads.append(gevent.spawn(self.meeks_read_from_socks_thread))
     # clean_thread will join the other two threads, then clean resources
     gevent.spawn(self.meeks_clean_thread)
     self.status = SESSION_UDP
     return resp, headers
示例#4
0
 def connect_socks(self, host, port):
     socksconn = None
     try:
         socksconn = socket.create_connection((self.socksip, self.socksport), timeout=self.timeout)
         if not socksutils.basic_handshake_client(socksconn):
             socksconn.close()
         addrtype = socksutils.addr_type(host)
         socksutils.send_request(socksconn, cmd=socksmsg.CONNECT,
                     addrtype=addrtype, dstaddr=host, dstport=port)
         reply = socksutils.read_reply(socksconn)
         if reply.rep != socksmsg.SUCCEEDED:
             log.info("error response %d returned from socks server" % reply.rep)
             socksconn.close()
             return None
         return socksconn
     except Exception, e:
         log.error("[Exception][connect_socks]: %s" % str(e))
         if socksconn:
             socksconn.close()
         return None