Socket Timed Out

0

i m trying to do a simple implementation of a traceroute program. I keep getting socket has timed out error. Do you know what might be the problem and how can i solve it?Thanks........................................................................................................................

def ip_info(ip):
    fake_HTTP_header = {
        'referer': 'https://ipinfo.io/',
        'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36',
        'X-Forwarded-For': socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
    }
    res = requests.get('https://ipinfo.io/widget/'+str(ip) , headers = fake_HTTP_header)

    return(json.loads(res.text))


def traceroute(ip, port):
    # setam TTL in headerul de IP pentru socketul de UDP
    totalHops = 5
    proto_icmp = socket.getprotobyname('icmp')
    proto_udp = socket.getprotobyname('udp')


    for ttl in range(1, totalHops+ 1):
        rx = socket.socket(socket.AF_INET, socket.SOCK_RAW, proto_icmp)
        rx.settimeout(1)

        rx.bind(('', port))
        tx = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, proto_udp)
        tx.setsockopt(socket.SOL_IP, socket.IP_TTL, ttl)
        tx.sendto(b'salut', (ip, port))


        try:
            data, curr_addr = rx.recvfrom(512)
            icmp_recv_socket.settimeout(3)
            curr_addr = curr_addr[0]
            print(ip_info(curr_addr))


        except socket.error as socketerror:

            print("Error: ", socketerror)
            curr_addr = None



        finally:
            rx.close()
            tx.close()

        print(curr_addr)

        if curr_addr == ip:
            break

if __name__ == "__main__":

   name = sys.argv[1]
   addr = socket.gethostbyname(name)
   print(addr)
   traceroute(addr, 33434)

python
sockets
traceroute
asked on Stack Overflow May 3, 2020 by AndApo • edited May 4, 2020 by hata

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0