如何使用tcpflow正确提取对应编号的TCP流?
问题根因
你在tcpflow的帮助文档、手册里找不到TCP流编号相关配置说明是正常的:tcpflow本身没有内置pcap原生TCP流编号(即Wireshark/tshark体系里的tcp.stream字段序号)的支持,你使用的%N本身就不是tcpflow模板的合法占位符,自然无法输出正确的流编号。
tcpflow的流序号是工具自身按扫描顺序独立生成的,和pcap文件里标记的标准TCP流编号没有对应关系。
可行解决方案
- 直接使用支持原生TCP流编号的工具提取,优先选tshark,匹配精度最高:
- 先查看pcap内所有TCP流的编号清单:
tshark -r example.pcap -T fields -e tcp.stream | sort -n | uniq - 提取指定编号(例如编号为3的TCP流)的ASCII格式内容:
tshark -r example.pcap -qz follow,tcp,ascii,3 > stream_3.txt
- 先查看pcap内所有TCP流的编号清单:
- 如果必须使用tcpflow导出,可手动做映射匹配:
先用tshark导出所有TCP流的编号和对应四元组(源IP、源端口、目的IP、目的端口)的映射表,注意TCP流是双向的,匹配时需要同时校验正反方向的四元组,再将tcpflow导出的按四元组命名的流文件和目标流编号做对应即可。 - 如果只需要tcpflow生成自身的流序号,不需要和pcap原生编号匹配:
把你命令里的大写%N换成小写%n即可,%n是tcpflow内置的自身流序号占位符,修改后的命令参考:
注意这个序号是tcpflow按自身处理顺序生成的,和pcap里的标准TCP流编号完全不一致,不能直接对应使用。.\tcpflow64.exe -o out -a -r example.pcap -T %n_%A-%a_%B-%b.txt -S enable_report=YES
补充说明:你命令里的
-a参数是开启所有后处理功能,-S enable_report=YES是生成导出统计报告,这两个参数都不会对流编号的标记逻辑产生影响。
内容的提问来源于stack exchange,提问作者عبدالرحمن إسماعيل
相关产品推荐
相关产品推荐

