Exemplo n.º 1
0
	def sendSYN(rxp_socket):
		print "Sending SYN! from socket", rxp_socket

		header = RxPPacketHeader()
		header.src_port = rxp_socket.source_address[1]
		header.dst_port = rxp_socket.destination_address[1]
		header.syn_flag = 1

		packet = RxPPacket(header)

		number_of_resends = RxPPacket.MAX_RESEND_LIMIT

		while number_of_resends > 0:
			print "Attempt #", (RxPPacket.MAX_RESEND_LIMIT - number_of_resends) + 1
			rxp_socket.sendPacket(packet)
			try:
				address, packet = rxp_socket.receivePacket(RxPPacket.MAX_PACKET_SIZE)

				print "Verifying packet"

				if not packet.verifyPacket(): #invalid checksum
					print("Incorrect checksum for sent data ack. Discarding packet")
					number_of_resends -= 1
				elif packet.header.syn_flag == 0 or packet.header.ack_flag == 0:
					print("Not a SYN ACK! Discarding")
					number_of_resends -= 1
				else:
					print("Received succesful SYN ACK")
					return packet
			except Exception as e:
				if str(e) == "timed out": 
					print("Sending SYN timed out. " + str(number_of_resends - 1) + " attempts remaining")
					number_of_resends -= 1
				elif str(e).find("EOFError"):
					print("Packet was mangled! resending!")
					number_of_resends -= 1
				else:
					print "Grr"
					print str(e)
					raise e
		raise RxPException("Sending SYN failed!")

		return None
Exemplo n.º 2
0
	def sendSYNACK(rxp_socket): 
		print "Sending SYNACK!"

		header = RxPPacketHeader()
		header.src_port = rxp_socket.source_address[1]
		header.dst_port = rxp_socket.destination_address[1]
		header.syn_flag = 1
		header.ack_flag = 1

		packet = RxPPacket(header)

		number_of_resends = RxPPacket.MAX_RESEND_LIMIT

		while number_of_resends > 0:

			rxp_socket.sendPacket(packet)

			try:
				address, packet = rxp_socket.receivePacket(RxPPacket.MAX_PACKET_SIZE)

				if not packet.verifyPacket(): #invalid checksum
					print("Incorrect checksum for sent data ack. Discarding packet")
					number_of_resends -= 1
				elif packet.header.syn_flag == 1 or packet.header.ack_flag == 0:
					print("Not a ACK! Discarding")
					number_of_resends -= 1
				else:
					print("Received succesful ACK to our SYNACK")
					return packet
			except Exception as e:
				if str(e) == "timed out": 
					print("Sending SYN timed out. " + str(number_of_resends) + " resends remaining")
					number_of_resends -= 1
				else: 
					raise e
				

		return None