电视直播IPTV组播数据抓包过程

您所在的位置:网站首页 iPhone抓包视频源 电视直播IPTV组播数据抓包过程

电视直播IPTV组播数据抓包过程

2024-07-13 11:11| 来源: 网络整理| 查看: 265

技术参考,理解IPTV组播原理

有什么用

技术参考,理解IPTV组播原理;经历2天时间的实践,曲折过程,成功把组播转单播播放

实测某地联通和移动的IPTV组播数据实时播放电视直播

具体描述如何接线及检查光猫IPTV口是否有组播数据

怎么用

在光猫IPTV口 和 机顶盒 的网线连接中间加进去一个Openwrt之类的路由,用于抓包

这个方法不是一个完美方法,直接在IPTV口插上一台PC机(可以用来扫描ISP组播网络信息),用于抓包又抓包到机顶盒获取IPTV直播源的过程数据包

可以参考这个流程,从中得到启发,应用在你独特的网络环境和特定的组播方案环境。

如果你想要确定光猫IPTV口是否有组播数据:

首先先确定ADSL光猫的IPTV口 一般光猫有4个网线口,一般IPTV口在第三个或第四个口,有的光猫会标记IPTV字样 如果上网的网络已经稳定,建议单独拿一个路由器(并另加一条网线)来测试IPTV组播数据 先要去下载一份当地的组播数据的通用组播列表m3u文件 比如:qwerttvv/Beijing-IPTV 预览

开放测试步骤:

打开https://c.carlzeng.top:3/iptv (或者直接使用下面已嵌入的页面) 点击用户名user,输入密码: user 点击 我的媒体中的“电视直播”,或者“最爱” 点击 相应的电视台,比如 “BRTV 影视” 相关内容 实现过程

在光猫IPTV口 和 机顶盒 的网线连接中间加进去一个Openwrt之类的路由,用于抓包(用路由器上运行tcpdmp)

tcpdump -i any -w /tmp/iptv.cap

继续下载。cap文件,用于下一步分析 cp /tmp/iptv.cap /www/luci-static/fonts/iptv.cap cp: write error: No space left on device

​ mv: write error: No space left on device ​ mv: can't preserve times of '/www/luci-static/fonts/iptv.cap': No space left on device ​ mv: can't preserve ownership of '/www/luci-static/fonts/iptv.cap': No space left on device ​ mv: can't preserve permissions of '/www/luci-static/fonts/iptv.cap': No space left on device

mount --bind /tmp/all.bin /www/web-static/fonts/icofont.eot http://192.168.1.2/luci-static/fonts/iptv.cap

​ 刷机中。。。()准备组播转单播工具中

phoniex-ralink-mt7621-k2p完美版本19216811-squashfs-sysupgrade.bin cd /www/luci-static/resources > tcpdump -i any -w iptv.cap tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes ^C 47092 packets captured 758845 packets received by filter 710456 packets dropped by kernel Openwrt可以通过http界面轻松下载到抓包文件 http://192.168.1.2/luci-static/resources/ option #1,python3 iptvsearch.py 抓到许多udp包 指向组播地址和端口,可为什么扫描不到呢? 在最后尝试python(iptvsearch.py)扫描 ip_start = '239.3.1.215' ip_end = '239.3.1.251' for port1 in [8000,8001,4120]: 仅扫描特定的iP端+端口,扫到6台(包含北京体育休闲) 北京体育休闲 rtp://239.3.1.243:8000 增加timeout时间从1到3s,重新扫描该小IP段 仍然仅扫描到6台,明显就是找不到239.3.1.215的4220端口 用VLC播放,画面偶尔会卡断,怀疑是不是‘硬件加速’的功能在电脑播放器没有导致的 option #2,尝试用(multicast-scanner.py) 这个是无效的工具。 [*] Finished in 0.0 second(s) [*] 0.0 day(s) 0.0 hour(s) 0.0 minute(s) 0.0 second(s) [*] No channels found 继续抓包,应该是没有抓到重点的包,(担忧:packets dropped by kernel) 删除固件中自带的@@@@@,节省出rom内存空间,用于抓包 移除以后,空间并没有增加,还是剩余800K iptv(机顶盒开机卡死无法连接到盒端管理平台).cap 由于中间我插入了k2p路由器,用于tcpdump

所以简单的不做任何设置,在猫IPTV口和机顶盒中间加路由器会导致:机顶盒重新开始时,机顶盒开机卡死无法连接到盒端管理平台。

继续抓包,中间应该查了什么步骤,导致机顶盒注册盒端管理平台不成。

https://www.youtube.com/watch?v=LTA0B437w_k&t=366s 统一回复下:视频中接线图位置,有独立IPTV口的朋友,说明你们家的IPTV就是组播模式,而我的就是单播模式,如果属于组播模式的就是我演示的异地的情况,播放使用rtp来播放,固定IP+不同端口或者是固定不同IP+相同端口来代替不同的频道,组播的方式其实更简单,需要在光猫里面转换为直播源,由于我的不是所有无法演示,需要破解光猫以管理员身份登录光猫后台,然后去设置VLAN,具体这种方式网上教程一堆,搜索组播获取直播源就有很多。 思路转变:IPTV口连接路由器抓包要点

openwrt 端口镜像?

开启防火墙igmp IGMPProxy 当前固件中找不到同名的igmpproxy,只找到 mcproxy 2014-05-02-bbb2e7ee23..5-1 133614 mcproxy is a free & open source implementation of the IGMP/MLD proxy function (see RFC 4605) for Linux systems. It operates on the kernel tables for multicast routing and allows for multiple instantiations, as well as dynamically changing downstream interfaces. 思路来源:https://zhing.fun/openwrt_iptv_igmp/ 组播地址扫描器

​ ​ 在Nmap中,使用broadcast-igmp-discovery脚本能够发现目标主机上的IGMP组播成员,并获取有意义的信息,如版本号、接口、源地址等。 ​ udpxy udpxy 是一个把组播流变成 http 点播流的软件,我们通过 udpxy,可以把我们iptv 的服务扩展到手机、平板上,甚至映射到公网上,在外面就可以直接访问家里的 iptv 电视节目。

接线注意事项/踩坑

由于朋友的拓扑是光猫出来两根网线,一根进软路由负责拨号,第二根接K2P路由器(充当AP角色,刷Padavan系统)负责接通组播环境。

这第二根的接线有蹊跷,如果接到AP的LAN口(任何一个LAN口)就会引起,新接入的网络设备因为自动分配到192.168.1.0网段的IP而导致无法上网(这里排查了几个小时才注意到问题在DHCP上,一开始以为是组播的UDP数据包引发网络风暴....坑死自己)后来的解决办法是把Padavan AP重新配置了一下(主要是LAN口IP,DHCP设置得跟上游的软路由DHCP相同的网段,而不同的IP区间),然后把这第二根线接到WAN口。

这才解决了新接入AP的网络设备自动获取的正确网段的IP地址,而找到正确的网关,从而不影响接入互联网。

另外还有一种方法是登录ISP猫的后台,关闭掉DHCP.

跨ISP时,用HK或JP的CDN都不如直接连接来得快。

移动网络播放IPTV组播

开始尝试扫描 北京移动通用组播 通用组播列表永久地址(北京移动网络通用,可以在支持组播的环境中任意播放)

K2P Padavan,修改IP:192.168.1.12 修改为了,避开移动猫中的192.168.1.1网段。

ssh [email protected] yes 可以正常启用udpxy -p 8013

记录成功(接收组播数据) 移动猫的IPTV口连接Padavan的Lan口!必须是IPTV口到K2P路由器的Lan口(wan口不行), 然后在后台开启 udpxy -p 8013 -m 192.168.1.12 (没有) 就可以接收到组播数据rtp://228.1.1.194:8002;VLC可以播放。 然后路由器设置:【已截图】必须要在路由上开启: 启用 IGMP/MLD 侦听 M2U - 以太网交换机: HW IGMP/MLD snooping M2U - 无线 2.4G: muli...

Padavan系统的K2P路由器IPTV设置

下一步: 用udpxy转化出http数据 udpxy -p 8013 -m 192.168.1.12 udpxy -p 8014

纠正: “启用 IGMP/MLD 侦听” 必须关闭!! 后台运行着 5627 admin 1000 S udpxy -p 8013 -m 192.168.1.12 5900 admin 1000 S udpxy -p 8012 又能接收到组播数据信息; 点击界面的重启信息后,又不能接收组播数据了。

​ 1. Kill 掉用来的 udpxy -p 8013 -m 192.168.1.12 2. 重新运行udpxy -p 8013 -m 192.168.1.12 3. 又能接收到组播数据了。

必须连接猫上面IPTV口,如果其他的口,播放中的组播数据马上断掉。

无所谓运行不运行udpxy;

按目前的配置,重启一下Padavan K2P路由器;看看能否收到组播数据 可以。

也就是说:开启 “启用组播路由到内网”

关闭:“启用 IGMP/MLD 侦听”

进光猫设置(用光猫背面的普通用户登录),关闭防火墙,关闭一些不必要的,提高传输效率 启用防火墙:关闭 防火墙等级:低 防止端口扫描:关闭 把DHCP的ip地址设置到192.168.1.20 - 192.168.1.254;这样是为了避开Padavan K2P路由器的IP地址(Lan口,设置为静态的192.168.1.12)

播放组播过程

现实中还会遇到:

如何拉两根线从室内弱电箱中的光猫到客厅主路由器的问题 (光猫桥接路由器,路由器拨号上网的情况下)如何解决把两根线都接到主路由器以后,新的wifi客户端连接,会被光猫的DHCP服务分配到192.168.1.0网段的IP而导致无法上网的问题 灵感来源

后来发现这个抓包的结果,其实大佬已经有分享:

抓包的m3u结果:https://github.com/wuwentao/bj-unicom-iptv https://github.com/dandeliono/bj-unicom-iptv 这里有所有的答案!如下:

北京联通IPTV播放列表 https://github.com/wuwentao/bj-unicom-iptv 北京电信IPTV播放列表 https://github.com/wuwentao/bj-telecom-iptv 北京移动IPTV播放列表 https://github.com/wuwentao/bj-mobile-iptv 8:07pm 如果还是想要自己扫描:https://github.com/sdhzdmzzl/iptv_channel_scanner_linux

Padavan固件的版本选择:

hanwckf移植版:由hanwckf移植的版本,其中Nano版本非常不错。您可以在https://github.com/hanwckf/rt-n56u/下载此版本。 hiboy移植版:由hiboy移植的Padavan固件,您可以在https://opt.cn2qq.com/padavan/获取该版本。 荒野无灯版:这个版本目前已经停更,但您仍然可以在恩山论坛上找到相关信息。如果需要,您可以通过以下链接下载该固件:https://share.weiyun.com/u4nGOH8u 密码:plz4tu。

刷入hanwckf移植版:由hanwckf移植的版本,其中Nano版本非常不错。您可以在https://github.com/hanwckf/rt-n56u/下载此版本。 连接网络,发现udpxy,自动升级了! 页面也正常:http://192.168.1.2:8012/status 版本:udpxy v. 1.0 (Build 23) standard - [Thu Dec 21 07:36:58 2023]

satus页面得知: Multicast address 从0.0.0.0 变成了 192.168.6.192 测试组播转单播 多拉一根线进入路由器 http://192.168.6.243:8012/rtp/239.3.1.1:8000 成功组播! 不是用说明书所示Available HTTP requests: http://address:port/udp/mcast_addr:mport/ 而是http://192.168.6.243:8012/rtp/239.3.1.1:8000 批量替换测试 http://192.168.6.243:8012/rtp/239.3.1.129:8008 彻底都正常了!包括:高清频道 linux下高效组播地址端口扫描(工具无效)

https://github.com/sdhzdmzzl/iptv_channel_scanner_linux

搭一下环境,用linux编译一下: g++ -g -o iptvscanner iptvscanner.cpp -lpcap

然后这样扫一扫:./iptvscanner 239.3.1.1 239.3.1.254

大目标/方向 目前的IPTV直播台为 合计: 165个 高清: 54个 4K: 2个 标清: 109个 导入emby后,有144个项目。 拉到VLC中,有193个 实际最新扫描结果为:?

如何在debian或者docker中弄出一个c++编译环境? Pull一个gcc 或g++ 镜像下来,只为了编译出一个可执行文件,不值当;还面临为要运行在MAC上而debian的IP段是无法扫描的,除非修改它的IP影响其他服务的运行了,还是在MAC下安装g++编译出一个mac平台下的可执行文件比较靠谱 问题变成: 如何在Mac下安装g++ 先尝试了一下Terminal下运行 g++,居然提示的是...

......

继续阅读

请点击访问最新版内容

本文来自博客园,作者:CarlZeng,转载请注明原文链接:https://www.cnblogs.com/backuper/p/17966927

需求沟通链接 扫客服加群:


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3