iptv写代理php,苏州电信iptv用openwrt dhcp客户端协议突破dhcp+鉴权
本帖最后由 chazikai24 于 2018-10-30 13:17 編輯
大家好,我是跑路八萬,我現(xiàn)在慌的一比。
大家都知道,現(xiàn)在電信iptv,很多地方都改用dhcp+,也就是ipoe來認(rèn)真iptv業(yè)務(wù),光貓中itv配置為橋接,盒子為dhcp+鑒權(quán),用戶名密碼采用加密方式認(rèn)證來獲取IP。目前比較常見的openwrt接入iptv,是抄下機(jī)頂盒成功認(rèn)證拿到的IP信息,openwrt設(shè)置靜態(tài)IP來實(shí)現(xiàn)的。
IMG_4334.JPG (756.51 KB, 下載次數(shù): 17)
2018-10-30 10:21 上傳
這次帶來的是,openwrt建立接口“IPTV”,采用dhcp客戶端的方式,直接過認(rèn)證拿到IP。
HDCP.png (88.92 KB, 下載次數(shù): 15)
2018-10-30 10:36 上傳
本教程只是簡單的講述要點(diǎn),其他像怎么抓包啊請自行百度。
首先,老規(guī)矩,咱們用Wireshark來抓個包,看下dhcp+的握手過程
抓包1.png (139.83 KB, 下載次數(shù): 14)
2018-10-30 10:42 上傳
包抓到了,我們來看下dhcp discover請求里,包含了option12跟60兩個關(guān)鍵的信息,也就是說蘇州電信iptv只認(rèn)證盒子序列號跟帳號密碼,當(dāng)然了,mac是也是必須的,我們先把盒子的mac保存下來備用。
抓包2.png (111.15 KB, 下載次數(shù): 14)
2018-10-30 10:45 上傳
好,咋們接下來先看看option12這個數(shù)據(jù),MMP,明文,盒子的序列號,太棒了,復(fù)制出來備用
抓包3.png (27.7 KB, 下載次數(shù): 15)
2018-10-30 10:46 上傳
再來看一下option60,也就是包含了iptv帳號密碼的數(shù)據(jù),想都不用想了,肯定是加密的
抓包4.png (60.18 KB, 下載次數(shù): 11)
2018-10-30 10:48 上傳
其中hex的3c表示的是option60,3d表示的是長度,所以我們只要從00開始,把這個數(shù)據(jù)保存好備用,格式:0000if39.....兩位一個長度,我這里長度是61,所以一共有122個字符串,大家別漏了。
好了,到現(xiàn)在,必須的三個數(shù)據(jù)都拿到了,接下來在openwrt上新建“IPTV”口,我這里是單獨(dú)把eth2設(shè)為itv口的,然后光貓的ITV口(設(shè)置橋接,綁定端口2)連到openwrt的IPTV對應(yīng)的物理口上。IPTV口設(shè)置dhcp客戶端,為了不影響上網(wǎng),最好設(shè)置一下網(wǎng)關(guān)躍點(diǎn),其他像防火墻啊啥的這里不作為重點(diǎn)講述了。
接下來講一下dhcp客戶端模式,需要重點(diǎn)注意的幾個地方:
1.重設(shè)IPTV口的mac地址,直接把機(jī)頂盒的mac地址填入
mac.png (323.53 KB, 下載次數(shù): 13)
2018-10-30 12:29 上傳
2.修改/etc/config/network中的IPTV參數(shù)
network.png (79.59 KB, 下載次數(shù): 10)
2018-10-30 12:31 上傳
其中option hostname 'XXXXX'填入我們抓包抓到的option12的明文信息,也就是機(jī)頂盒的序列號信息
option sendopts '0x3c:00001f39.....'這個需要講一下,因?yàn)閛ption60是加密信息,我們抓包抓到的是16進(jìn)制的信息,所以我們只能把抓到的信息原模原樣發(fā)回去,所以用sendopts來發(fā)送,具體的用法可以自行查看udhcpc的用法說明。后面的0x3c,0x3c表示的是十六進(jìn)制,也就是十進(jìn)制的60,也就是我們發(fā)送option60信息。后面的00001f39.....就是上面抓包我讓你們保存的option60的信息。
到這里,大家一定覺得改造完成了,可以發(fā)包進(jìn)行dhcp認(rèn)證了。確實(shí),該發(fā)的信息都發(fā)了,但是為什么還是不行,通過抓包,我們發(fā)現(xiàn)了其中的原因。這里我們來說一下一位網(wǎng)友 @Phlyer ,這哥們確實(shí)蠻拼命的,還去openwrt社區(qū)發(fā)帖問,因?yàn)樗l(fā)現(xiàn)這樣改造之后,發(fā)出的包里,包含了兩個option60信息,為什么呢?我們來看下udhcpc的 -V說明,vendor class,也就是option60,string型,默認(rèn)為空,空的時候默認(rèn)發(fā)送udhcp version,說到這里大家都懂了,我們通過sendopts來發(fā)送option60信息,沒有使用-V來發(fā)送,所以程序覺得我們沒發(fā)option60,所以默認(rèn)發(fā)了一個udhcp的版本信息,再加上我們發(fā)送的option60信息,這樣包里就包含了兩個option60信息,當(dāng)然無法通過認(rèn)證,這時候,重點(diǎn)來了,我們來看第三步,希望這個哥們能看到這個帖子!
3.修改dhcp客戶端服務(wù)的腳本
我們找到/lib/netifd/proto/dhcp.sh,找到下面這行${vendorid:+-V "$vendorid"} \
sh.png (64.15 KB, 下載次數(shù): 17)
2018-10-30 12:53 上傳
改造一下,改成這樣 -V '' \
sh1.png (72.39 KB, 下載次數(shù): 16)
2018-10-30 12:54 上傳
然后我們重啟一下IPTV接口,見證奇跡的時刻來臨了,我們成功拿到了電信IPTV的IP。
我們接下來能做什么,比如電腦,手機(jī),網(wǎng)絡(luò)盒子,走iptv通道看直播,這里就不再細(xì)說了,這些網(wǎng)上都有。
原來的機(jī)頂盒,把有線設(shè)置為dhcp無加密,然后直接從openwrt的lan獲取ip,根據(jù)防火墻規(guī)則,igmpproxy,mwan直接走iptv出口看直播,點(diǎn)播,回放。
有的童鞋可能會問,我這里認(rèn)證方式除了option60,還有其他,比如61,125,怎么辦?
下面我來說一下option sendopts,拋磚引玉。
抓包的數(shù)據(jù),不管有沒有加密,我們都能用sendopts來發(fā)送,比如,我拿到一個加密的option61,怎么辦?
option sendopts '0x3d:XXXXXXX.....'? ?? ?? ? 十六進(jìn)制3d表示61,XXXX是抓包拿到的十六進(jìn)制加密信息
option125怎么辦?
option sendopts '0x7d:XXXXXXX.....'? ?? ?? ? 十六進(jìn)制7d表示125
當(dāng)然了,這是發(fā)送十六進(jìn)制的加密數(shù)據(jù),那鑰匙發(fā)送我上面說的明文option12呢?
option sendopts '12:XXXXXXX.....'
是不是很簡單?
再來說一下igmpproxy,因?yàn)闆]有l(wèi)uci界面,有的童鞋發(fā)現(xiàn)配置完/etc/config/igmpproxy,進(jìn)程沒起來啊,咋辦?
我教大家一個方法,我們打開/var/etc/igmpproxy.conf,看看里面的內(nèi)容,如果生成的內(nèi)容如下,那就是正確的,因?yàn)檫@個文件是igmpproxy啟動的時候根據(jù)/etc/config/igmpproxy來自動生成的。
TIM圖片20181030082122.jpg (30.54 KB, 下載次數(shù): 13)
2018-10-30 13:05 上傳
配置的注意點(diǎn)如下
TIM圖片20181030082106.jpg (50.6 KB, 下載次數(shù): 13)
2018-10-30 13:06 上傳
這兩個參數(shù),lan是默認(rèn)的,上面的IPTV就是我新建的端口,這里大小寫必須和你創(chuàng)建的一樣,否則無法正確生成/var/etc/igmpproxy.conf,程序也就無法正常啟動。
到此,我的教程結(jié)束了,我要跑路了,我現(xiàn)在慌的一比,再見!
總結(jié)
以上是生活随笔為你收集整理的iptv写代理php,苏州电信iptv用openwrt dhcp客户端协议突破dhcp+鉴权的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Node2vec原理剖析,代码实现
- 下一篇: Linux-C 文件操作