局域网Emby白嫖教程保姆版

内容简介

源自timeblog时光轴,不知道大神尊姓大名,想看原教程的点击这里,非常感谢作者提供这么好的方法。有人说既然都有原创了,为何我还要写一遍,因为大神的原创贴过于精简,不适合小白,很多人看的一头雾水,那么我就做个搬运工吧,转化为大家通俗易懂的教程。好了,废话太多,下面步入正题吧,高手可以绕道,哪里不对欢迎指正。

前期准备

一台装有群晖的nas(安装好webstation),一台电脑安装好Xshell。

破解原理

在时光轴大佬的原教程中有分析到,emby在联网验证授权时,通过抓包发现emby客户端访问了一个外部站点 mb3admin.com ,会请求一些东西,然后站点返回了一些json信息,从而客户端认为是被授权了。所以这次破解原理就是自己搭建一个伪站点mb3admin.com ,局域网截取客户端的请求信息到伪站点,从而返回json,完成破解。

破解步骤

安装emby

如何在群晖的第三方源安装emby或者docker安装emby,请大家动动手指百度搜一下,教程很多,在此不再啰嗦。

搭建伪站

用的是群晖套件中的webstation,在虚拟主机中新增,具体设置请参考下图,注意认真点,文档根目录其实是证书的目录,建议完全按照图中的目录设置,后面你会发现会省事很多。

目录设置

创建好之后,是这样的:

效果图

设置nginx

关于nginx是什么请自行百度。具体方法,用xshell端通过ssh登录群晖,输入

1
sudo -i

回车,输入密码后切换到root账户,如下图

切换到root账户

接着输入

1
cd /etc/nginx

进入到nginx目录

输入

1
vi nginx.conf

屏幕会弹出nginx的配置文件内容,如下图

内容图

按住键盘pagedown键,一直向下翻,找到最后一页的代码,原代码如下图。当然你也可以用winscp登录群晖,找到配置文件下载到本地 ,用editplus等编辑工具进行编辑。

配置文件

按键盘的i键一次,进入编辑,删掉所有server括号中的代码,替换为以下的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
    server {

listen 443 ssl;
server_name mb3admin.com;
ssl_certificate /volume1/web/mb3admin.com/mb3admin.com.cert.pem;
ssl_certificate_key /volume1/web/mb3admin.com/mb3admin.com.key.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;

location = /webdefault/images/logo.jpg {
alias /usr/syno/share/nginx/logo.jpg;
}

location @error_page {
root /usr/syno/share/nginx;
rewrite (.*) /error.html break;
}

location ^~ /.well-known/acme-challenge {
root /var/lib/letsencrypt;
default_type text/plain;
}


location / {
rewrite ^ / redirect;
}

location ~ ^/$ {
rewrite / https://$host:5001/ redirect;
}
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;

location /admin/service/registration/validateDevice {
default_type application/json;
return 200 '{"cacheExpirationDays": 7,"message": "Device Valid","resultCode": "GOOD"}';
}
location /admin/service/registration/validate {
default_type application/json;
return 200 '{"featId":"","registered":true,"expDate":"2099-01-01","key":""}';
}
location /admin/service/registration/getStatus {
default_type application/json;
return 200 '{"deviceStatus":"","planType":"","subscriptions":{}}';
}

}

替换完成后按ESC退出,检查一下括号的完整性(还是在editplus中检查方便),这里需要注意的是server括号外面还有半个括号(最后一行的括号),这个是和上面的http{对应的,千万别丢了。没问题的话,输入

1
:wq
效果图

那么以上的操作就定义了证书的位置,和伪站返回的json信息。输入

1
nginx -t

检查配置是否有问题,无报错,输入

1
nginx -s reload

刷新,如图。如果有报错,会提示多少行有错误,可以回去检查编辑,多半是因为括号不完整问题引起的。

申请证书

浏览器进入https://www.gmcert.org/subForm#,申请证书。这里参考时光轴大佬的部分教程,使用在线签发证书比较简单。借用大佬的设置如下:

签发证书
设置内容

全部检查无误后,点击签发证书,一两秒后,就可以把证书下载到本地了。

修改证书位置

回到群晖,把上面申请好的证书拷贝到volume1/web/mb3admin.com下。注意这里我虚拟的群晖只有一个盘,默认就是volume1,如果你有多个盘,请放在volume1中,或者放别的盘也行,对应要返回上面步骤修改代码中对应的证书位置。

证书位置

修改Hosts

目的是让客户端访问mb3admin.com网站时,自动跳转到搭建的伪站上。这里建议在路由器上面修改,这样局域网中所有设备请求信息都能跳到伪站。如果你只用这台电脑使用emby,修改主机的hosts也是可以的。

楼主用的是openwrt固件路由,操作方法是用xshell另外新建一个连接,连接到自己的路由器地址,然后输入

1
vi /etc/myhosts

按i进入编辑,添加

1
192.168.123.5 mb3admin.com www.mb3admin.com

这里的IP是伪站的IP,也就是你群晖的IP地址,添加完后按ESC,输入:wq保存退出

效果图

浏览器打开路由器管理页面,找到网络——DHCP/DNS——HOSTS和解析文件——额外的HOSTS文件,增加/etc/myhosts路径,点击保存&应用,如图

额外的HOSTS文件

在群晖中修改hosts。方法:回到xshell客户端(连接群晖的),输入

修改群晖hosts

过程依旧,按i编辑,esc退出,输入 :wq保存。

添加Emby端的证书

具体方法,输入以下代码回车

1
curl https://static.timewk.cn/mb3active/cert/guomi.cer >> /etc/ssl/certs/ca-certificates.crt

然后,输入

1
cd /var/packages/EmbyServer/target/mono/bin

回车,注意这里如果您安装的是docker版本的emby,路径可能需要自己找一下,楼主安装的是第三方套件的emby。再输入

1
./cert-sync /etc/ssl/certs/ca-certificates.crt

回车

效果图

然后输入

1
cd /volume1/web/mb3admin.com

回车,再输入

1
cat mb3admin.com.cert.pem >> /etc/ssl/certs/ca-certificates.crt

回车(如果有造成原证书丢失,套件中心无法访问网络情况,请下载原备份证书修复一下,下载地址)

这样基本大功告成。

第九步,浏览器检验伪站是否搭建成功,尝试访问

https://mb3admin.com/admin/service/registration/validateDevice

https://mb3admin.com/admin/service/registration/validateDevice/666

如果都可以返回json值,那么证明成功了,如下图

效果图

到此教程基本就结束了,浏览器去访问emby服务端吧,输入你的账号密码登录,看看是不是破解成功了,感觉赚了800多大洋,有木有?

效果图

因为路由器上修改了hosts,所以局域网中不同的客户端安装证书(mb3admin.com.cert.pem)后都可以自动破解使用。

安卓手机添加证书方法:下载国密证书(https://static.timewk.cn/mb3active/cert/guomi.cer)后,打开设置->安全->凭据存储栏目,从SD卡安装,选择到证书文件后,为证书命名,然后选择确定。

IOS手机:下载国密证书(https://static.timewk.cn/mb3active/cert/guomi.cer)后,设置里配置安装证书,然后在设置--通用--关于手机--证书信任设置里,把刚安装的证书完全信任打开,就可以了。

电视盒子,楼主用芝杜z9s测试安装好emby后,都无需添加证书直接打开就能使用。

补充-1

教程里第三步,修改群晖的nginx.conf,发现每次重启后,配置都会被还原为系统自带的,每次重启都得重新配置,非常麻烦。解决办法:

在/etc/nginx/sites-enabled文件夹下新建proxy.conf文件,输入以下代码,这样重启后也不会失效了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
server_names_hash_bucket_size 128;       //注意别忘复制这行代码
server {

listen 443 ssl;
server_name mb3admin.com;
ssl_certificate /volume1/web/mb3admin.com/mb3admin.com.cert.pem;
ssl_certificate_key /volume1/web/mb3admin.com/mb3admin.com.key.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;

location = /webdefault/images/logo.jpg {
alias /usr/syno/share/nginx/logo.jpg;
}

location @error_page {
root /usr/syno/share/nginx;
rewrite (.*) /error.html break;
}

location ^~ /.well-known/acme-challenge {
root /var/lib/letsencrypt;
default_type text/plain;
}


location / {
rewrite ^ / redirect;
}

location ~ ^/$ {
rewrite / https://$host:5001/ redirect;
}
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;

location /admin/service/registration/validateDevice {
default_type application/json;
return 200 '{"cacheExpirationDays": 7,"message": "Device Valid","resultCode": "GOOD"}';
}
location /admin/service/registration/validate {
default_type application/json;
return 200 '{"featId":"","registered":true,"expDate":"2099-01-01","key":""}';
}
location /admin/service/registration/getStatus {
default_type application/json;
return 200 '{"deviceStatus":"","planType":"","subscriptions":{}}';
}

}

补充-2

添加证书步骤中

1
cp mb3admin.com.cert.pem /etc/ssl/certs/ca-certificates.crt

这一命令会造成群晖所有根证书丢失,建议在修改前备份ca-certificates.crt文件,或使用

1
cat mb3admin.com.cert.pem >> /etc/ssl/certs/ca-certificates.crt

设置nginx代理部分可以更改,我按照楼主的教程设置之后发现无法正常访问,后来通过阅读配置文件发现,在Web Station添加新域名之后使用命令

1
cat /etc/nginx/app.d/server.webstation-vhost.conf

查看最后一行,例如我自己的就是

1
include /usr/local/etc/nginx/conf.d/英数混合/user.conf*;

然后运行

1
cd /usr/local/etc/nginx/conf.d/英数混合

请勿照抄,按照自己的目录修改然后运行

1
vi user.conf

插入如下代码保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;

location /admin/service/registration/validateDevice {
default_type application/json;
return 200 '{"cacheExpirationDays": 7,"message": "Device Valid","resultCode": "GOOD"}';
}

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

location /admin/service/registration/getStatus {
default_type application/json;
return 200 '{"deviceStatus":"","planType":"","subscriptions":{}}';
}

然后运行

1
nginx -s reload

本文来源

矿渣论坛