恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3739|回复: 19

[iptv信源 资源分享或寻求] 四川电信鉴权3DES加密及解密方式及查找密钥代码

[复制链接]
发表于 2020-11-22 00:30 | 显示全部楼层 |阅读模式
本帖最后由 supzhang 于 2022-5-10 14:34 编辑

目的:
获取鉴权,从而获取到频道回放地址、获取各频道节目表、获取各频道组播地址
另外:获取鉴权,只是第一步,如果你想要获取回放地址,播放回放、获取频道组播地址等就需要额外的工作了。
这里只是获取鉴权(每个人的密钥可能都不同),其他的内容都可以从网上查找。
流程:
通过抓包,查看电信鉴权获取方式为1、GET http://182.138.3.142:8082/EDS/js ... XX@ITV&Action=Login
获取到下一步用到的HOSTxxxxxxxxxxx为自己的ID,
2、POST http://HOST/EPG/jsp/authLoginHWCTC.jsp
提交UserID获取到  EncryptToken
3、POST http://HOST/EPG/jsp/ValidAuthenticationHWCTC.jsp
提交 UserID,Authenticator,STBVersion,STBID,EncryptToken,mac地址...其他无所谓
获取到鉴权的cookies {'JSESSIONID': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}UserToken,stbid

获取鉴权:
通过上面获取到的信息,即可请求节目表以及频道列表,以及回放地址
其中最主要的一个参数为 Authenticator
查看到电信IPTV相关的文档获取其鉴权的方式
随机8位数+$+TOKEN+$+USERID+$+STBID+$ip+$+mac+$$CTC
使用3DES加密 参数为:ECB PKCS7,使用对应的密钥对上面的字符串进行加密获取。

查看网上其他地方的密钥都是00000000,等很简单的,经测试都是不对的,解密失败。


后来写了个脚本测试了下,所有的8位数,结果让我大吃一惊,获取到了175个8位数字的密钥(测试过其他朋友,有的是128个)
用这些密钥去加密,结果,全部正确!随便拿一个去加密,都可以获取到鉴权,没有问题。
看了下3DES加密的介绍,如果密钥位数少了,与DES安全性相同
。但实在是没弄明白,为什么会有175个密钥,DES加密安全性有这么差吗?


下面是查找KEY及解密的python代码! 需要自己先找到自己的Authenticator

另:
3DES加密,密钥使用的是24位,如果不够,后面就补0
如果大家找不到密钥,可以给我发个你抓的包(或者直接给我你的Authenticator),我试下。
其他地区的及运营商的,如果需要也可以发过来测试下,应该都差不多。
mail:31849627@qq.com
个人不太懂加密,只是借用了网上的加密解密脚本修改了下。有不对的地方欢迎大家指正。
  1. #-*- coding:utf-8 -*-
  2. #用来加密及解密四川电信鉴权的3DES加密
  3. from Crypto.Cipher import DES3
  4. Authenticator = ''
  5. #需要解密的字符串,即:Authenticator 值
  6. #key的值,查找key时不需要输入
  7. key = ''
  8. BS = DES3.block_size
  9. def pad(s):
  10.     p =  s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
  11.     return p
  12. def unpad(s):
  13.     p =  s[0:-ord(s[-1])]
  14.     return p
  15. class prpcrypt(): #加密解密方法
  16.     def __init__(self,key):
  17.         self.key = key + '0'* (24-len(key))
  18.         self.mode = DES3.MODE_ECB
  19.     def encrypt(self, text): #加密文本字符串,返回 HEX文本
  20.         text = pad(text)
  21.         cryptor = DES3.new(self.key, self.mode)
  22.         x = len(text) % 8
  23.         if x != 0:
  24.             text = text + '\0' * (8 - x)
  25.         self.ciphertext = cryptor.encrypt(text)
  26.         return self.ciphertext.hex()
  27.     def decrypt(self, text):
  28.         cryptor = DES3.new(self.key, self.mode)
  29.         de_text = bytes.fromhex(text)
  30.         plain_text = cryptor.decrypt(de_text)
  31.         return plain_text.replace(b'\x08',b'').decode('utf-8')
  32. def find_key(text):
  33.     keys = []
  34.     print('开始测试00000000-99999999所有八位数字')
  35.     for x in range(100000000):
  36.         key = '%08d'%x
  37.         if x % 500000 == 0:
  38.             print('已经搜索至:-- %s -- '%(key))
  39.         pc = prpcrypt(key)
  40.         try:
  41.             e = pc.decrypt(text)
  42.             print('已经找到key:%s,解密后为:%s'%(key,e))
  43.             keys.append(key)
  44.         except Exception as e:
  45.             pass
  46.     print('解密完成!共查找到 %s 个密钥,分别为:%s'%(len(keys),keys))
  47. #查找KEY
  48. find_key(Authenticator)
  49. #下面的用来解密
  50. #pr = print(prpcrypt().decrypt(Authenticator))
复制代码



点评

24字节,不是24位写错了  发表于 2020-11-22 15:28
你确认是3des?3des密钥是24位。  发表于 2020-11-22 07:22
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-22 00:30 来自手机 | 显示全部楼层
感谢楼主分享……
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-22 00:32 | 显示全部楼层
楼主,在研究新的通用尾巴呢?
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-22 00:51 来自手机 | 显示全部楼层
大佬能发下代码吗?让我等也研究一下
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-22 15:31 | 显示全部楼层
3des密钥是24字节即192位。24位写错了。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-22 16:23 来自手机 | 显示全部楼层
楼主,我抓包的.sdp结尾,尾巴一大堆,能帮我研究一下怎么用吗
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-22 16:24 来自手机 | 显示全部楼层
我试了很多尾巴都是播几分钟或几十秒就卡顿不播了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-22 23:09 | 显示全部楼层
谢谢,能分享php代码吗
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-11-23 11:37 | 显示全部楼层
3DES加密确实是24位,不过他只用了八位,后面的都是补0
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-23 11:53 | 显示全部楼层
升级到 1000m   iptv口子  用以前 直接看的方式好像不行了  要填机顶盒的数据 才能看直播  以前口子上随便填一个地址就可以了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-25 12:23 | 显示全部楼层
EncryptToken拿到后,后面的不知如何搞了。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-11-30 20:17 | 显示全部楼层
获得了鉴权是不是能看rtsp格式单播源?

点评

获得鉴权,就可以获取其回放地址了。就是你说的rtsp单播。只能在家里看的哈。当然,你也可以转发出来。  详情 回复 发表于 2020-12-1 11:28
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-12-1 11:28 | 显示全部楼层
天天开心3588 发表于 2020-11-30 20:17
获得了鉴权是不是能看rtsp格式单播源?

获得鉴权,就可以获取其回放地址了。就是你说的rtsp单播。只能在家里看的哈。当然,你也可以转发出来。

点评

好复杂,小白看不懂,只有老实玩组播。  详情 回复 发表于 2020-12-5 09:22
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-12-1 14:38 | 显示全部楼层
学习学习来学习
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-12-5 09:22 | 显示全部楼层
supzhang 发表于 2020-12-1 11:28
获得鉴权,就可以获取其回放地址了。就是你说的rtsp单播。只能在家里看的哈。当然,你也可以转发出来。

好复杂,小白看不懂,只有老实玩组播。
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2022-12-3 19:46

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

| 江苏省互联网有害信息举报中心 举报信箱:js12377@jschina.com.cn 举报电话:025-88802724 | 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797
快速回复 返回顶部 返回列表