MacOS 利用 Wireshark 抓包保存直播视频

/ 0评 / 3

iPhone与macOS建立虚拟端口

终端输入:

rvictl -s <UDID>

ios uuid获取方法

手机连接电脑,通过Finder获取iPhone的UDID,如图:

遇到的问题

1. rvictl: command not found

如果提示 rvictl: command not found 则需要安装(或重新)Xcode 和 Command Line Tools , xcode-select --install

我安装了xcode和 Command Line Tools 但还是提示 rvictl: command not found ,在网上找到一个解决方案

这一步有个小坑,我第一次执行rvictls -s 提示 rvictl: command not found。Stack Overflow上提供了两种解决方法:
xcode没有安装Command Line Tools,执行命令 xcode-select --install 安装一下然后重启终端,对我无效
进入/usr/bin,看有没有rvictls安装。没有的话,进入下面两个目录,安装下两个pkg。
a.Xcode.app/Contents/Resources/Packages/MobileDevice.pkg
b.Xcode.app/Contents/Resources/Packages/MobileDeviceDevelopment.pkg
然后重启下终端,再调用rvictls -s 设备udid就成功了。

2. rvictl starting device failed

是由于苹果安全性提高所致,降低安全性即可。方法适用于 x86, M1 架构

  1. 恢复模式下启动 mac:操作方法
  2. 启动后点按选项 -> 继续
  3. 进入桌面后,点击左上角菜单,选择 terminal, 打开后输入 csrutil disable, 继续输入密码,选择 y 确认, 完成后重启电脑
  4. 至此,重启后 x86 mac 即可以创建虚拟端口了。
  5. M1 还需要打开系统偏好设置 -> 安全性与隐私 -> 发现多出了个选项,点击 允许,会自动重启
  6. 至此, M1 也可以愉快的创建虚拟端口了。

引用自:https://www.jianshu.com/p/9053dd3faed2

Wireshark监听虚拟接口

成功把iPhone与macOS建立虚拟端口后,在Wireshark可以看到rvi0,双击就可以监听了。

手机端进入直播界面。

通常直播流有3种形式,flvm3u8rtmp

rtmp

在Wireshark过滤器输入rtmpt即可过滤出所有rtmp协议的请求信息,这里主要关注connectplay信息,在connect中可以找到协议地址;在play中可以找到推流地址;把两个地址拼接后,可以用ffmpeg保存直播流:

ffmpeg -i 'rtmp://url/live/xxx' -c copy -f mp4 xxx.mp4

一般情况rtmpt的协议地址是不变的,所以获取到第一个connect信息后,可以将过滤信息修改为rtmpt.ucm.eventtype

m3u8

在Wireshark过滤器中输入http contains ".m3u8"即可过滤出所有以.m3u8的请求信息,找到完整的.m3u8地址后,可以使用ffmpeg保存直播流:

ffmpeg -i 'http://url/xxx.m3u8' -c copy xxx.mp4

flv

这种情况暂时还没有遇到,待补充。。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注