def __send_icmp_request(self, icmp_socket, dest_addr, packet_id, sequence):
# ICMP Header :
# -------------------------------------------------------------------
# | type(8) | code(8) | checksum(16) | packet_id(16) | sequence(16) |
# -------------------------------------------------------------------
#
packet_checksum = 0
header = struct.pack('bbHHh', ICMP_ECHO_REQUEST, 0, packet_checksum, packet_id, sequence)
packet_bytes = struct.calcsize('d')
data = (128 - packet_bytes) * '0'
data = struct.pack('d', time.time()) + data
packet_checksum = self.__checksum(header + data)
header = struct.pack('bbHHh', ICMP_ECHO_REQUEST, 0, socket.htons(packet_checksum), packet_id, sequence)
packet = header + data
icmp_socket.sendto(packet, (dest_addr, 1))
评论列表
文章目录