sngrep工具一个专门用来在linux系统上抓取SIP包及可视化分析sip包的开源工具,对于学习SIP信令及视频彩铃投诉来说,可以减少下载整个caps文件的工作量。 tshark为linux版的wireshark命令行工具,可以作为sngrep工具的辅助,有些情况下,sngrep根据主被叫号码过滤不出sip包,可以使用tshark预先分析,再决定是否需要下载整个cap包。
附: sgrep工具使用说明:
https://blog.51cto.com/u_13434975/2549956,
github上可以详细了解sngrep的代码相关细节: https://github.com/irontec/sngrep
一、sngrep和wireshark安装步骤
安装环境:CentOS Linux release 7.6.1810 (Core) x86_64 GNU/Linux
1、sngrep安装
Ø rpm包
sngrep-1.4.9-0.el7.x86_64.rpm
Ø 安装指令,centos7不需要安装额外的依赖包,可直接安装rpm文件
sudo rpm -ivh sngrep-1.4.9-0.el7.x86_64.rpm
2、wireshark安装
操作系统版本:CentOS Linux release 7.8.2003 (Core)
安装依赖包:libsmi即可成功安装:wireshark-1.10.14
[root@gd_gd_dg_xlas_xlhs1_c_dxby omsan]# rpm -ivh libsmi-0.4.8-13.el7.x86_64.rpm
/etc/host.conf: line 3: bad command `nospoof on'
warning: libsmi-0.4.8-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:libsmi-0.4.8-13.el7 ################################# [100%]
[root@gd_gd_dg_xlas_xlhs1_c_dxby omsan]#
[root@gd_gd_dg_xlas_xlhs1_c_dxby omsan]# rpm -ivh wireshark-1.10.14-7.el7.x86_64.rpm
/etc/host.conf: line 3: bad command `nospoof on'
warning: wireshark-1.10.14-7.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:wireshark-1.10.14-7.el7 ################################# [100%]
[root@gd_gd_dg_xlas_xlhs1_c_dxby omsan]#
[root@gd_gd_dg_xlas_xlhs1_c_dxby omsan]#
二、sngrep工具简单用法;
1、h/H键,显示指令帮助信息
sngrep -I 20220524084743_nfgz_kxc_xlsip101.cap (主叫:18684637771;被叫:18175763307)
2、CRT终端彩色显示配置,方便使用上、下方向键选择和分析信令
3、筛选出主被叫码流
F键,SIP From,SIP To 两项埴入主、被叫号码,即可筛选出该能呼叫的信令
4、菜单栏space(空格)选项,选择下图中两条信令消息,然后回车;
5、保存筛选出来的码流
S键,保存该通通话信令文件,该功能十分有用。
8、查看完整的信令流程,按上下键即可查看每个流程的会话信息
上、下方向键:移动信令流程,选择某条信令,enter回车查看详细的信令内容。
9、显示全部dialog
Sngrep默认只输出20000个dialog会议信息,如果该信令文件较大,需要使用-l参数全部加载,这个时候注意主机系统内存资源。
sudo sngrep -I 20220601115134_nfgz_kxc_xlas101.cap -l 5000000
10、注意该主机的占用内存资源
1.1G的cap文件,sngrep加载进行分析,需要消耗约3个G内存,尽量不要在AS主机上使用sngrep,建议在信令日志主机上使用sngrep指令。
11、显示cap包的统计信息
按I 键即可,显示该包的会话信息,包括SIP消息,该SIP消息的响应码分布,快速确认4XX消息量的占比,凌晨割接时查看该统计信息,有利于从全局分析业务版本是否存在严重的信令交互问题。
三、wireshark工具简单用法;
1、过滤某个号码的信令文件,并下载至本地分析
查看18175763307号码的呼叫SIP消息,包含了主被叫消息,同时抽取该
部分SIP信令到out.cap文件,类似wireshark中导出指定分组,这个也十分有用,这样大家不用下载整个文件,仅需要下载几十K甚至几百K的文件即可。
tshark -r 20220524084743_nfgz_kxc_xlsip101.cap -R 'sip contains "18175763307"' -w out.cap
2、过滤sip消息
tshark -r 20220524084743_nfgz_kxc_xlsip101.cap -R 'sip && !sip.Method contains OPTIONS &&!sip.CSeq contains OPTIONS'
4、过滤invite消息
tshark -r 20220706.cap -R 'sip.Method == "INVITE"'
tshark -r 20220706.cap -R "sip.Request-Line contains INVITE"
5、SIP消息统计报表
tshark -r 20220706.cap -q -z sip,stat
比较SNGREP的I指令,tshark分析的更细节,有助于判断问题:
6、SIP消息分析
根据号码筛选信令,可以大概的了解信令流程
tshark -r 20220706.cap -R "sip contains 13635749592"
查看invite消息的应用层字段值,根据具体frame packet查看包的详细信息
tshark -r 20220706.cap -R "frame.number == 157305" -V
查看SIP消息中480异常消息,根据具体的packt id查看详细的packet信息
tshark -r 20220706.cap -R "sip.Status-Code == 480"
Tshark 实时抓取源地址、源端口、目地址、目的端口
tshark -T fields -E header=y -e ip.src -e tcp.srcport -e ip.dst -e tcp.dstport
实时抓取mysql的SQL语句:
tshark -i eth0 -n -f 'tcp dst port 3306' -T fields -e mysql.query
tshark -i enp2s0 -t ad -w 2018.pcap -f "ip src host 被测机器ip(例:192.168.1.189)"
tshark -r 2018.pcap -R 'http.host==目标域名(例:www.xxx.com)' -qz conv,ip