Pregunta

Me gustaría escribir un programa para extraer las direcciones URL de los sitios web visitados por un sistema (una dirección IP) a través de la captura de paquetes .. Creo que este URL vendrá en la sección de datos (es decir, no en cualquiera de las cabeceras - ethernet / IP / TCP-UDP) .. (Tales programas se conocen como rastreadores http veces, supone que no puedo usar cualquier herramienta disponible). Como un principiante, acabo ahora pasado por este programa básico sniffer: sniffex.c . . ¿puede alguien por favor dígame en qué dirección debía proceder ..

¿Fue útil?

Solución

Nota: En la información a continuación, se supone que también incluye GET POST y los otros métodos HTTP también

.

Es, definitivamente, va a ser mucho más trabajo de buscar en un paquete, pero si se captura toda la corriente que debe ser capaz de obtener de las cabeceras HTTP enviado.

Trate de buscar en el encabezado de host si que se proporciona, y también lo que es en realidad lo solicitado por el GET. El GET puede ser una URL completa o simplemente un nombre de archivo en el servidor.

También tenga en cuenta que esto no tiene nada que ver con conseguir un nombre de dominio de una dirección IP. Si desea que el nombre de dominio, usted tiene que cavar en los datos.

Ejemplo rápido en mi máquina, de Wireshark:

GET http://www.google.ca HTTP/1.1
Host: www.google.ca
{other headers follow}

Otro ejemplo, no desde un navegador, y con sólo una ruta en el GET:

GET /ccnet/XmlStatusReport.aspx HTTP/1.1
Host: example.com

En el segundo ejemplo, el URL real es http://example.com/ccnet/XmlStatusReport. aspx

Otros consejos

No, no hay suficiente información. Un solo IP puede corresponder a cualquier número de nombres de dominio, y cada uno de esos dominios podría tener literalmente un número infinito de direcciones URL.

Sin embargo, mira gethostbyaddr (3) para ver cómo se hace una búsqueda de DNS inversa de la IP para al menos obtener el nombre canónico para que la propiedad intelectual.

Actualización: como se ha editado la pregunta, @aehiilrs tiene una mucho mejor answe r.

Lo que es posible que desee una búsqueda DNS inversa. Gethostbyaddr llamar para eso.

Si está utilizando Linux, se puede añadir un filtro en iptables para añadir una nueva regla que busca los paquetes que contienen peticiones HTTP GET y obtener la url.

Así que la regla se verá así.

Para cada paquete va en el puerto 80 de localhost -> comprobar si el paquete contiene petición GET -> recuperar la dirección URL y guardarlo

Este enfoque debería funcionar en todos los casos, incluso para los encabezados de HTTPS.

Tener un vistazo a PasTmon. http://pastmon.sourceforge.net

yo estaba investigando en algo similar y me encontré con esto. Espero que esto podría ser un buen comienzo si está utilizando Linux -. Justniffer

http://justniffer.sourceforge.net/

También hay un buen script en Python agarrar el tráfico HTTP que ayudaría si usted está buscando para obtener información de las peticiones HTTP.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top