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

/ 1评 / 0

iPhone与macOS建立虚拟端口

终端输入:

rvictl -s [ios UDID]

ios uuid获取方法

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

遇到的问题

如果提示 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就成功了。

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

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

  1. 商业智库说道:

    收藏了 谢谢博主分享 欢迎回访哦

发表评论

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