前;
后;
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和激活码的请求,服务器返回设备已激活的信息,客户端收到信息后启用会员功能,这也就是我们在没有网络的情况下无法使用离线转码等会员功能的原因。
通过抓包发现,主要会从以下几个地方发送请求:
1、mb3admin.com/admin/service/registration/getStatus
2、mb3admin.com/admin/service/registration/validate
3、mb3admin.com/admin/service/registration/validateDevice
因为服务器端返回的信息都是明文,所以我们有两种思路:
1是重放攻击,原理是将服务端返回的信息截取收集,然后需要验证的时候广播给客户端
2是直接搭建一个假的mb3admin.com网站,把原本向mb3admin.com的流量导向我们的假网站
然后你会发现第一种思路基本行不通,因为连接使用了https,在https,每个socket连接都会验证证书,交换密钥。攻击者截获请求,重新发送,因为socket不同,密钥也不同,要用这种发送估计就需要中间人攻击?
那么我们现在做的就是搭建一个假的mb3admin.com
可以搭建在本地,也可以搭建在服务器端
服务器需要安装apache/ngix,openssl,配置静态
所以本教程主要讲如何在本地建服务器并实现https访问
首先在本地一台linux主机上搭建好web,并安装openssl签发根证书,使用根证书签发好mb3admin.com证书,如果不会就百度线上证书签发,签发后把证书安装到你的电脑上的受信任的根证书签发机构。
nginx的配置参考:http://nginx.org/en/docs/http/configuring_https_servers.html
在路由器上使用dns工具或者直接把客户端的那台机器的hosts里面添加web主机的ipmb3admin.com
比如我这里web主机的ip是192.168.1.123,在hosts里面添加:
192.168.1.123mb3admin.com
伪静态写法(其实就是照抄抓包返回的值):mb3admin.com/admin/service/registration/validateDevice返回值:{"cacheExpirationDays":7,"message":"DeviceValid","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"}
////////////////////////////
location/admin/service/registration/validateDevice
return200{"cacheExpirationDays":3650,"message":"DeviceValid(limitnotchecked)","resultCode":"GOOD"};
location/admin/service/registration/validate
return200{"featId":"","registered":true,"expDate":"2099-01-01","key":""};
location/admin/service/registration/getStatus
return200{planType:"Lifetime",deviceStatus:0,subscriptions:[]};
location/admin/service/appstore/register
return200{"featId":"","registered":true,"expDate":"2099-01-01","key":""};
location/emby/Plugins/SecurityInfo
return200{SupporterKey:"",IsMBSupporter:true};
注意跨域访问的问题:
add_headerAccess-Control-Allow-Origin*;
add_headerAccess-Control-Allow-Headers*;
add_headerAccess-Control-Allow-Method*;
add_headerAccess-Control-Allow-Credentialstrue;
-----------------------------------------------------
网友回复:
我用了github上的那个白女票了之后,后来又失效了,可能因为NAS获取的动态IPV6公网有关,现在硬解不了,但是小金牌还在,老铁有办法么,我不想再重装了,IPV6公网是刚需,因为用的是移动
网友回复:
昨天就关注了,现在顶上去,感谢大佬分享。
另外,臭不要脸的求其他大佬搞个验证端docker出来,搭建起来就方便多了
。。。。。。。。
想了一下不对,需要自己设置设备ID,docker不好使。。。还是得自己折腾,感谢大佬!!!!
网友回复:
再帮大佬顶一下,刚刚想实际操作,请问怎么获取设备ID?或者就按照你写的规则key为空?
网友回复:
引用:michelleman发表于2020-7-1818:10
再帮大佬顶一下,刚刚想实际操作,请问怎么获取设备ID?或者就按照你写的规则key为空?...
网友回复:
引用:肉鸡发表于2020-7-1818:24
这个已经有现成的docker了
网友回复:
看了楼主说的原理,感觉最合适的办法应该是直接修改本地程序吧,修改成认为一直是激活成功的
网友回复:
引用:atXiang发表于2020-7-2009:57
docker关键字?多谢
网友回复:
引用:肉鸡发表于2020-7-2022:00
dmtc/emby-nginx
网友回复:
不知道在群晖里是否可以这一通设置?之前买过一个类似这种破解方式的,缴了钱啥都没有,被骗了
网友回复:
引用:idcdeng发表于2020-7-1718:33
共享出来更好了。我用plex
网友回复:
感谢,已成功。
请问有没有插件服务器搭建方法?
网友回复:
Windows服务端成功,Debian的一直失败。。。
网友回复:
马克,这个web服务器能否也封装成docker,和emby一起运行