我目前正在研究一个通过在捕获数据包后解析SIP头消息来收集用户登录和扩展信息的项目。我目前使用PCAP.net和SIPSorcery库来实现这一点。该项目是用C#编写的SIP会话跟踪
它是如何工作的: 通过使用PCAP.net中的过滤器,我可以对SIP相关流量进行分区。每次捕获一个数据包时,就会触发一个事件,并检查数据包的类型,例如无论是SIP还是其他与UDP相关的其他内容,例如DNS。如果这是一个SIP消息,我解析报头,提取出我感兴趣的信息
问题: 某些SIP端点生成多个包含相同UID的注册数据包。很难跟踪单个会话,以及终端实际上最终注册的时间(即从SIP服务器接收到200OK)。我尝试使用带有CallID的Dictionary,然后检查收到的数据包是否已经在Dictionary中。
问题: 我如何跟踪会话,所以我知道,当我收到200 OK为特定的会话,它被注册并流完成