http - 如何在不停止的情况下导出 tshark 对象
问题描述
要求: 我需要获取通过我的 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 (Mac)
$ 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
推荐阅读
- powerbi - Power BI 度量,用于计算学习期间留存的学生
- php - 表中的列未更新但未显示错误
- azure - Istio Operator Spec 如何为 addonComponents 添加“hub”参数?
- java - Hibernate:一对多映射导致循环对象
- r - 在R中重新排序对称矩阵
- node.js - 如何将“node index.js”转换为 CLI 名称?
- azure - Azure 数据工厂复制活动错误“此实现不是 Windows 平台 FIPS 验证的加密算法的一部分”
- python - 删除或弹出不是消除所有元素
- node.js - 我在第 44 行有一个类似“Missing ; before statement”错误的错误
- flutter - 如果列表中的项目为空,则列表搜索返回错误 - 阻止搜索