关于联通IPTV的一些研究

这篇文章中我讲到我换了交换机。事实上, 在等交换机到货的时候, 我研究了一下IPTV的”协议”。

利用家庭网核心交换机的”端口镜像”功能, 可以将某个端口或者VLAN的部分或全部数据复制到另外一个端口上, 这样, 我就可以分析IPTV盒子和服务器传输的数据了。

经Wireshark抓包分析, IPTV大部分是用未加密的HTTP传输认证、控制和电视台频道等信息; 以组播的方式用UDP传输影音数据。认证、控制部分我没有仔细研究, 应该是有一点点加密的。

电视台频道, 在这个IPTV中实际上就是组播的地址以及端口号, 想看哪个台, 就加入哪个组播组。

将UDP中的数据部分合并、转储到文件之后, xqq帮助我分析了一下这些数据, 发现了其中的未经加密的视频信息。直接用播放器打开它们可以听到断断续续的声音以及被毁掉的画面。请教xqq之后得知, 这实际上是因为这份转储不纯, 中间夹杂了非视频流的数据, 我们需要把它们剔除掉。

经过研究, 每一个UDP数据报去掉前32个字节的信息, 剩下就是TS流数据。那32个字节的信息, 大概是联通的私有协议头。提取出来的纯TS数据可以直接用播放器播放, 是高清的。并且, 这个TS数据还带有电视频道(如CCTV-1)等信息, 可能是直接从电视台转发的。

于是, 我们可以编写程序, 实时的将接收到的数据保存下来, 而不是使用Wireshark抓包后再保存。因为抓包后再处理会比较慢。

又由于IPTV传输的是组播数据并且交换机的端口镜像功能比较”好”, 我们连网卡的混杂模式也不需要了(Wireshark抓包是需要设置网卡为混杂模式), 只需要假装(设置socket)加入这个组播组即可接受到和电视同样的新鲜的TS流数据。接下来可以实时地进行转发、录制或加入弹幕等操作。

2016年6月5日 16:35:10更新: 经过测试, 直接用计算机连接光猫上IPTV的端口并加入相应的组播组就可以直接收看电视, 没有认证问题。

发表评论?

1 条评论。

  1. 好玩!这很清真!

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/8483QrCode