我试图解析存储在.cap文件中的SIP帧包。 读取正确的数据后,一切似乎都工作正常,但是有一个我无法克服的小错误。
我需要进入每个帧的INFO字段以获取有关从中拨打号码的号码的信息,以及一个TO字段以了解拨打电话的位置。
我通过dcpdump收集数据并将其存储在.cap文件中。通过Wireshark读取文件时,我可以看到该字段,因此我知道它已正确捕获。但是我需要使该过程自动化,因此需要省略使用WS。
我尝试使用带有已知选项-e col.Info的tshark(也显然是不正确的col.info),但是我不断得到:
tshark:某些字段无效: col.Info
我的tshark版本是2.2.6,因此应该可以正常工作,因为我读到它在高于1.5或更高版本的版本中有效。
我还尝试了ChaosReader创建一个.html文件,尽管没有信息字段,它也可以很好地工作。 我尝试的另一种方法是使用pcap2xml,因为我认为XML应该包含框架中的所有数据,但是该解决方案也让我失望。
我的想法不多了,所以我来这里寻求支持和提出新的建议。
也:在Python中解析数据的一种方法也是一种加分,因为我想稍后使用Python处理该数据。 我尝试了Scapy,但无法获得所需的数据。
答案 0 :(得分:1)
tshark可以使用 -o column:format:"Info","%i"
格式输出Wireshark的列字段。要输出每个SIP数据包的(sip.to.addr
)地址和(sip.from.addr
)地址之外的列,您可以运行:
$ tshark -r input.pcap -o 'column.format:"Info","%i","From","%Cus:sip.from.addr","To","%Cus:sip.to.addr"' sip
Request: REGISTER sip:sip.cybercity.dk (1 binding) | sip:voi18063@sip.cybercity.dk sip:voi18063@sip.cybercity.dk
Status: 401 Unauthorized | sip:voi18063@sip.cybercity.dk sip:voi18063@sip.cybercity.dk
Request: REGISTER sip:sip.cybercity.dk (1 binding) | sip:voi18063@sip.cybercity.dk sip:voi18063@sip.cybercity.dk
答案 1 :(得分:0)
根据pchaigno的建议,我将之前的评论发布为答案,进行了一些编辑。
Wireshark内部应用程序显示过滤器前缀“ _ws.
”是从Wireshark 1.12.0开始引入的,因此-e col.Info
在该版本之后不起作用;相反,您需要使用-e _ws.col.Info
。 Wireshark 1.12.0 release notes中提到了这一点。另请参见Comment 1 of Wireshark Bug 10201。
此答案是解决问题的另一种方法,非常适合自动化和脚本编写。这是一个示例:
tshark -r input.pcap -T fields -e _ws.col.Info -e sip.from.addr -e sip.to.addr
有关更多信息,请参考tshark
man page,其中一个示例中甚至使用了-e _ws.col.Info
。