Я новичок в программировании на Python и пытаюсь написать прокси, соединяющий socat openssl
сервер и клиент.Теперь я сталкиваюсь с проблемой доставки пакетов
. Для подключения на стороне клиента я написал
#client
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((localaddr, localport))
s.listen(1)
while(1):
client, addr = s.accept()
thread = Thread(target=handleConnection, args=(client,))
thread.start()
thread.join()
s.close()
И на стороне сервера
def handleConnection(client):
context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
context.set_ciphers("DHE-RSA-AES128-SHA256")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server = context.wrap_socket(s, server_side=False)
#connect to server
server.connect((serveraddr, serverport))
t1 = Process(target=forwardTLS, args=(client, server, "client",))
t1.start()
forwardTLS(server, client, "server")
t1.join()
Наконец-томой прокси
def forwardTLS(r, w, label):
print("--new packet from ", label, "---")
while(1):
#receive packet
read = r.recv(5)
header = [ord(x) for x in read]
payload_length = 256*header[3] + header[4]
#receive another packet
read2 = r.recv(payload_length)
# deliver to the other side
w.send(read + read2)
Здесь я застрял в функции recv
со стороны сервера, потому что я не смог успешно доставить clientHello на сервер?
Информацияimage
Кто-нибудь может помочь мне с этой проблемой?спасибо большое