微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不停止的情况下导出tshark对象 fswatchMacos inotifywaitLinux

如何解决如何在不停止的情况下导出tshark对象 fswatchMacos inotifywaitLinux

要求: 我需要获取通过wifi接口下载的任何类型的文件/对象。

我正在运行tshhark来监听我的wifi接口,并使用以下命令将HTTP对象导出到给定目录。

 tshark -i wlp4s0 --export-object "http,/tmp/tshark-objects/"

它成功拦截了对象,但不会自动将它们写入指定的路径,除非我使用“ Ctrl + C”手动停止tshark。

问题: 如何导出使用相同命令/脚本通过不同协议下载的任何类型的对象。

约束:

我希望tshark连续运行并在通过网络传输对象后立即将其导出。 PS 对我来说,使用tshark不是强制性的。如果可以满足此要求,我可以切换到其他工具。

解决方法

使用2个tshark进程

答案是,您应该使用不同的tshark进程进行编写和导出。可以通过在条件下创建新文件来旋转文件。您可以使用几个不同的选项:

 -b <ringbuffer opt.> ...,--ring-buffer <ringbuffer opt.>
                           duration:NUM - switch to next file after NUM secs
                           filesize:NUM - switch to next file after NUM KB
                              files:NUM - ringbuffer: replace after NUM files
                            packets:NUM - switch to next file after NUM packets
                           interval:NUM - switch to next file when the time is
                                          an exact multiple of NUM secs

例如,要每分钟旋转一次,请使用

$ tshark -b duration:60 -w output.pcap

要从出现的新文件中导出对象,您需要监视文件系统中的新文件。您可以在linux上使用inotify,在osx上使用fswatch或在其他平台上使用类似的实用程序。

将新文件发送到tshark进行导出

在这里,每个新文件都会触发tshark导出文件。两者都使用-Q可以防止tshark在每个传入的截断文件中打印数据包。

fswatch(Macos)

$ tshark -b duration:60 -w output.pcap
$ fswatch . | while read f
do tshark -r $f -Q --export-object "http,/tmp/tshark-objects/"
done

inotifywait(Linux)

$ tshark -b duration:60 -w output.pcap
$ inotifywait . -m -e "CLOSE" --format "%f" | while read f
do tshark -r $f -Q --export-object "http,/tmp/tshark-objects/"
done
,

罗斯·雅各布斯的回答完成了主要工作。我进行了一些小的调整,如下所示:

Nodes <null>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。