Skip to content

Commit 34a795f

Browse files
committed
add port forwarding
1 parent 3a4875f commit 34a795f

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

neoreg.py

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,15 @@ def _randbelow(n):
165165

166166

167167
class session(Thread):
168-
def __init__(self, conn, pSocket, connectURLs, redirectURLs):
168+
def __init__(self, conn, pSocket, connectURLs, redirectURLs, FwdTarget):
169169
Thread.__init__(self)
170170
self.pSocket = pSocket
171171
self.connectURLs = connectURLs
172172
self.redirectURLs = redirectURLs
173173
self.conn = conn
174174
self.connect_closed = False
175-
self.socks_connected = False
175+
self.session_connected = False
176+
self.fwd_target = FwdTarget
176177

177178
def url_sample(self):
178179
return random.choice(self.connectURLs)
@@ -269,6 +270,13 @@ def handleSocks(self, sock):
269270
except timeout:
270271
return False
271272

273+
def handleFwd(self, sock):
274+
log.debug("Forward detected")
275+
host, port = self.fwd_target.split(':', 1)
276+
mark = self.setupRemoteSession(host, int(port))
277+
return bool(mark)
278+
279+
272280
def error_log(self, str_format, headers):
273281
if K['X-ERROR'] in headers:
274282
message = headers[K["X-ERROR"]]
@@ -431,8 +439,12 @@ def writer(self):
431439

432440
def run(self):
433441
try:
434-
self.socks_connected = self.handleSocks(self.pSocket)
435-
if self.socks_connected:
442+
if self.fwd_target:
443+
self.session_connected = self.handleFwd(self.pSocket)
444+
else:
445+
self.session_connected = self.handleSocks(self.pSocket)
446+
447+
if self.session_connected:
436448
log.debug("Staring reader")
437449
r = Thread(target=self.reader)
438450
r.start()
@@ -449,7 +461,7 @@ def run(self):
449461
log.error('[RUN] {}'.format(e))
450462
raise e
451463
finally:
452-
if self.socks_connected:
464+
if self.session_connected:
453465
self.closeRemoteSession()
454466

455467

@@ -607,6 +619,7 @@ def file_write(filename, data):
607619
parser = argparse.ArgumentParser(description="Socks server for Neoreg HTTP(s) tunneller. DEBUG MODE: -k (debug_all|debug_base64|debug_headers_key|debug_headers_values)")
608620
parser.add_argument("-u", "--url", metavar="URI", required=True, help="The url containing the tunnel script", action='append')
609621
parser.add_argument("-r", "--redirect-url", metavar="URL", help="Intranet forwarding the designated server (only jsp(x))", action='append')
622+
parser.add_argument("-t", "--target", metavar="IP:PORT", help="Network forwarding Target, After setting this parameter, port forwarding will be enabled")
610623
parser.add_argument("-k", "--key", metavar="KEY", required=True, help="Specify connection key")
611624
parser.add_argument("-l", "--listen-on", metavar="IP", help="The default listening address.(default: 127.0.0.1)", default="127.0.0.1")
612625
parser.add_argument("-p", "--listen-port", metavar="PORT", help="The default listening port.(default: 1080)", type=int, default=1080)
@@ -701,7 +714,15 @@ def file_write(filename, data):
701714
INIT_COOKIE = args.cookie
702715
PROXY = { 'http': args.proxy, 'https': args.proxy } if args.proxy else None
703716

704-
print(" Starting socks server [%s:%d]" % (args.listen_on, args.listen_port) )
717+
if args.target:
718+
if not re.match(r'[^:]+:\d+', args.target):
719+
print("[!] Target parameter error: {}".format(args.target))
720+
exit()
721+
print(" Starting Forward [%s:%d] => [%s]" % (args.listen_on, args.listen_port, args.target))
722+
else:
723+
print(" Starting SOCKS5 server [%s:%d]" % (args.listen_on, args.listen_port))
724+
725+
705726
print(" Tunnel at:")
706727
for url in urls:
707728
print(" "+url)
@@ -746,7 +767,7 @@ def file_write(filename, data):
746767
sock, addr_info = servSock.accept()
747768
sock.settimeout(SOCKTIMEOUT)
748769
log.debug("Incomming connection")
749-
session(conn, sock, urls, redirect_urls).start()
770+
session(conn, sock, urls, redirect_urls, args.target).start()
750771
except KeyboardInterrupt as ex:
751772
break
752773
except timeout:

0 commit comments

Comments
 (0)