安装请参考 https://github.com/irontec/sngrep/wiki/Building
一、演示使用centos7安装配置
git clone git@github.com:irontec/sngrep.git –depth=1
cd sngrep/
./bootstrap.sh
报错缺少依赖 直接安装依赖即可
yum install -y ncurses-devel make libpcap-devel pcre-devel openssl-devel git gcc autoconf automake
脚本执行成功
你可以将以下标志传递给. /configure 以启用某些功能
配置标志功能
–with-openssl 添加OpenSSL支持来解析捕获的消息( 请求。 libssl )
–with-gnutls 添加GnuTLS支持来解析捕获的消息( 请求。 gnutls )
–with-pcre 在正则表达式字段中添加Perl兼容的正规表达式 支持
–enable-unicode 添加 Ncurses/unicode支持( 要求。 libncursesw5 )
–enable-ipv6 启用IPv6数据包捕获支持。
–enable-eep 启用EEP数据包发送/接收支持。
./configure
执行成功
make && make install
二、运行sngrep
呼叫列表窗口
空格选中呼叫流 ,回车进入
呼叫流窗口
CSeq简单的呼叫流着色消息
通过请求/响应着色消息的多个呼叫流的组合视图
点击回车进入调用原始窗口
空格选中两条消息流,回车进入消息差异窗口
F8设置
列表选择
F7滤镜对话框
F2保存对话框
统计
sngrep 参数
-h --help:显示帮助信息
-V --version:显示版本信息
-d --device:指定抓包的网卡
-I --input:从pacp文件中解析sip包
-O --output:输出捕获的包到pacp文件中
-c --calls:仅显示邀请消息
-r --rtp:捕获RTP数据包有效载荷捕获rtp包
-l --limit:限制捕获对话的数量
-i --icase:使大小写不敏感
-v --invert:颠倒(不太明白)
-N --no-interface:不显示sngrep界面,仅捕获
-q --quiet:不要在***面模式下打印捕获的对话框
-D --dump-config:打印活动的配置设置并退出
-f --config:从文件中读取配置
-R --rotate:达到捕获限制时轮换呼叫。
-H --eep-send:荷马sipcapture网址(udp:XXXX:XXXX)
-L --eep-listen:监听封装的数据包(udp:XXXX:XXXX)
-k --keyfile:RSA私钥文件解密捕获的数据包
抓取INVITE请求的包:
sngrep ^INVITE
抓取REGISTER请求的包:
sngrep ^REGISTER
抓取OPTIONS请求的包:
sngrep ^OPTIONS
捕获端口5060上的所有SIP数据包:
sngrep port 5060
使用sngrep查看来自pcap文件的SIP数据包,并使用过滤器:
sngrep -I file.pcap host 192.168.1.1 and port 5060
或实时捕获,将数据包保存到新文件:
sngrep -d eth0 -O save.pcap port 5060 and udp
三、页面
sngrep有四个页面,每个页面都有一些不同的快捷键。
呼叫列表页面
呼叫流程页面
原始呼叫信息页面
信息对比页面
呼叫列表页面
快捷键
• 箭头键:在列表中移动,除上下箭头还可以使用j,k来移动光标
• 输入:显示当前或所选对话框的消息流
• 答:自动滚动到新电话,自动滚动到新的电话
• F2或S:将所选/所有对话框保存到PCAP文件,保存对话框到pacp文件
• F3或/或TAB:输入显示过滤器。该过滤器将应用于列表中的文本行,进入搜索
• F4或x:显示当前选择的对话框和其相关的一个。回到第一个SIP消息上
• F5:清除通话清单,清空通话清单
• F6或r:以原始文本显示所选对话框的消息,显示原始的sip消息
• F7或f:显示高级过滤器对话框显示高级过滤弹窗
• F9或l:如果启用,则打开/关闭地址解析
• F10或t:选择显示的列,显示或隐藏侧边sip消息栏
呼叫列表页面还能够显示两个弹窗,按f可以显示高级过滤配置
按t可以显示,自定义呼叫列选项弹窗
呼叫流程页面
快捷键
键绑定:
• 方向键:浏览消息
• 输入:显示当前的原始消息(以便您可以复制有效负载)
• F2或d:显示sdp消息,f2的某个模式变为时序图更紧凑
• F3或t:显示或关闭sip侧边栏
• F4或x:回到顶部
• F5或s:每个ip地址仅显示一列
• F6或R:显示原始的sip消息
• F7或c:更改颜色模式,有的颜色模式很容易让人无法区分当前查看的sip消息是哪一个,所以需要更改颜色模式
• F9或l:如果启用,则打开/关闭地址解析
• 9和0:增加或减少侧边栏的宽度
• T:重绘侧边栏
• D:仅显示带有sdp的消息
• 空格键:选择一个sip消息,再次找个sip消息,然后就会进入对比模式
原始sip消息界面
消息对比界面
在呼叫列表页面上按空格键输入一个消息,然后选择另外一个sip消息后,再次按空格键,就可以进入消息对比页面
分析媒体问题
使用sngrep -r可以用来捕获媒体流,默认不加-r则只能显示信令。
在呼叫流程页面,点击F3,可以动态的查看媒体流的情况。在分析语音问题时,这是非常方便的分析工具。
ngrep使用注意点
• 如果不要抓取的sngrep抓包,否则sgrep会占用非常多的内存。如果必须抓取的包,则使用tcpdump。
• 某些情况下,sngrep会丢包
• 某些情况下,sngrep会什么包都抓包不到,注意此时很可能要使用-d去指定抓包的网卡
• 如果ABC分别是三台独立虚拟机的SIP服务器,在B上抓包只能分析AB,和BC直接的流量。sngrep只能捕获本机网卡的接收和发送的流量。
• 如果您需要记录所有的sip消息,并展示。可以考虑使用siphub,或者homer。