Ir para conteúdo
Fórum Script Brasil

TitoGalego

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre TitoGalego

TitoGalego's Achievements

0

Reputação

  1. Olá! Estou tentando fazer um tracerouter para obter o endereço ip de cada roteador em que meu conjunto de pacotes irá passar até chegar ao local de destino(um site por exemplo). Porém no meu código nada acontecer e gostaria de saber como eu solucionaria esse problema. Segue abaixo o código: """A very simple Python traceroute(8) implementation""" import socket import random __all__ = ['Tracer'] class Tracer(object): def __init__(self, dst='www.google.com.br', hops=30): """Initializes a new tracer object Args: dst (str): Destination host to probe hops (int): Max number of hops to probe """ self.dst = dst self.hops = hops self.ttl = 1 # Pick up a random port in the range 33434-33534 self.port = random.choice(range(33434, 33535)) def run(self, e=None): """Run the tracer Raises: IOError""" try: dst_ip = socket.gethostbyname(self.dst) except socket.error as e: raise IOError('Unable to resolve {}: {}', self.dst, e) text = 'traceroute to {} ({}), {} hops max'.format( self.dst, dst_ip, self.hops ) print(text) while True: receiver = self.create_receiver() sender = self.create_sender() sender.sendto(b'', (self.dst, self.port)) addr = None try: data, addr = receiver.recvfrom(1024) except socket.error: raise IOError('Socket error: {}'.format(e)) finally: receiver.close() sender.close() if addr: print('{:<4} {}'.format(self.ttl, addr[0])) else: print('{:<4} *'.format(self.ttl)) self.ttl += 1 if addr[0] == dst_ip or self.ttl > self.hops: break def create_receiver(self): """ Creates a receiver socket Returns: A socket instance Raises: IOError """ s = socket.socket( family=socket.AF_INET, type=socket.SOCK_RAW, proto=socket.IPPROTO_ICMP ) try: s.bind(('192.168.0.18', self.port)) except socket.error as e: raise IOError('Unable to bind receiver socket: {}'.format(e)) return s def create_sender(self): """ Creates a sender socket Returns: A socket instance """ s = socket.socket( family=socket.AF_INET, type=socket.SOCK_DGRAM, proto=socket.IPPROTO_UDP ) s.setsockopt(socket.SOL_IP, socket.IP_TTL, self.ttl) return s if __name__ == "__main__": tracert = Tracer().run()
×
×
  • Criar Novo...