添加surge crack模块

This commit is contained in:
LanYun
2024-02-11 23:59:18 +08:00
parent 20dba7453c
commit 17823a7641
12 changed files with 206 additions and 147 deletions

177
Surge模块/crack.js Normal file
View File

@@ -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();

View File

@@ -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

View File

@@ -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

View File

@@ -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();

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

BIN
imgs/Surge_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
imgs/Surge_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

BIN
imgs/Surge_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -440,12 +440,11 @@ PD 19 说明与注意事项:<br>
***
# 利用 Surge 的 MitM 拦截功能支持激活的 macOS App
# Surge crack 模块支持激活的 macOS App
<details>
<summary>点击展开</summary>
已测试支持以下App:
| App | 版本 | 特殊说明 |
@@ -460,23 +459,25 @@ PD 19 说明与注意事项:<br>
| Timemator | 3.0.3 | |
| Multitouch | 1.27.23 | |
Surge可以利用拦截修改http返回值的方式破解面的app而无需修改原始App。下面是脚本破解步骤如果你不需要用下面的App看到这里就可以关闭网页了。
Surge可以利用拦截修改http返回值的方式破解面的app而无需修改原始App.
Surge开启MitM和脚本功能然后: <br>
步骤:
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)
![img.png](imgs/img.png)
![img_1.png](imgs/img_1.png)
![img_1.png](imgs/img_2.png)
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文件所在目录中。
![Surge.png](imgs/Surge.png)
3. 记得Https解密打开并且信任证书MitM域名加入*.paddleapi.com保存即可。<br>
如果要实现五千年授权需要打开增强模式并加入新的域名: api.elpass.app<br>
![img.png](imgs/img3.png)
![Surge_1.png](imgs/Surge_1.png)
4. 在App中随意输入序列号和邮箱点击激活后秒激活。
2⃣.添加模块([Surge模块](https://raw.githubusercontent.com/QiuChenlyOpenSource/91QiuChen/main/Surge模块/crack.sgmodule))
![Surge_2.png](imgs/Surge_2.png)
3⃣.更新外部资源
![Surge_3.png](imgs/Surge_3.png)
4⃣.在App中随意输入序列号和邮箱,点击激活后秒激活
</details>