docker emby crack

docker emby

前言

由于xinjiawei1/emby_unlockd这个镜像里面的 mb6.top地址虽然能访问,但是对应接口已经无法访问,也不知道什么问题,作者也没有说明什么。 于是来动点手脚,自建一套服务器

准备一个Cloudflare Workers

https://workers.cloudflare.com/ 登录后即可开始创建

index.js代码如下,其他文件可以删除 welcome.html留下

 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
54
55
56
57
58
59

import welcome from "welcome.html";
/**
 * @typedef {Object} Env
 */

export default {
	/**
	 * @param {Request} request
	 * @param {Env} env
	 * @param {ExecutionContext} ctx
	 * @returns {Promise<Response>}
	 */
	async fetch(request, env, ctx) {
		const url = new URL(request.url);
		console.log(`Hello ${navigator.userAgent} at path ${url.pathname}!`);

		if (url.pathname === "/admin/service/registration/validateDevice") {
			const files = '{"cacheExpirationDays": 365,"message": "Device Valid","resultCode": "GOOD"}';
			return new Response(files, {
				headers: {
				"content-type": "application/json; charset=utf-8",
				"Access-Control-Allow-Origin": "*",
				"Access-Control-Allow-Headers": "*",
				"Access-Control-Allow-Method": "*",
				"Access-Control-Allow-Credentials": "true",
				},
			});
		} else if (url.pathname === "/admin/service/registration/getStatus") {
			const files = '{"deviceStatus":"0","planType":"Lifetime","subscriptions":{}}';
			return new Response(files, {
				headers: {
				"content-type": "application/json; charset=utf-8",
				"Access-Control-Allow-Origin": "*",
				"Access-Control-Allow-Headers": "*",
				"Access-Control-Allow-Method": "*",
				"Access-Control-Allow-Credentials": "true",
				},
			});
		} else if (url.pathname === "/admin/service/registration/validate") {
			const files = '{"featId":"","registered":true,"expDate":"2099-01-01","key":""}';
			return new Response(files, {
				headers: {
				"content-type": "application/json; charset=utf-8",
				"Access-Control-Allow-Origin": "*",
			
				"Access-Control-Allow-Headers": "*",
				"Access-Control-Allow-Method": "*",
				"Access-Control-Allow-Credentials": "true",
				},
			});
		}
		return new Response(welcome, {
			headers: {
				"content-type": "text/html",
			},
		});
	},
};

Deploy之后, 获取到一个地址, 记下来

后面会用到这三个地址

https://xxxx.xxx.workers.dev/admin/service/registration/validate https://xxxx.xxx.workers.dev/admin/service/registration/getStatus https://xxxx.xxx.workers.dev/admin/service/registration/validateDevice

PS:下文中替换的时候, 要注意, 原地址是带.php 后缀的, 记得去掉

运行一个已处理的镜像

xinjiawei1/emby_unlockd

PUID和PGID 可以这样获取 id 当前用户名, root用户的话就是 0

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
version: "3.7"
services: 
  emby:
    image: xinjiawei1/emby_unlockd:latest
    container_name: emby
    ports:
      - 8096:8096
      - 8920:8920
      - 1900:1900/udp
      - 7359:7359/udp
    environment:
      - PUID=0
      - PGID=0
    restart: always
    volumes:
      - /mnt/pt:/volume1/pt
      - /root/emby/config:/config
    devices:
      - /dev/dri:dev/dri

记录下镜像ID IMAGEID

拷贝出特定文件

1
2
3
4
5
docker cp {IMAGEID}:/system/Emby.Web.dll ./Emby.Web.dll
docker cp {IMAGEID}:/system/MediaBrowser.Model.dll ./MediaBrowser.Model.dll
docker cp {IMAGEID}:/system/dashboard-ui/modules/emby-apiclient/connectionmanager.js ./connectionmanager.js
docker cp {IMAGEID}:/system/dashboard-ui/embypremiere/embypremiere.js ./embypremiere.js
docker cp {IMAGEID}:/system/Emby.Server.Implementations.dll ./Emby.Server.Implementations.dll

然后把这几个文件拷贝到本地电脑

在windows下用VSCode和dnSpy进行处理

Emby.Web.dll

找到资源 Emby.Web.dashboard_ui.modules.emby_apiclient.connectionmanager.js, 右键保存到本地, 搜索mb6.top,对应替换前缀为上面的地址

然后把原来的js删掉, 创建文件资源, 选择改好的js文件

MediaBrowser.Model.dll

因为上面的镜像已经改过了, 这个文件暂时不需要动

Emby.Server.Implementations.dll

Emby.Server.Implementations.Security下的PluginSecurityManager。 找到 MBValidateUrl, 右键编辑字段,替换为上面的地址

connectionmanager.js

同 Emby.Web.dll 里面的那个文件一样的处理方式

embypremiere.js

同上,找到地址替换即可

替换回去

我是用Winscp先覆盖已处理的文件, 然后执行

1
2
3
4
5
docker cp ./Emby.Web.dll {IMAGEID}:/system/Emby.Web.dll 
docker cp ./MediaBrowser.Model.dll {IMAGEID}:/system/MediaBrowser.Model.dll 
docker cp ./Emby.Server.Implementations.dll {IMAGEID}:/system/Emby.Server.Implementations.dll 
docker cp ./connectionmanager.js {IMAGEID}:/system/dashboard-ui/modules/emby-apiclient/connectionmanager.js 
docker cp ./embypremiere.js {IMAGEID}:/system/dashboard-ui/embypremiere/embypremiere.js 

这样这个镜像就可以用,可以docker compose restart一下

或者也可以把当前镜像打包成一个新的, 防止下次手贱给更新了

1
docker commit emby emby_new:latest

然后把docker-compose文件里换一下

PS: 这里的emby是我docker compose文件里指定的容器名

Licensed under CC BY-NC-SA 4.0
记录平时瞎折腾遇到的各种问题, 方便查找
使用 Hugo 构建
主题 Stack 3.29.0Jimmy 设计