sngrep是一个用于分析SIP信令的工具,它可以捕获和解码SIP信令也是一款专业的sip抓包工具,且可以解析tcpdump抓出来的包。 sip协议(会话初始协议),是一种多媒体通信协议;
sip协议的消息主体(报文部分)一般使用的是SDP消息格式。 RTP是一种数据传输协议

tcpdunmp的基本抓包命令:tcpdump -s 0 -i eth0 udp -w outbound_m_22.pcap

-i指定了网卡
-w 抓包后的文件名
sngrep也存在抓包命令,但是没有具体用过。这里记录几个用过的命令

sngrep -d eth0 指定网卡抓包,仅抓通过网卡eth0的信息;
sngrep -I in.pcap 用sngrep打开用tcpdump打开的抓包
前台使用sngrep
注: sngrep需单独安装,这里不描述安装过程

基本示例:

sngrep -n -s 5000 -d any /destination_ip/

解释:

-n 表示不将IP地址解析为主机名。

-s 5000 表示监听端口5000。

-d any 表示捕获所有网络接口上的数据包。

/destination_ip/ 是你想要捕获信令流向的IP地址。

这个命令会捕获所有通过所有网络接口发往指定IP地址的数据包,并将其保存到标准输出。

如果你想要将捕获的信令保存到文件中,可以使用以下命令:

sngrep -n -s 5000 -d any /destination_ip/ > capture.txt

这会将输出重定向到名为capture.txt的文件。

为了过滤并只显示特定的SIP方法(如INVITE),可以使用-W选项:

sngrep -n -s 5000 -d any -W "INVITE" /destination_ip/

在命令行输入sngrep,进入到主页面

一文教你如何使用sngrep跟踪分析sip信令_经验分享


最下面的一行展示了一些用法介绍

Esc退出当前工具
Enter进入了消息详情
space 选中当前数据,再次点击取消选择
F1进入帮助页面
F2保存符合条件列(比如选中的列,符合筛选条件的列等)
F3进入搜索页面,可以按条件进行搜索
F4将选中行的信息在一个屏幕内进行拼接展示
F5清除当前页面的内容
F7进行筛选条件的设置
F10 自定义设置需要展示的列
保存文件

一文教你如何使用sngrep跟踪分析sip信令_数据分析_02


扩展拼接展示

一文教你如何使用sngrep跟踪分析sip信令_学习方法_03


自定义设置需要展示的列之后的效果

一文教你如何使用sngrep跟踪分析sip信令_ip_04


请求详情页面

一文教你如何使用sngrep跟踪分析sip信令_经验分享_05


最下面的一行展示了一些用法介绍

Esc返回上一层
Enter上下滑动,选择消息后,点击进入了消息详情
space 选中当前数据,滑动再次选择一条数据,会将这两条的数据进行对比
F1进入帮助页面
F2显示SDP消息格式的一些信息。包括: 地址信息,每天类型,占用端口,编码方式,频率等信息
F3打开RTP流的信息,展示了当前rtp流的编码,媒体传输数量,双方端口号,若是正在进行的会话。会显示是否有数据流传输
F4回到第一个消息
s修改地址栏是否展示地址端口
F6以Raw格式展示协议
c 进行颜色的调整
9向左移动报文,0向右移动报文
SDP文本信息中,a=sendrecv表示消息是有效的;a=inacative表示消息是无效的;
媒体端口是0,也表示消息是无效的;
a=rtpmap:101 telephone-event/16000表示按键信息,但是sngrep不会展示按键信息;=rtpmap:18 G729/8000 协商的一种编码信息

数据对比

一文教你如何使用sngrep跟踪分析sip信令_信号处理_06


响应页面

一文教你如何使用sngrep跟踪分析sip信令_经验分享_07


附件

sip信令的格式及状态码参考文章:

请求消息类型及含义
请求消息 消息含义
INVITE 发起会话请求,邀请用户加入一个会话,会话描述含于消息体中。对于两方呼叫来说,主叫方在会话描述中指示其能够接受的媒体类型及其参数。 被叫方必需在成功响应消息的消息体中指明其希望接受哪些媒体,还可以指示其行将发送的媒体。如果收到的是关于参加会议的邀请,被叫方可以根据 Call-ID或者会话描述中的标识确定用户已经加入该会议,并返回成功响应消息。
ACK 证实已收到对于 INVITE 请求的最终响应。该消息仅和 INVITE 消息配套使用。
BYE 释放已建立的呼叫
CANCEL 取消尚未完成的呼叫请求,对于已完成的请求(即已收到最终响应的请求)则没有影响。
REGISTER 向SIP网络服务器登记用户位置信息 → 即注册认证
OPTIONS 查询服务器的能力

响应状态码及含义

状态码

消息功能

1xx

信息响应(呼叫进展响应)0 表示已经接受到请求消息,正在对其进行处理

100

试呼叫

180

振铃

181

呼叫正在前转

182

排队

2xx

成功响应 表示请求已经被成功接收、处理并被成功接受

200

OK

3xx

重定向响应 表示需要采取进一步动作,以完成该请求消息

300

多重选择

301

永久迁移

302

临时迁移

303

见其他

305

使用代理

380

代换服务

4xx

客户出错 表示请求消息中包含语法错误或者SIP服务器不能完成对该请求消息的处理

400

错误请求

401

无权

402

要求付款

403

禁止

404

没有发现

405

不允许的方法

406

不接受

407

要求代理权

408

请求超时

410

消失

413

请求实体太大

414

请求URI太大

415

不支持的媒体类型

416

不支持的URI方案

420

分机无人接听

421

要求转机

423

间隔太短

480

暂时无人接听

481

呼叫腿/事务不存在

482

相环探测

483

调频太高

484

地址不完整

485

不清楚

486

线路忙

487

中止请求

488

此处不接受

491

待处理请求

493

难以辨认

5xx

服务器出错 表示SIP服务器故障不能完成对正确消息的处理

500

内部服务器错误

501

没实现的

502

无效网关

503

不提供此服务

504

服务器超时

505

SIP版本不支持

513

消息太长

6xx

全局故障 表示请求不能在任何SIP服务器上实现

600

全忙

603

拒绝

604

都不存在

606

不接受