我有pcap文件不断生成给我。它想不断地将它们喂给一个“永不停息”的tshark/wireshark。以下是我已经试过(OSX)连续向pcshark/wireshark提供pcap文件
mkfifo tsharkin
tail -f -c +0 tsharkin | tshark -l -i - > tsharkout 2>stderr &
cat file1.pcap > tsharkin
在tsharkout
cat file2.pcap > tsharkin
以上来自file1.pcap以上正常工作,我得到预期输出的不工作,我什么也没得到在tsharkout,但我得到在标准错误“1包丢弃” +“捕获三包”
cat file2.pcap > tsharkin
再次尝试使尾/ tshark的进程停止/崩溃
我试过再次做,但这次先用file2.pcap再用file1.pcap。这一次file2.pcap处理得很好,并且file1.pcap正在使tail/tshark进程停止/崩溃。所以我会得出这样的结论:两个pcap文件没有什么不对,但似乎tshark不喜欢有多个pcap文件抛出。
只是为了测试它,我第一次尝试使用mergecap合并file1.pcap和file2.pcap,和饲料到这一点tshark的
mergecap -F pcap -w file1_2.pcap file1.pcap file2.pcap
cat file1_2.pcap > tsharkin
这工作得很好,我得到预期输出来自file1.pcap和file2 tsharkout中的.pcap
问题在于我的pcap文件一路走来,所以我不能在喂入tshark之前合并它们。我需要能够在它们到达时将pcap文件提供给“永远运行”的tshark。我怎样才能做到这一点?
为什么不把这段代码包装在一个节点服务器中,并且每次接收到一个文件时都产生一个新的tshark。 高级算法, - 在新生成的管道中接收pcap。 (可能将它命名为时间戳) - 使节点应用程序轮询目录以检查新创建的命名管道。 - 一旦收到命名管道上的pcap,产生一个运行tshark的子进程。 - 将结果写入通用目录。 – Himanshu97
@ Himanshu97它不会这样做。两个连续的pcap文件可能包含属于同一个会话的数据。例如。一个html文档通过几个ip数据包在线上传输。这些ip数据包的前半部分可以在file1.pcap中,而这些ip数据包的后半部分可以在file2.pcap中。我想要重建html文档,并且只有在file1.pcap和file2.pcap馈入同一个tshark实例时才会发生。 –
在这种情况下,您可以简单地将文件传输到您的unix管道中,如下所示: “cat”| tsharkin“ 并使tshark始终从管道中读取。 所以会发生什么,你会将你的文件内容追加到管道中。 和命名管道作为FIFO,所以它应该工作。 –
Himanshu97