简介

使用 rtpbreak,您可以检测、重建和分析任何 RTP 会话。它不需要 RTCP 数据包,并且独立于所使用的信令协议(SIP、H.323、SCCP 等)工作。输入是一系列数据包,输出是一组文件,您可以将其用作其他工具(wireshark/tshark、sox、grep/awk/cut/cat/sed 等)的输入。它还支持无线 (AP_DLT_IEEE802_11) 网络。以下列出了 rtpbreak 适用的场景:

  • 重建任何使用未知或不受支持的信令协议的 RTP 流
  • 在无线网络中进行信道跳变(VoIP 活动检测器)时重建任何 RTP 流
  • 以批处理模式重建并解码任何 RTP 流(使用 sox、asterisk 等)
  • 重建任何现有的 RTP 流
  • 重新排序任何 RTP 流的数据包以供后续分析(使用 tshark、wireshark 等)
  • 在单芯片 Linux 单元中构建微型无线 VoIP 窃听系统
  • 构建完整的 VoIP 窃听系统(rtpbreak 只是 RTP 解析器模块!)

安装

源码安装

通过以下命令来进行克隆项目源码,建议请先提前挂好代理进行克隆。

git clone https://github.com/foreni-packages/rtpbreak.git

进入目标并查看。

cd rtpbreak/
ls

进入 src 目标并查看。

cd src/
ls

使用 vim 编辑器编辑 main.c 文件。

vim main.c

往下在 includes 行里面添加以下代码

#include <netinet/udp.h>

保存并退出,编译。

make

此时再次查看当前目标,会发现多生成出来一个 rtpbreak 文件。

ls

运行以下命令,如果出现这个界面,就说明安装成功了。

./rtpbreak -h

APT包管理器安装

Kali Linux 默认已经安装好 rtpbreak 工具了,如果还未安装的,也可以通过以下命令来进行安装。

sudo apt install rtpbreak

使用

1. -h

此帮助

rtpbreak -h

如果你还没有一个扩展名为 .pacp 的文件的话,推荐可以去 wireshark 的网址里面下载一个测试的样本 .pacp 文件。

SampleCaptures - Wireshark Wiki

推荐下载这个 SIP_CALL_RTP_G711 的文件来作为测试文件,当然其他文件也可以。

下载的文件是这样的。

输入

2. -r <str>

从 pcap 文件读取数据包 <str>

rtpbreak -r SIP_CALL_RTP_G711

 

3. -i <str>

注意:要使用 root 权限才能运行。

从网络接口读取数据包 <str>

sudo rtpbreak -i eth0

 

4. -L <int>

强制数据链路头长度 == <int> 字节

rtpbreak -L 8

输出

5. -d <str>

将输出目录设置为 <str>(默认值:.)

rtpbreak -r SIP_CALL_RTP_G711 -d .

6. -w

禁用 RTP 原始转储

rtpbreak -r SIP_CALL_RTP_G711 -w

7. -W

禁用 RTP pcap 转储

rtpbreak -r SIP_CALL_RTP_G711 -W

8. -g

填充 RTP 原始转储中的空白(由丢失的数据包引起)

rtpbreak -r SIP_CALL_RTP_G711 -g

9. -n

转储噪声数据包

rtpbreak -r SIP_CALL_RTP_G711 -n

10. -f

禁用标准输出日志记录

rtpbreak -r SIP_CALL_RTP_G711 -f

11. -F

启用系统日志日志记录

rtpbreak -r SIP_CALL_RTP_G711 -F

12. -v

设置为详细模式

rtpbreak -r SIP_CALL_RTP_G711 -v

选择

13. -m

以混杂模式嗅探数据包

rtpbreak -r SIP_CALL_RTP_G711 -m

14. -p <str>

添加 pcap 过滤器 <str>

rtpbreak -r SIP_CALL_RTP_G711 -p "udp port 5060"

15. -e

期望偶数目标 UDP 端口

rtpbreak -r SIP_CALL_RTP_G711 -e

16. -u

期望非特权源/目标 UDP 端口 (>1024)

rtpbreak -r SIP_CALL_RTP_G711 -u

17. -y <int>

期望 RTP 负载类型 == <int>

rtpbreak -r SIP_CALL_RTP_G711 -y 0

18. -l <int>

预期 RTP 负载长度 == <int> bytes

rtpbreak -r SIP_CALL_RTP_G711 -l 1024

 

19. -t <float>

将数据包超时设置为 <float> 秒(默认值:10.00)

rtpbreak -r SIP_CALL_RTP_G711 -t 20

20. -T <float>

将模式超时设置为 <float> 秒(默认值:0.25)

rtpbreak -r SIP_CALL_RTP_G711 -T 0.25

21. -P <int>

将模式数据包数量设置为 <int> 秒(默认值:5)

rtpbreak -r SIP_CALL_RTP_G711 -P 5

执行

22. -Z <str>

以 <str> 用户身份运行

rtpbreak -r SIP_CALL_RTP_G711 -Z kali

23. -D

后台运行(选项 -f 隐式)

rtpbreak -r SIP_CALL_RTP_G711 -D

其他

24. -k

列出已知的 RTP 负载类型

rtpbreak -k

综合使用

使用接口 eth0(-i eth0)分析 RTP 流量,填充间隙(-g),以混杂模式嗅探(-m),并保存到给定目录(-d rtplog)

sudo rtpbreak -i eth0 -g -m -d rtplog

总结

通过对 rtpbreak 工具的实际使用与测试,我们可以清晰地看到其在 RTP 流量分析与语音重建中的独特价值。它能够自动检测和提取 RTP 数据流,支持从捕获文件中还原语音对话内容,为 VoIP 流量取证、渗透测试和通信协议研究提供了强有力的支持。作为一款轻量级但功能实用的分析工具,rtpbreak 对理解 RTP 协议结构、识别未加密语音通信过程中的潜在风险具有重要意义。合理应用该工具,将显著提升对 VoIP 环境中安全隐患的洞察能力。

在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。

欢迎各位大佬,小白来找我交流。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐