从命令行检测VoIP呼叫 - Wireshark

时间:2014-01-15 12:23:23

标签: sip voip wireshark tshark

我正在使用Wireshark来嗅探网络并检测VoIP呼叫。可以从GUI(电话 - > VoIP呼叫)中看到检测到的VoIP呼叫。

现在我想从命令行获取此列表。我搜索了wireshark文件,但找不到这样做的命令。

我正在使用像

这样的命令
tshark -r myFile -R "sip.CSeq.method eq INVITE"

来自这个主题: Filtering VoIP calls with tshark

是否有命令从命令行显示voip调用列表,或者我是否必须解析输出并创建自己的列表?您是否建议使用其他工具?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我不知道如何哄骗tshark来为您提供Wireshark GUI的功能。您可以通过对tshark的输出进行后处理来完成此操作,但这将是相当多的工作。一种方法是:

  • tshark显示SIP数据包的完整详细信息(例如,使用-v
  • 将此管道传递给将从每个数据包中提取信息的进程。此过程需要检测数据包边界,因为每个数据包的输入将有多行。
  • 此过程需要存储来自这些数据包的选定信息(例如From,To,Start Time等),并根据对话框标识符在数据包之间关联此信息。
  • 该过程需要充分了解SIP协议,以确定何时确认,终止呼叫等。

这当然可行,但我希望你知道你正在进入什么。

单独进程(我没有经验)的替代方法是编写Wireshark script in Lua,并通过tshark -Xlua_script:my_script.lua调用(使用由Lua支持编译的tshark版本)。可以在示例“将VoIP调用转移到单独的文件中”(或类似地here)下找到帮助您入门的示例here on Google Code。优点是:

  • 您可以自动访问已解析的SIP消息。
  • 很容易分辨数据包的开始和结束位置。
  • 一切都在一个过程中运行。

对我来说,缺点是我必须学习一门新语言(不是世界上最糟糕的事情)。

编辑:看起来如果你使用Lua脚本方法,wireshark / tshark中的SIP解析器可以提供相当多的帮助;例如,您可以检查SIP响应中的sip.response-request以查找匹配请求的数据包编号。