所有
我试图调试一个简单的路由器,其中所有进入它并通过线路发送的数据包都记录在tcpdump可读日志文件中。
现在,我正在运行程序,停止它,然后使用tcpdump来查看数据包日志。
有没有让tcpdump在数据包添加到日志文件时不断更新自己?即以与尾巴如何相似的方式?
理想情况下,我想在gdb中运行程序,然后在收集/发送数据包时,请在tcpdump给出的流中弹出它们。
编辑: 现在我使用的tcpdump命令是
$tcpdump -r out.log -e -vvv- x
答案 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."..
...