我正在使用 Wireshark 来嗅探网络并检测 VoIP 调用。检测到的 VoIP 调用可以从 GUI(电话 -> VoIP 调用)中查看。
现在我想从命令行获取此列表。我搜索了wireshark文档,但找不到执行此操作的命令。
我正在使用类似的命令
tshark -r myFile -R "sip.CSeq.method eq INVITE"
来自这个主题: Filtering VoIP calls with tshark
是否有命令可以从命令行显示 voip 调用列表,或者我是否必须解析输出并创建自己的列表?您建议使用其他工具来做到这一点吗?
任何帮助将不胜感激。
最佳答案
我不知道有什么方法可以让 tshark
告诉你 Wireshark GUI 的功能。您可以通过对 tshark 的输出进行后处理来完成此操作,但这将是一项相当大的工作量。一种方法是:
- 让
tshark
显示 SIP 数据包的完整详细信息(例如,使用-v
) - 将其通过管道传输到将从每个数据包中提取信息的进程。此过程需要检测数据包边界,因为输入每个数据包有多行。
- 此流程需要存储这些数据包中选定的信息(例如“发件人”、“收件人”、“开始时间”等),并根据对话标识符将这些信息关联到各个数据包。
- 该流程需要充分了解 SIP 协议(protocol),以确定何时确认、终止调用等。
这当然是可行的,但我想让你知道你正在做什么。
独立进程的替代方案(我没有经验)是编写 Wireshark script in Lua ,并通过 tshark -Xlua_script:my_script.lua 调用它(使用支持 Lua 编译的 tshark 版本)。可以找到帮助您入门的示例 here在示例“将 VoIP 调用转储到单独的文件中”(或类似的 here on Google Code )。优点是:
- 您将自动有权访问已解析的 SIP 消息。
- 很容易知道数据包的开始和结束位置。
- 一切都在一个进程中运行。
对我来说,缺点是我必须学习一门新语言(这不是世界上最糟糕的事情)。
编辑:如果您使用Lua脚本方法,看起来wireshark/tshark中的SIP解析器可以提供很大帮助;例如,您可以检查 SIP 响应上的 sip.response-request
以查找匹配请求的数据包编号。
关于sip - 从命令行检测 VoIP 调用 - Wireshark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21137348/