diff --git a/bin/proxy.exe b/bin/proxy.exe index aa2cb65..99ca0b6 100755 Binary files a/bin/proxy.exe and b/bin/proxy.exe differ diff --git a/bin/webserver.exe b/bin/webserver.exe index 9c40946..62b3c32 100755 Binary files a/bin/webserver.exe and b/bin/webserver.exe differ diff --git a/lib/SocksServer.py b/lib/SocksServer.py index adcb6da..401ae67 100644 --- a/lib/SocksServer.py +++ b/lib/SocksServer.py @@ -26,6 +26,7 @@ def __init__(self, socket, event=threading.Event(), bufferSize=Defaults['buffers def run(self): self.event.set() #all done self.server.listen(50) + self.server.setblocking(True) wrapper_channel, address = self.server.accept() self.iserver(wrapper_channel) wrapper_channel.close() @@ -182,7 +183,10 @@ def iserver(self, wrapper_channel): self.lock.acquire() try: - wrapper_channel.send((struct.pack('!HH',SocketDict[self.srcPort(s)][0],len(data))+data)) + wrapper_channel.send((struct.pack('!HH',SocketDict[self.srcPort(s)][0],len(data))+data)) + except (TypeError,socket.error, KeyError) as e: + print "[-] Send Failed:", e + pass finally: if debug >4: print "[T] Write to channel releasing 1" self.lock.release() diff --git a/lib/TunnaClient.py b/lib/TunnaClient.py index c8372ff..c1b7fcd 100644 --- a/lib/TunnaClient.py +++ b/lib/TunnaClient.py @@ -49,9 +49,9 @@ def Pinging_Thread(self): print "[+] Starting Ping thread" #self.ptc=threading.Condition() wait=True - p=0.5 + p=0.1 while 1: #loop forever - if wait: + if wait and (self.ping_delay > 0): self.ptc.acquire() self.ptc.wait(self.ping_delay+self.penalty) #send ping to server interval + penalty self.ptc.release() @@ -210,7 +210,7 @@ def __init__(self, url , options): print "[-] Unknown server OS" #2nd request: send connection options to webshell - In php this thread will stall - self.t = threading.Thread(target=self.Threaded_request, args=(remote_port,remote_ip)) + self.t = threading.Thread(target=self.Threaded_request, args=(remote_port,remote_ip,self.options['useSocks'])) self.t.start() #start the thread except Exception, e: diff --git a/lib/socks4aServer.py b/lib/socks4aServer.py index 9fe7878..4376555 100755 --- a/lib/socks4aServer.py +++ b/lib/socks4aServer.py @@ -45,6 +45,7 @@ def __init__(self, socket, event=threading.Event(), bufferSize=Defaults['bufferS def run(self): self.event.set() #all done self.server.listen(50) + self.server.setblocking(True) wrapper_channel, address = self.server.accept() self.iserver(wrapper_channel) wrapper_channel.close() @@ -201,7 +202,10 @@ def iserver(self, wrapper_channel): self.lock.acquire() try: - wrapper_channel.send((struct.pack('!HH',SocketDict[self.srcPort(s)][0],len(data))+data)) + wrapper_channel.send((struct.pack('!HH',SocketDict[self.srcPort(s)][0],len(data))+data)) + except (TypeError,socket.error, KeyError) as e: + print "[-] Send Failed:", e + pass finally: if debug >4: print "[T] Write to channel releasing 1" self.lock.release() diff --git a/proxy.py b/proxy.py index 1eb45ec..3ea7fc4 100644 --- a/proxy.py +++ b/proxy.py @@ -66,6 +66,9 @@ def main(): options=dict(Defaults.items() + vars(args).items()) if args else Defaults #If missing options use Default + if options['remote_port']: + options['useSocks']=False + if not options['local_port']: parser.print_help() parser.error("Missing local port") diff --git a/webserver.py b/webserver.py index 3d3b8fb..0490436 100755 --- a/webserver.py +++ b/webserver.py @@ -264,7 +264,6 @@ def startSocks(self,session): if self.debug > 3: print "[Debug] starting socks executable" #./Uploaded Executable random_port self.fileRun(session,SocksServerSocket.getsockname()[1]) - time.sleep(1) else: #else start proxy in thread if self.debug > 3: print "[Debug] starting internal socks" event = threading.Event() @@ -280,7 +279,7 @@ def startSocks(self,session): event.wait() session['SocksThread'] = SocksThread - + time.sleep(1) sock = socket.socket() sock.connect(('localhost',SocksServerSocket.getsockname()[1])) sock.setblocking(0)