Dans le processus de débogage d'un bot irc python qui ne semble pas se connecter, je me suis dit "je sais, je vais juste le tcpdump et voir ce qu'il fait." J'ai donc exécuté tcpdump comme d'habitude et il indique que ce sont des paquets capturés, mais n'écrit pas réellement le fichier de cap.
akraut@lance ~/pcaps $ sudo tcpdump -w pyhole -s 0 "port 6667"
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C17 packets captured
17 packets received by filter
0 packets dropped by kernel
4294966881 packets dropped by interface
akraut@lance ~/pcaps $ ls -la
total 8
drwxr-xr-x 2 akraut akraut 4096 Feb 6 11:50 .
drwxr-xr-x 8 akraut akraut 4096 Feb 6 11:50 ..
akraut@lance ~/pcaps $
networking
filesystems
tcpdump
akraut
la source
la source
eth0
t-il? S'il utilise le bouclage ou une autre interface, il n'y aura pas de trafic à vider dans le fichier.17 packets received by filter
cela ne signifie pas qu'il a capturé du trafic?Réponses:
Vous voudrez peut-être vérifier le comportement de tcpdump avec strace, pour voir s'il fait quelque chose d'étrange comme le chrootage, s'il est dans gentoo ou dans une autre distribution qui pourrait provoquer les binaires.
la source
/var/lib/tcpdump
. Et voilà, se trouvent tous mes fichiers de casquettes.Ok, j'ai résolu le mystère. Suivez-moi pour découvrir le TCPDump de Funtoo et le mystère du fichier pcap manquant .
J'ai utilisé strace pour voir ce qui se passe et les lignes pertinentes sont les suivantes:
Donc...
Hé regarde! Tous les fichiers de casquettes que j'ai essayé de créer!
Après avoir regardé les drapeaux d'utilisation avec lesquels tcpdump est construit par défaut, je vois ceci:
Alors pourquoi faire comme ça? Ma théorie va quelque chose comme ceci:
/var/lib/tcpdump
, puis abandonne les privilèges root et commence la capture.En conséquence, quand j'ai spécifié
./blah
oublah
cela a bien fonctionné. Mais/tmp/blah
pas parce qu'il/var/lib/tcpdump/tmp
n'existe pas.Une caractéristique latérale intéressante de tout cela est: lorsque vous utilisez le drapeau suid pour installer tcpdump SetUID, vous pouvez accorder aux utilisateurs l'accès au
tcpdump
groupe sans leur donner un accès sudo ou root. Les utilisations possibles incluent une boîte de capture pour vos ingénieurs réseau ou vos chercheurs.Je souhaite juste que Gentoo / Funtoo ait eu un message sur l'installation qui dit tout cela.
tl; dr: Gentoo / Funtoo mettez vos fichiers pcap dedans
/var/lib/tcpdump
.la source
La syntaxe est correcte: je viens de l'essayer (quoique sur le port 80) et il a généré un fichier pcap dans le répertoire de travail actuel, étant donné les mêmes options que vous utilisez.
Cela pourrait-il avoir quelque chose à voir avec votre répertoire personnel, que vous essayez d'écrire en tant que root (à cause du sudo)? Est-il possible que vous utilisiez des répertoires de départ montés sur NFS avec un root-squashing?
sudo touch ~akraut/pcaps/foo
?Pouvez-vous essayer d'écrire le pcap dans / tmp / ou quelque chose?
la source
sudo tcpdump -w /tmp/blah -s 0 "port 6667"
ça on dirait que ça marche, mais si jesudo su -
commence par l'exécuter puis entcpdump -w /tmp/blah -s 0 "port 6667"
tant que root il dit "Pas de fichier ou répertoire". Le mystère s'approfondit ...