如何解决如何在不停止的情况下导出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 举报,一经查实,本站将立刻删除。