解析SIP数据包.cap文件以到达“ INFO”字段

时间:2018-06-22 11:20:37

标签: python-3.x sip wireshark packet-capture tshark

我试图解析存储在.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,但无法获得所需的数据。

Wireshark捕获的屏幕: Screen of the Wireshark capturing:

2 个答案:

答案 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.InfoWireshark 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