使用tcpdump增长日志文件

时间:2012-03-30 19:21:33

标签: c network-programming gdb tail tcpdump

所有

我试图调试一个简单的路由器,其中所有进入它并通过线路发送的数据包都记录在tcpdump可读日志文件中。

现在,我正在运行程序,停止它,然后使用tcpdump来查看数据包日志。

有没有让tcpdump在数据包添加到日志文件时不断更新自己?即以与尾巴如何相似的方式?

理想情况下,我想在gdb中运行程序,然后在收集/发送数据包时,请在tcpdump给出的流中弹出它们。

编辑: 现在我使用的tcpdump命令是

$tcpdump -r out.log -e -vvv- x

2 个答案:

答案 0 :(得分:0)

来自manual page

-r  Read packets from file (which was created with the -w option).
    Standard input is used if file is ``-''.

因此您可以将文件传输到tcpdump

答案 1 :(得分:0)

编辑:如果我掌握了你想要的东西,但tee是否合适,不是100%舒适吗?

I.e:

  

sudo tcpdump'(udp和src port 53)' - nnvvXSs 1514 -l | tee dump.log

-l使stdout行缓冲


如果你想攻击C,可能会修改sniffex.c代码以满足你的需求。

作为开始更改filter_exp以满足您的需求。

包裹数量由num_packets设置,硬编码为10,用于pcap_loop()

int pcap_loop(pcap_t * p,int cnt,pcap_handler callback,u_char * user);
     cnt指定返回前要处理的最大数据包数。负值会导致pcap_loop子例程永远循环,或者直到达到EOF或发生错误。一个0的cnt处理所有数据包,直到发生错误或达到EOF。*

argv[1]是要使用的设备。


默认输出通常为:

Packet number 2:
       From: 123.123.123.123
         To: 10.0.0.10
   Protocol: TCP
   Src port: 153
   Dst port: 53
   Payload (1440 bytes):
00000   de 15 be 61 60 47 9a 14  92 b0 5b 7c fa 64 51 4b    ...a`G....[|.dQK
00016   b0 b5 c4 4c b0 c2 a8 a3  89 60 10 36 29 7e 10 0c    ...L.....`.6)~..
00032   94 15 01 9a a5 29 26 0a  a9 a4 82 70 9f 22 ac 90    .....)&....p."..
...