周日花了大概3-4个小时把代码巧了遍,理解了下。做完前面的netcat理解大致原理和流程就不难了。不过要期末考试了,我就不费心费力去调代码了,里面肯定有很多bug。。以我先前对netcat的代码调试经验来看。
核心就一个,中间代理上两个socket,一个和远程主机通信,一个和本地客户端通信,就这么简单。代码献上,有兴趣的朋友可以试着调试下。
import sys
import socket
import threading
#打开server端口,listen,处理传进来的数据
def server_loop(local_host,local_port,remote_host,remote_port,receive_first):
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
server.bind(local_host,local_port)
except:
print('[!!] Failed to listen on %s:%d'%(local_host,local_port))
print('[!!] Check for other listening sockets or correct permissions')
sys.exit(0)
print('[*] Listening on %s:%d'%(local_host,local_port))
server.listen(5)
while True():
client_socket,addr = server.accept()
print('[==>] Received incoming connection from %s:%d'%(addr[0],addr[1]))
proxy_thread = threading.Thread