Il y a mieux : les raw sockets ! Cherche sur le forum, je pense en avoir parlé, sinon google est ton ami :)
Ca te permet d'avoir un sniffer dans à peu près tous les langages, alors qu'avec tcpdump, il te sera dur d'avoir du temps réel et tu devras lire les fichiers de capture (au format pcap par exemple).