从pcap文件提取唯一IP:output.txt格式异常问题咨询
解决tshark导出源IP时多IP合并为一行的问题
问题场景
执行以下步骤处理pcap文件时,导出的IP列表出现格式异常:
- 用tshark导出源IP至文件:
tshark -r file.cap -T fields -e ip.src > output.txt - 用sort+uniq去重:
sort output.txt | uniq > uniqueip.txt - 用wc -l统计行数:
wc -l output.txt
导出的output.txt中部分IP以逗号分隔在同一行,例如"216.245.214.196,146.231.254.240",文件内容示例:
"58.176.204.64"
"180.168.211.204"
"103.248.63.253"
"216.245.214.196,146.231.254.240"
"112.104.105.79"
"216.245.214.196,146.231.254.131"
"112.104.105.79"
"10.0.61.65,146.231.254.12"
原因分析
这是因为捕获的数据包中存在多IP头部的封装结构,比如VLAN堆叠、GRE/IPsec隧道协议,或是包含多个源IP的特殊测试包。tshark默认会将同一个数据包中匹配到的多个ip.src字段用逗号分隔,输出到同一行。
解决方案
修改tshark命令,添加-E separator='\n'参数,强制将多字段输出用换行符分隔:
tshark -r file.cap -T fields -e ip.src -E separator='\n' > output.txt
如果不需要默认的双引号包裹IP,可额外添加-E quote=d参数(d表示禁用引号):
tshark -r file.cap -T fields -e ip.src -E separator='\n' -E quote=d > output.txt
执行上述命令后,每个IP会单独占一行,后续的去重、统计操作就能正常执行。
内容的提问来源于stack exchange,提问作者bostongeorge
相关产品推荐
相关产品推荐

