恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 726|回复: 12

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

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

通过抓包,查看电信鉴权获取方式为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,等很简单的,经测试都是不对的,解密失败。
后来写了个脚本测试了下,所有的八位数,结果让我大吃一惊,获取到了175个8位密钥
用这些密钥去加密,结果,全部正确!随便拿一个去加密,都可以获取到鉴权,没有问题。
看了下3DES加密的介绍,如果密钥位数少了,与DES安全性相同
。但实在是没弄明白,为什么会有175个密钥,DES加密安全性有这么差吗?
下面是查找KEY及解密的python代码! 需要自己先找到自己的Authenticator

  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.         if x % 500000 == 0:
  37.             print('已经搜索至:-- %s -- '%(x))
  38.         pc = prpcrypt(str(x))
  39.         try:
  40.             e = pc.decrypt(text)  
  41.             print('已经找到key:%s,解密后为:%s'%(x,e))
  42.             keys.append(x)
  43.         except Exception as e:
  44.             pass
  45.     print('解密完成!共查找到 %s 个密钥,分别为:%s'%(len(keys),keys))
  46. #查找KEY
  47. find_key(Authenticator)
  48. #下面的用来解密
  49. #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.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2020-11-29 15:17

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表