Kamailio-Sngrep 短小精悍的利器

一个sip的抓包小工具,在GitHub上竟然能够积累1K的star,看来还是有点东西,当然官方的友链也是发挥了重要作用

首先送上项目地址,有能力的宝子可以自行查看

经典的网络抓包工具有很多,比如:

  • Wireshark: 大而全
  • tcpdump: 较底层
  • Fiddler:主要用于HTTP/HTTPS协议
  • ......

但是对于本章要讲的SIP信令的抓包,也就是Wireshark、tcpdump,以及前面讲到过较为系统的Homer,如果嫌弃Wireshark笨重、tcpdump原始,那么就一起来看看这款短小精悍的sngrep。

官方自己定义:是一款可以在命令行终端展示SIP电话消息流的工具,它能够支持实时的抓取并展现SIP包,也可以用来做一个pcap的阅读器。

面向命令行终端,具有可视化能力,实时抓取并展示,简直是生产调试与运维的利器。

如何安装?

前提条件,需要服务器上具备这些模块:

  • libncurses5 - for UI, windows, panels.
  • libpcap - for capturing packets.
  • libssl - (optional) for TLS transport decrypt using OpenSSL and libcrypt
  • gnutls - (optional) for TLS transport decrypt using GnuTLS and libgcrypt
  • libncursesw5 - (optional) for UI, windows, panels (wide-character support)
  • libpcre - (optional) for Perl Compatible regular expressions
  • zlib - (optional) for gzip compressed pcap files

可以使用autotools构建,或者cmake,基本是类似的,我这边就用的常规centos系统

autotools:

bash 复制代码
./bootstrap.sh
./configure
make
make install (as root)

cmake:

bash 复制代码
mkdir build && cd build
cmake [<options>] ..
make
make install (as root)

一切顺利,构建成功

如何使用?

sngrep 由于是网络抓包,因此至少需要sudo权限。

对于参数可以通过help来看一下

bash 复制代码
# sngrep --help
Usage: sngrep [-hVcivNqrD] [-IO pcap_dump] [-d dev] [-l limit] [-B buffer] [<match expression>] [<bpf filter>]

    -h --help		 This usage
    -V --version	 Version information
    -d --device		 Use this capture device instead of default
    -I --input		 Read captured data from pcap file
    -O --output		 Write captured data to pcap file
    -B --buffer		 Set pcap buffer size in MB (default: 2)
    -c --calls		 Only display dialogs starting with INVITE
    -r --rtp		 Capture RTP packets payload
    -l --limit		 Set capture limit to N dialogs
    -i --icase		 Make <match expression> case insensitive
    -v --invert		 Invert <match expression>
    -N --no-interface	 Don't display sngrep interface, just capture
    -q --quiet		 Don't print captured dialogs in no interface mode
    -D --dump-config	 Print active configuration settings and exit
    -f --config		 Read configuration from file
    -F --no-config	 Do not read configuration from default config file
    -T --text	 Save pcap to text file
    -R --rotate		 Rotate calls when capture limit have been reached

可以通过命令行指定后开启抓包,也可以开启后在内部过滤

  • -d 网口或设备
  • -I 主要是用于查看指定的pcap文件,以便查看sip对话的可视化图
  • -O 主要是将实时抓包的数据输出到文件
  • -r 主要是抓RTP, 指的是实时传输协议(Real-time Transport Protocol, RTP)数据包的有效载荷部分。RTP 是一个用于传输音频和视频等多媒体数据的网络协议,常用于流媒体服务、语音通信系统(如VoIP)、视频会议等场景中。
  • -l 给到数量限制,这个是重要的
  • -T 将pcap保存到文本文件

以上是比较常规的参数,常规的使用就是根据一些规则去抓取网络数据包,将pcap文件读取后展示。

如何抓取

sngrep, 直接开启抓,不管三七二十一,全抓

sngrep -d eth0 -O save.pcap port 5060 and udp,指定eth0网口,将数据保存到save.pcap文件,指定端口5060,指定udp类型

F7 开启页面过滤:

  • 关键词筛选 SIP From/SIP To/Source/Destination/Playload
  • 筛选信令类型,空格选中或取消
  • Filter 过滤

F6 查看类似tcpdump的原始数据
F2 Save就类似于-O,但是可以在页面筛选、取消某些会话的导出,-O就是全部了
Enter 看流图

如何查看pcap文件

sngrep -I file.pcap host 192.168.1.1 and port 5060, 从file.pcap读取抓包数据,过滤host和端口

相关推荐
c_zyer2 个月前
Kamailio-超强dispatcher负载均衡模块
负载均衡·kamailio·voip·sip
tekin2 个月前
macos 系统文件操作时提示 Operation not permitted 异常解决方法 , 通过恢复模式 开启 /关闭 SIP方法
macos·mac·sip·恢复模式·csrutil·mac恢复模式进入方法
Mike_Zhang2 个月前
使用kamailio进行分机注册及互拨
kamailio·voip
c_zyer4 个月前
Kamailio-Web管理页面Siremis的安装与部署
前端·php·kamailio
帐篷Li6 个月前
【开源物联网平台】window环境下搭建调试监控设备环境
sip·gb28181·监控设备·国标
webrtc&ffmpeg_study6 个月前
janus模块介绍-SIP Gateway
linux·服务器·sip·janus
求真得真6 个月前
fs.1.10 ON CENTOS7 dockerfile模式
docker·centos·voip·sip
视跃科技7 个月前
快速将第三方私有协议视频源接入GB28181系统
网络·网络协议·音视频·sip·视频处理
chinavas8 个月前
Microsip注册到FreeSWITCH分机测试SIP服务器是否安装成功
运维·服务器·网关·voip·sip