5 votes

Reniflage d'URL en Python

Quelqu'un sait-il comment écrire un renifleur de données en direct en Python qui extrait l'adresse IP d'origine et l'URL complète à laquelle on a accédé ? J'ai étudié la possibilité de tirer des données de urlsnarf, mais IPv6 n'est pas pris en charge (et les connexions se feront vers des hôtes IPv6).

Bien que je puisse tirer des données de tcpdump et de greping pour GET/POST qui me laisserait simplement le chemin sur le serveur web, et je n'obtiendrais pas le FQDN associé. Malheureusement, l'utilisation de SQUID avec IPv6 TPROXY n'est pas une option en raison de la configuration de l'environnement.

Est-ce que quelqu'un a une idée sur la façon de faire cela avec les liaisons Python pour libpcap ? Votre aide serait très appréciée :)

Merci :)

2voto

Justin Points 121

Malheureusement, avec IPv6, vous êtes obligé de faire votre propre réassemblage TCP. La bonne nouvelle, c'est que vous n'êtes concerné que par les données URL qui devraient (généralement) se trouver dans un ou deux paquets.

Vous devriez pouvoir vous en sortir en utilisant pylibpcap pour ce faire. Vous voudrez utiliser setfilter sur votre objet pcap pour vous assurer que vous ne regardez que le trafic TCP. En avançant dans votre boucle pcap, vous appliquerez des expressions régulières HTTP à la charge utile. Si vous avez ce qui ressemble à du trafic HTTP, allez-y et essayez d'analyser l'en-tête pour obtenir les données URL. Avec un peu de chance, vous obtiendrez l'URL complète avec un saut de ligne avant la fin du paquet. Sinon, vous devrez procéder à un réassemblage TCP léger.

Oh, et vous voudrez utiliser socket.inet_ntop et socket.getaddrinfo pour imprimer des informations sur l'hôte IPv6.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X