解析 SIP 数据包 .cap 文件以到达 "INFO" 字段
Parsing a SIP-packet .cap file to reach "INFO" field
我正在尝试解析存储在 .cap 文件中的一组 SIP 帧。
一切似乎都很顺利我读取了正确的数据但是有一个我无法克服的小错误。
我需要进入每个帧的 INFO 字段以获取有关拨打号码的号码的信息,以及一个 TO 字段以了解呼叫的位置。
我通过 dcpdump 收集数据并将它们存储在 .cap 文件中。通过 Wireshark 读取文件时,我可以看到该字段,因此我知道它已被正确捕获。但是我需要使该过程自动化,所以我需要省略使用 WS。
我尝试使用带有已知选项 -e col.Info 的 tshark(也 col.info 这显然是不正确的)但我不断得到:
tshark: Some fields aren't valid:
col.Info
我的 tshark 版本是 2.2.6,所以它应该可以工作,因为我读到它在高于 1.5 或附近的版本中有效。
我还尝试使用 ChaosReader 创建一个 .html 文件,效果也很好,但仍然没有信息字段。
我尝试的另一种方法是使用 pcap2xml,因为我认为 XML 应该包含框架中的所有数据,但该解决方案也让我失望。
我 运行 没有想法,所以我来这里寻求支持和新建议。
此外:在 Python 中解析该数据的方法也是一个加号,因为我想稍后使用 Python 处理这些数据。
我尝试了 Scapy,但无法获得我需要的数据。
Wireshark 抓包画面:
Wireshark 的列字段可以由 tshark 使用 -o column:format:"Info","%i"
格式输出。要输出此列以及每个 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
根据 pchaigno 的建议,我将我之前的评论作为答案发布,并进行了一些编辑。
Wireshark 内部应用程序显示过滤器前缀“_ws.
”是从 Wireshark 1.12.0 开始引入的,因此 -e col.Info
在该版本后不起作用;相反,您需要使用 -e _ws.col.Info
。 Wireshark 1.12.0 release notes. See also 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
。
我正在尝试解析存储在 .cap 文件中的一组 SIP 帧。 一切似乎都很顺利我读取了正确的数据但是有一个我无法克服的小错误。
我需要进入每个帧的 INFO 字段以获取有关拨打号码的号码的信息,以及一个 TO 字段以了解呼叫的位置。
我通过 dcpdump 收集数据并将它们存储在 .cap 文件中。通过 Wireshark 读取文件时,我可以看到该字段,因此我知道它已被正确捕获。但是我需要使该过程自动化,所以我需要省略使用 WS。
我尝试使用带有已知选项 -e col.Info 的 tshark(也 col.info 这显然是不正确的)但我不断得到:
tshark: Some fields aren't valid: col.Info
我的 tshark 版本是 2.2.6,所以它应该可以工作,因为我读到它在高于 1.5 或附近的版本中有效。
我还尝试使用 ChaosReader 创建一个 .html 文件,效果也很好,但仍然没有信息字段。 我尝试的另一种方法是使用 pcap2xml,因为我认为 XML 应该包含框架中的所有数据,但该解决方案也让我失望。
我 运行 没有想法,所以我来这里寻求支持和新建议。
此外:在 Python 中解析该数据的方法也是一个加号,因为我想稍后使用 Python 处理这些数据。 我尝试了 Scapy,但无法获得我需要的数据。
Wireshark 抓包画面:
Wireshark 的列字段可以由 tshark 使用 -o column:format:"Info","%i"
格式输出。要输出此列以及每个 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
根据 pchaigno 的建议,我将我之前的评论作为答案发布,并进行了一些编辑。
Wireshark 内部应用程序显示过滤器前缀“_ws.
”是从 Wireshark 1.12.0 开始引入的,因此 -e col.Info
在该版本后不起作用;相反,您需要使用 -e _ws.col.Info
。 Wireshark 1.12.0 release notes. See also 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
。