Emby Premiere破解思路

技术 · 2020-01-08

Warning!!前排提醒,本教程仅供学习研究使用。

要使用本教程的方案,你需要一些基础知识:
1、web服务器搭建
2、ngix/apache静态页面
3、基础的linux知识
4、ssl证书签发
需要的条件:
1.一台基于linux的主机或者云服务器
2、开放80端口的公网ip(非必须)
3、一台基于openwrt或其他开放系统ssh的路由器
如果你仅仅是需要隐藏Premiere按钮或者修改emby皮肤的话,可以参考我的两篇文章:
http://yuanfangblog.xyz/technology/5.html
http://yuanfangblog.xyz/technology/113.html

那么现在开始教程:
先说下实现的原理,为了研究思路,博主花了800多块买了终身会员,通过在虚拟机里面安装emby并网卡抓包以及f12查看源码发现:
当我们使用、注册会员功能时,我们的客户端会向mb3admin.com发送带有设备id和激活码的请求,服务器返回设备已激活的信息,客户端收到信息后启用会员功能,这也就是我们在没有网络的情况下无法使用离线转码等会员功能的原因。
通过抓包发现,主要会从以下几个地方发送请求:

0.JPG

1、mb3admin.com/admin/service/registration/getStatus

4.jpg

这个连接主要用于获取会员状态:

2.JPG

因为我是终身会员,所以输出:

0000.JPG

2、mb3admin.com/admin/service/registration/validate

这个用于获取会员过期日

3、mb3admin.com/admin/service/registration/validateDevice

这个是验证设备

3.JPG

因为服务器端返回的信息都是明文,所以我们有两种思路:

1是重放攻击,原理是将服务端返回的信息截取收集,然后需要验证的时候广播给客户端
2是直接搭建一个假的mb3admin.com网站,把原本向mb3admin.com的流量导向我们的假网站

然后你会发现第一种思路基本行不通,因为连接使用了https,在https,每个socket连接都会验证证书,交换密钥。攻击者截获请求,重新发送,因为socket不同,密钥也不同,要用这种发送估计就需要中间人攻击?

那么我们现在做的就是搭建一个假的mb3admin.com

可以搭建在本地,也可以搭建在服务器端
服务器需要安装apache/ngix,openssl,配置静态
搭建web和配置静态自行寻找教程,比如我的博客就不是html静态页,因为没必要弄

5.JPG

弄成静态页面你就看不到那个php了

由于服务器太贵了,博主的服务器昨天宕机,今天下午才修好,并且国内服务器绑域名还要备案(我们这不需要绑),所以本教程主要讲如何在本地建服务器并实现https访问

首先在本地一台linux主机上搭建好web,并安装openssl签发根证书,使用根证书签发好mb3admin.com证书,如果不会就百度线上证书签发,签发后把证书安装到你的电脑上的受信任的根证书签发机构。

nginx的配置参考:http://nginx.org/en/docs/http/configuring_https_servers.html

在路由器上使用dns工具或者直接把客户端的那台机器的hosts里面添加web主机的ip mb3admin.com
比如我这里web主机的ip是192.168.1.123,在hosts里面添加:
192.168.1.123 mb3admin.com

伪静态写法(其实就是照抄抓包返回的值):mb3admin.com/admin/service/registration/validateDevice返回值:{"cacheExpirationDays": 7,"message": "Device Valid","resultCode": "GOOD"}
默认是7天一个轮回,可以把这个值改高点,免得回回验证
mb3admin.com/admin/service/registration/getStatus返回:{"deviceStatus":"","planType":"","subscriptions":{}}

mb3admin.com/admin/service/registration/validate返回:{"featId":"","registered":true,"expDate":"2020-07-07","key":"abcdefg29achijklmn0c598opqrst1e7"}

json写法参考:https://www.runoob.com/js/js-json.html

博主原本想直接在路由器openwrt上搞个web页,但由于博主使用lede的源码编译了openwrt,由于源码问题,反正搞了好久都装不上ssl和apache,于是放弃了

6.JPG

后续补充,博主已经靠自己签发根证书,然后用根证书签发mb3admin.com证书实现emby crack,并且重新编译openwrt,在路由器搭建了假站
配置如下:

location /admin/service/registration/validateDevice
  return 200 '{"cacheExpirationDays": 3650,"message": "Device Valid (limit not checked)","resultCode": "GOOD"}';

location /admin/service/registration/validate 
  return 200 '{"featId": "","registered": true,"expDate": "2099-01-01","key": ""}';

location /admin/service/registration/getStatus 
  return 200 '{planType: "Lifetime", deviceStatus: 0, subscriptions: []}';

location /admin/service/appstore/register 
  return 200 '{"featId": "","registered": true,"expDate": "2099-01-01","key": ""}';

location /emby/Plugins/SecurityInfo 
  return 200 '{SupporterKey: "", IsMBSupporter: true}';

注意跨域访问的问题:

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Headers *;
    add_header Access-Control-Allow-Method *;
    add_header Access-Control-Allow-Credentials true;

仅供学习研究使用,博主已购买正版软件。

EMBY
  1. 昭君 (作者)  2022-09-14
    @Charles

    博客里已经有教程了,或者可以安装pj版,不过我已经入正了,需要的话可以给提供pj文件,主要是hack掉MediaBrowser.Model.dll、Emby.Web.dll、Emby.Server.Implementations.dll、embypremiere.js、connectionmanager.js这几个文件就能实现pj,仅供学习研究使用

  2. Charles 2022-09-08

    思路完美,可惜不会操作,大佬有没有具体流程呢?

  3. 昭君 (作者)  2020-08-10
    @ss

    谢谢关注

  4. ss 2020-08-09

    感谢楼主思路,已破解

  5. 昭君 (作者)  2020-05-25
    @ynsol

    根证书签发参考:https://blog.csdn.net/cuitone/article/details/87966042?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
    我用的是openwrt路由器,编译了nginx和php,把伪站建在路由器上面的,ssl根证书签发我是在一台ubuntu电脑上安装了openssl签发

  6. ynsol 2020-05-24

    不好意思 請問根證書怎麼自己簽發
    我有架虛擬mb3admin.com 可以給window emby server 簽發註冊成功
    但是無法在黑裙輝上認證

  7. 昭君 (作者)  2020-05-03
    @齐齐

    omv上可以直接安装deb包,导入证书同linux,ssh登入,把证书拷贝到/usr/local/share/ca-certificates/目录,然后运行update-ca-certificates更新证书,在emby安装包里面还有个证书一并导入,群晖没必要导入,直接在要使用emby的电脑上安装根证书即可,我自己签发了根证书,然后用根证书签发mb3admin.com,现在正常使用

  8. 齐齐 2020-05-02

    麻烦问下,vps上已经做好了web omv上docker装的emby 是不是需要导入证书。怎么导入。群晖又怎么导入

  9. 昭君 (作者)  2020-05-01
    @VAY冬冬

    正常途径无法验证,建议直接自己创建根证书,然后用根证书签发证书

  10. VAY冬冬 2020-04-27

    请教博主let's encrypt怎么申请 mb3admin.com证书,无法验证

主题 Jasmine .