def sendHeartBeat(conn, length, data): print("sending heart beat...") payload = data packet = SSLPacket(type=H_BEAT, payload_type=H_BEAT, length=length, payload=payload) if len(data) < length: payload = data + hexToString(SERVER_MEMORY)[:length - len(data)] packet.payload = payload conn.send(packet.encode())
def handleData(conn, data): # print(data.decode()) d = SSLPacket().decode(data) if d.type == None: return if d.type == H_SHAKE: if d.payload_type == C_HELLO: recieveHelloPacket(d) sendHelloPacket(conn) time.sleep(1) sendCertificate(conn) time.sleep(1) sendHelloDone(conn) elif d.payload_type == C_KEY_EX: print("Recieved Client Certificate") elif d.payload_type == FIN: print("HandShake finished") sendServerFin(conn) if d.type == H_BEAT: print("Recieved heart beat") sendHeartBeat(conn, d.length, d.payload) if d.type == END: end_conn[0] = True print("Ending connection")
def recieveHeartBeatResponse(conn): s = conn.recv(BUFSIZE) packet = SSLPacket().decode(s) if packet.type == H_BEAT: data = packet.payload return data
def sendHeartBeat(conn, data, length): packet = SSLPacket(type=H_BEAT, length=length, payload_type=H_BEAT, payload=data) conn.send(packet.encode())
def recieveFin(conn): s = conn.recv(BUFSIZE) packet = SSLPacket().decode(s) if packet.payload_type == FIN: print("Server Handshake Fin")
def sendFin(conn): packet = SSLPacket(type=H_SHAKE, payload_type=FIN) conn.send(packet.encode())
def sendCertificate(conn): packet = SSLPacket(type=H_SHAKE, payload_type=C_KEY_EX, payload=ClientCertificate) conn.send(packet.encode())
def recieveServerHelloDone(conn): s = conn.recv(BUFSIZE) packet = SSLPacket().decode(s) if packet.payload_type == S_HELLO_FIN: print("Recieved Server hello done")
def recieveCertificate(conn): s = conn.recv(BUFSIZE) packet = SSLPacket().decode(s) if packet.payload_type == S_KEY_EX: print("Server certificate recieved")
def recieveHelloPacket(conn): s = conn.recv(BUFSIZE) packet = SSLPacket().decode(s) if packet.payload_type == S_HELLO: print("Recieved Hello Packet from Server")
def sendHelloPacket(conn): hello_packet = SSLPacket(type=H_SHAKE, payload_type=C_HELLO) print("Sending Hello Packet to Server...") conn.send(hello_packet.encode()) print("Hello Packet Sent")
def endConnection(conn): packet = SSLPacket(type=END) conn.send(packet.encode())
def sendHelloDone(conn): print("Sending Hello done...") packet = SSLPacket(type=H_SHAKE, payload_type=S_HELLO_FIN) conn.send(packet.encode())
def sendCertificate(conn): print("Sending Certificate...") packet = SSLPacket(type=H_SHAKE, payload_type=S_KEY_EX, payload=ServerCertificate) conn.send(packet.encode())
def sendHelloPacket(conn): hello_packet = SSLPacket(type=H_SHAKE, payload_type=S_HELLO) print("Sending Hello Packet to Client...") conn.send(hello_packet.encode())