Lire dans les paquets
Niveau :
Résumé : ngrep ; netsed ; tcpdump | strings
Grep
Pour lire ce qui passe en TCP en filtrer des mots clés vous avez plusieurs techniques.
Commençons par la technique bourrin, mais qui marche :
# on dumpe en gardant les data, dont on extrait les chaines de caractère $ tcpdump -s0 -w - port 80 | strings | egrep "html|head"
Pratique et facile à mémoriser. Cette technique permet pas mal de choses, mais est à considérer pour des serveur peu chargés.
Ngrep
Ngrep lui, est capable de vous sortir uniquement les paquets dont les données matchent une expression. L’usage n’est pas forcément le même que le précédent, ici on a un paquet complet :
$ ngrep "html|head" "port 80"
Pratique quand on est à la recherche d’un paquet foireux, ou qu’on veut loguer ce qui ce passe pendant un problème.
Sed
Un autre outil pour tester une application réseau, c’est netsed (du paquet bien nommé). Une commande bien utile qui crée un proxy tcp ou udp capable de modifier les paquets en direct.
Il ne fait ça qu’avec des expressions basiques :
# Attention pas de résolution de nom $ netsed tcp 1080 1.2.3.4 80 's/Developpement/Production' # Test $ telnet localhost 1080
Attention, contrairement à ce qu’on pourrait croire, ce ne sont pas des vraies expression sed, on est assez limité. D’autre part netsed fonctionne sur des paquets, ce qui veut dire que dans un petit nombre de cas, il ne fait pas ce qu’on veut (données à matcher répartie sur 2 paquets).
En fait, il faut prendre cet outil pour ce qu’il est, un outil de test et de debug. D’autant plus qu’il faut toucher au client pour le rediriger vers le port d’écoute de netsed.