0

ライブラリなしで簡単なtracerouteを作りたいです。

Wireshark で着信応答が表示されますが、メッセージを受信できません。のポートは のポートreceive_socketと同じsend_socketであり、指定されたプロトコルは正しい必要があります。

def traceroute
  local_host = '0.0.0.0'
  remote_host = '8.8.8.8'
  traceroute_port = 33434
  random_port = rand(10000..20000)

  # Create UDP-Socket
  udp_socket = UDPSocket::new
  udp_socket.bind(local_host, random_port)
  udp_socket.setsockopt( 0, Socket::IP_TTL, 3)

  # Send Data
  udp_socket.connect(remote_host, traceroute_port)
  udp_socket.send('Traceroute', 0)

  # Create Receive-Socket
  receive_socket = Socket.open(Socket::PF_INET, Socket::SOCK_RAW, Socket::IPPROTO_ICMP)
  receive_socket.bind(Socket.pack_sockaddr_in(random_port, local_host))

  # Receive Data
  begin
    p receive_socket.recvfrom(1024)
  rescue SocketError => exception
    puts exception.message
  end
end

誰かが私を助けることができれば、それは素晴らしいことです.

4

0 に答える 0