diff --git a/Surge模块/crack.js b/Surge模块/crack.js
new file mode 100644
index 0000000..2e29b17
--- /dev/null
+++ b/Surge模块/crack.js
@@ -0,0 +1,177 @@
+const hostname = ['v3.paddleapi.com','api.elpass.app','api.gumroad.com',
+ 'amazonaws.com'
+ // '/.*?\.execute-api.*\.amazonaws\.com/'
+ ]
+const url = $request.url;
+const domain = url.split('/')[2];
+const path = url.split(domain)[1]?.split('?')[0];
+
+const handleRequest = () => {
+ if (domain === hostname[0]) {
+ // /3.2/license/
+ if (path.endsWith('activate')) {
+ paddleActivate();
+ } else if (path.endsWith('verify')) {
+ paddleVerify();
+ }
+ } else if (domain === hostname[1]) {
+ // /device/
+ if (path.endsWith('init')) {
+ elpassInit();
+ } else if (path.endsWith('activate-with-key')) {
+ elpassActiveWithKey();
+ } else if (path.endsWith('management')) {
+ elpassManagement();
+ }
+ } else if (domain === hostname[2]) {
+ // /v2/licenses/
+ if (path.endsWith('verify')) {
+ MediaMate();
+ }
+ } else if (domain.endsWith(hostname[3])) { // hostname[3].test(domain)
+ // /default/
+ if (['meddle-activate','meddle-authenticate','meddle-deactivate'].some(end => path.endsWith(end))) {
+ MacUpdater();
+ }
+ }
+
+ $done({});
+}
+
+// paddle
+const paddleActivate = () => {
+ let body = $request.body.split("&");
+ let product_id = "";
+ for (let k of body) {
+ if (k.indexOf("product_id") != -1) {
+ product_id = k.split("=")[1];
+ }
+ }
+
+ $done({
+ response: {
+ body: JSON.stringify({
+ success: true,
+ response: {
+ product_id: product_id,
+ activation_id: "QiuChenly",
+ type: "personal",
+ expires: 1,
+ expiry_date: 1999999999999,
+ },
+ }),
+ },
+ });
+};
+
+const paddleVerify = () => {
+ let body = JSON.stringify({
+ success: true,
+ response: {
+ type: "personal",
+ expires: 1,
+ expiry_date: 1999999999999,
+ },
+ });
+ $done({
+ response: {
+ body,
+ },
+ });
+};
+
+// elpass
+const elpassInit = () => {
+ let body = JSON.stringify({
+ code: 0,
+ subscriptionBillingPeriod: null,
+ subscriptionEndDate: 99999502400, //5100年授权
+ subscriptionSource: null,
+ autoRenew: true,
+ trial: false,
+ });
+ $done({
+ response: {
+ body,
+ },
+ });
+};
+
+const elpassActiveWithKey = () => {
+ let body = JSON.stringify({
+ code: 0,
+ license: "没有密钥 这个注入伪造信息是没有用的",
+ });
+ $done({
+ response: {
+ body,
+ },
+ });
+};
+
+const elpassManagement = () => {
+ let body = JSON.stringify({
+ email: "QiuChenly@52pojie.com",
+ subscriptionBillingPeriod: null,
+ subscriptionEndDate: 99999502400,
+ subscriptionSource: null,
+ autoRenew: true,
+ trial: false,
+ });
+ $done({
+ response: {
+ body,
+ },
+ });
+};
+// MediaMate
+const MediaMate = () => {
+ let body = JSON.stringify({
+ success: true,
+ uses: -999,
+ purchase: {
+ sellerId: "123",
+ productId: "",
+ productName: "",
+ permalink: "https://www.baidu.com",
+ productPermalink: "https://www.baidu.com",
+ email: "qiuchenly@outlook.com",
+ price: 100,
+ gumroadFee: 0,
+ currency: "usd",
+ quantity: 1,
+ discoverFeeCharged: false,
+ canContact: false,
+ referrer: "nmsl",
+ orderNumber: 1234,
+ saleId: "1",
+ saleTimestamp: "2099-07-16T19:00:00Z",
+ licenseKey: "我测你吗",
+ refunded: false,
+ disputed: false,
+ disputeWon: false,
+ id: "1234",
+ createdAt: "2023-07-16T19:00:00Z",
+ },
+ });
+ $done({
+ response: {
+ headers: {
+ "Content-Type": "application/json; charset=utf-8",
+ },
+ body,
+ },
+ });
+};
+
+// MacUpdater
+const MacUpdater = () => {
+ let body = "success";
+ $done({
+ response: {
+ body,
+ },
+ });
+};
+
+handleRequest();
diff --git a/Surge模块/crack.sgmodule b/Surge模块/crack.sgmodule
new file mode 100644
index 0000000..71312db
--- /dev/null
+++ b/Surge模块/crack.sgmodule
@@ -0,0 +1,14 @@
+#!name=91QiuChen crack
+#!desc=https://github.com/QiuChenlyOpenSource/91QiuChen
+
+[Script]
+Paddle = type=http-request,pattern=^https:\/\/v3\.paddleapi\.com\/3.2\/license\/.*, script-path=https://raw.githubusercontent.com/QiuChenlyOpenSource/91QiuChen/main/Surge模块/crack.js, requires-body=true, timeout=10, script-update-interval=604800
+
+elpass = type=http-request,pattern=^https:\/\/api.elpass.app\/device\/.*, script-path=https://raw.githubusercontent.com/QiuChenlyOpenSource/91QiuChen/main/Surge模块/crack.js, requires-body=true, timeout=10, script-update-interval=604800
+
+MediaMate = type=http-request,pattern=^https:\/\/api\.gumroad\.com\/v2\/licenses\/verify.*, script-path=https://raw.githubusercontent.com/QiuChenlyOpenSource/91QiuChen/main/Surge模块/crack.js, requires-body=true, timeout=10, script-update-interval=604800
+
+MacUpdater = type=http-request,pattern=^https:\/\/.*?\.execute-api.*\.amazonaws\.com\/default\/.*, script-path=https://raw.githubusercontent.com/QiuChenlyOpenSource/91QiuChen/main/Surge模块/crack.js, requires-body=true, timeout=10, script-update-interval=604800
+
+[MITM]
+hostname = %APPEND% v3.paddleapi.com, api.elpass.app, api.gumroad.com, .*?.execute-api.*.amazonaws.com
diff --git a/Surge激活脚本/Surge脚本配置例子.conf b/Surge激活脚本/Surge脚本配置例子.conf
deleted file mode 100644
index 945ba8f..0000000
--- a/Surge激活脚本/Surge脚本配置例子.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-[Script]
-Paddle1 = type=http-request,pattern=^https://v3.paddleapi.com/3.2/license/verify,requires-body=1,max-size=0,debug=1,script-path=paddle_act.js
-Paddle2 = type=http-request,pattern=^https://v3.paddleapi.com/3.2/license/activate,requires-body=1,max-size=0,debug=1,script-path=paddle_act.js
-
-elpass = type=http-request,pattern=^https://api.elpass.app/device/management,requires-body=1,max-size=0,debug=1,script-path=paddle_act.js
-elpass1 = type=http-request,pattern=^https://api.elpass.app/device/init,requires-body=1,max-size=0,debug=1,script-path=paddle_act.js
-elpass2 = type=http-request,pattern=^https://api.elpass.app/device/activate-with-key,requires-body=1,max-size=0,debug=1,script-path=paddle_act.js
-
-MacUpdater = type=http-request,pattern=https://.*?.execute-api.*.amazonaws.com/default/meddle-activate,requires-body=1,max-size=0,debug=1,script-path=paddle_act.js
-MacUpdaterDeac = type=http-request,pattern=https://.*?.execute-api.*.amazonaws.com/default/meddle-deactivate,requires-body=1,max-size=0,debug=1,script-path=paddle_act.js
-MacUpdaterAuthorization = type=http-request,pattern=https://.*?.execute-api.*.amazonaws.com/default/meddle-authenticate,requires-body=1,max-size=0,debug=1,script-path=paddle_act.js
\ No newline at end of file
diff --git a/Surge激活脚本/paddle_act.js b/Surge激活脚本/paddle_act.js
deleted file mode 100644
index e370f6a..0000000
--- a/Surge激活脚本/paddle_act.js
+++ /dev/null
@@ -1,122 +0,0 @@
-let url = $request.url;
-
-let paddleActivate = () => {
- if (url !== "https://v3.paddleapi.com/3.2/license/activate") return;
- let body = $request.body.split("&");
- let product_id = "";
- for (let k of body) {
- if (k.indexOf("product_id") != -1) {
- product_id = k.split("=")[1];
- }
- }
-
- $done({
- response: {
- body: JSON.stringify({
- success: true,
- response: {
- product_id: product_id,
- activation_id: "QiuChenly",
- type: "personal",
- expires: 1,
- expiry_date: 1999999999999,
- },
- }),
- },
- });
-};
-
-let paddleVerify = () => {
- if (url !== "https://v3.paddleapi.com/3.2/license/verify") return;
- let body = JSON.stringify({
- success: true,
- response: {
- type: "personal",
- expires: 1,
- expiry_date: 1999999999999,
- },
- });
- $done({
- response: {
- body,
- },
- });
-};
-
-let elpassManagement = () => {
- if (url !== "https://api.elpass.app/device/management") return;
- let body = JSON.stringify({
- email: "QiuChenly@52pojie.com",
- subscriptionBillingPeriod: null,
- subscriptionEndDate: 99999502400,
- subscriptionSource: null,
- autoRenew: true,
- trial: false,
- });
- $done({
- response: {
- body,
- },
- });
-};
-
-let elpassInit = () => {
- if (url !== "https://api.elpass.app/device/init") return;
- let body = JSON.stringify({
- code: 0,
- subscriptionBillingPeriod: null,
- subscriptionEndDate: 99999502400, //5100年授权
- subscriptionSource: null,
- autoRenew: true,
- trial: false,
- });
- $done({
- response: {
- body,
- },
- });
-};
-
-let elpassActiveWithKey = () => {
- if (url !== "https://api.elpass.app/device/activate-with-key") return;
- let body = JSON.stringify({
- code: 0,
- license: "没有密钥 这个注入伪造信息是没有用的",
- });
- $done({
- response: {
- body,
- },
- });
-};
-
-paddleActivate();
-paddleVerify();
-
-//这里可以用通用有效授权信息伪造下发即可伪造出真实激活状态
-elpassManagement();
-elpassInit();
-elpassActiveWithKey();
-
-let MacUpdater = () => {
- if (
- url.indexOf(
- "execute-api.eu-central-1.amazonaws.com/default/meddle-activate"
- ) === -1 &&
- url.indexOf(
- "execute-api.eu-central-1.amazonaws.com/default/meddle-deactivate"
- ) === -1 &&
- url.indexOf(
- "execute-api.eu-central-1.amazonaws.com/default/meddle-authenticate"
- ) === -1
- )
- return;
- let body = "success";
- $done({
- response: {
- body,
- },
- });
-};
-
-MacUpdater();
diff --git a/imgs/img.png b/imgs/Surge.png
similarity index 100%
rename from imgs/img.png
rename to imgs/Surge.png
diff --git a/imgs/Surge_1.png b/imgs/Surge_1.png
new file mode 100644
index 0000000..0e03642
Binary files /dev/null and b/imgs/Surge_1.png differ
diff --git a/imgs/Surge_2.png b/imgs/Surge_2.png
new file mode 100644
index 0000000..a2b5c38
Binary files /dev/null and b/imgs/Surge_2.png differ
diff --git a/imgs/Surge_3.png b/imgs/Surge_3.png
new file mode 100644
index 0000000..7c56296
Binary files /dev/null and b/imgs/Surge_3.png differ
diff --git a/imgs/img3.png b/imgs/img3.png
deleted file mode 100644
index c93bd58..0000000
Binary files a/imgs/img3.png and /dev/null differ
diff --git a/imgs/img_1.png b/imgs/img_1.png
deleted file mode 100644
index 76cb264..0000000
Binary files a/imgs/img_1.png and /dev/null differ
diff --git a/imgs/img_2.png b/imgs/img_2.png
deleted file mode 100644
index 09b8b3e..0000000
Binary files a/imgs/img_2.png and /dev/null differ
diff --git a/readme.md b/readme.md
index d5d4a4f..dc4208b 100644
--- a/readme.md
+++ b/readme.md
@@ -440,12 +440,11 @@ PD 19 说明与注意事项:
***
-# 利用 Surge 的 MitM 拦截功能支持激活的 macOS App
+# Surge crack 模块支持激活的 macOS App
点击展开
-
已测试支持以下App:
| App | 版本 | 特殊说明 |
@@ -460,23 +459,25 @@ PD 19 说明与注意事项:
| Timemator | 3.0.3 | |
| Multitouch | 1.27.23 | |
-Surge可以利用拦截修改http返回值的方式破解下面的app而无需修改原始App。下面是脚本破解步骤,如果你不需要用下面的App,看到这里就可以关闭网页了。
+Surge可以利用拦截修改http返回值的方式破解上面的app而无需修改原始App.
-Surge开启MitM和脚本功能,然后:
+步骤:
-1. 在你的配置文件中加入例子中提供文件中的Script字段信息:
- [Surge脚本配置例子.conf](Surge%E6%BF%80%E6%B4%BB%E8%84%9A%E6%9C%AC%2FSurge%E8%84%9A%E6%9C%AC%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90.conf)
- 
- 
- 
+1️⃣.Surge开启MitM和脚本功能,打开HTTPS解密
-2. [paddle_act.js](Surge%E6%BF%80%E6%B4%BB%E8%84%9A%E6%9C%AC%2Fpaddle_act.js)这个文件一定要复制到conf文件所在目录中。
+
-3. 记得Https解密打开,并且信任证书,MitM域名加入*.paddleapi.com保存即可。
- 如果要实现五千年授权需要打开增强模式并加入新的域名: api.elpass.app
- 
+
-4. 在App中随意输入序列号和邮箱,点击激活后秒激活。
+2️⃣.添加模块([Surge模块](https://raw.githubusercontent.com/QiuChenlyOpenSource/91QiuChen/main/Surge模块/crack.sgmodule))
+
+
+
+3️⃣.更新外部资源
+
+
+
+4️⃣.在App中随意输入序列号和邮箱,点击激活后秒激活