Obtenha IPs públicos de páginas da Web acessadas?

3

Eu gostaria de poder obter os IPs públicos dos sites que estou acessando com meu PC de uma forma como:

www.google.es - public IP1 
www.cdn.facebook.com - public IP2

e assim por diante. Acho que isso deve ser feito registrando o tráfego DNS, então tentei usar o wireshark como parte de uma solução que encontrei em outra resposta:

tshark -f "udp port 53" -Y "dns.qry.type == A and dns.flags.response == 0"

No entanto, isso parece mostrar apenas conexões entre meu roteador e minha máquina, a lista está cheia de pares como:

192.168.200.250 -> 192.168.200.1
192.168.200.1 -> 192.168.200.250'
    
por Ruben 28.11.2016 / 10:31

2 respostas

2

Você pode instalar o DNSmasq localmente e adicionar essa opção ao arquivo conf log-facility=/var/log/dnsmasq.log log-queries e, em seguida, configurar seu sistema para usar 127.0.0.1 ou ::1 como o DNS que resolve seu trabalho para mim.

Em seguida, extraia os dados como quiser e faça o que você quiser com eles

ou instale o Bind localmente. A maioria das distros a instalação padrão do Bind será não-autorizada somente em cache e adicionará um bloco logging {} config (como descrito no Bind 9 Referência de configuração ).

    
por 28.11.2016 / 11:00
0

Este pequeno script pode fornecer os resultados que você está procurando. Evitei pesquisas de DNS, preferindo usar solicitações HTTP reais (portas 80 / http e 443 / https).

tshark -nlp -f '(port 80 or port 443) and (tcp[tcpflags] & (tcp-syn|tcp-ack)) == (tcp-syn|tcp-ack)' 2>/dev/null |
    stdbuf -oL awk '{print $3}' |
    while IFS= read -r ip
    do
        name=$(dig +short -x "$ip")
        printf "%-16s%s\n" "$ip" "${name:-$ip}"
    done |
    uniq

Exemplo de saída

212.58.244.27   bbc-vip146.telhc.bbc.co.uk.
78.129.164.123  free.hands.com.
195.20.242.89   195.20.242.89

Esse código gerará resultados apenas para solicitações HTTP, enquanto a pesquisa em consultas DNS encontrará tudo e mais alguma coisa. No entanto, esteja ciente de que ele gera os nomes de uma pesquisa de rDNS no endereço IP, portanto, nem sempre há uma correspondência direta entre o nome do host HTTP acessado e o nome retornado nos resultados.

    
por 28.11.2016 / 11:09