之前我就搞过一个更老版本的破解,经历了很久很久的更新,现在终于失效了,而2.11.6至少要求1.5.5的授权插件,所以又来更新授权插件了.
由于我们是破解,所以发送什么我们是不关心的,只关心URL是什么,方法是什么,激活成功提示什么.
通过返回后,会检查授权类型.
public function get_license_type() {
$status = $this->get_license_data();
if ( $status === false ) {
return -1;
}
if ( ! isset( $status->price_id ) ) {
return -1;
}
if ( ! isset( $status->license ) && $status->license !== 'valid' ) {
return -1;
}
if ( ! array_key_exists( $status->price_id, $this->tier_map ) ) {
return -1;
}
return (int) $this->tier_map[ $status->price_id ];
}
根据授权文件另一处,还有提起到不同的Plan,可能功能不同,我们肯定拿最全功能版.
if ( isset( $license_data->plan ) ) {
update_option( $this->product->get_key() . '_license_plan', $license_data->plan );
}
然后续费URL中用到这个,实际上无所谓.
public function renew_url() {
$license_data = get_option( $this->product->get_key() . '_license_data', '' );
if ( '' === $license_data ) {
return $this->get_api_url();
}
if ( ! isset( $license_data->download_id ) || ! isset( $license_data->key ) ) {
return $this->get_api_url();
}
return $this->get_api_url() . '/checkout/?edd_license_key=' . $license_data->key . '&download_id=' . $license_data->download_id;
}
还要返回授权码验证:
if ( ! isset( $license_data->key ) ) {
$license_data->key = $license;
}
要检查是不是授权OK.
if ( ! isset( $license_data->license ) ) {
$license_data->license = 'invalid';
}
验证返回的结构可以从rest_server.php中看出.
return new \WP_REST_Response(
array(
'message' => $fields['action'] === 'activate' ? __( 'Activated.', 'neve' ) : __( 'Deactivated', 'neve' ),
'success' => true,
'license' => [
'key' => apply_filters( 'product_neve_license_key', 'free' ),
'valid' => apply_filters( 'product_neve_license_status', false ),
'expiration' => $this->get_license_expiration_date(),
'tier' => $index > -1 ? $this->tier_map[ $index ] : -1,
],
)
);
检查授权:https://api.themeisle.com/license/check/Neve Pro Addon/[10位以上授权码]/[网站主页]/[随机6位字符]
返回示例(通过源码分析):
{
"success": "true",
"license": "valid",
"key": "[10位以上授权码]",
"download_id": 1,
"expires": "2037-06-01 23:59:59",
"price_id": 5,
"plan": 5
}
注册网站:https://api.themeisle.com/license/activate/Neve Pro Addon/[10位以上授权码]
POST内容:
array(2) {
["body"]=>
string(44) "{"url":"https://www.google.com"}"
["headers"]=>
array(1) {
["Content-Type"]=>
string(16) "application/json"
}
}
返回示例:
{
"message": "Activated.",
"success": true,
"license": {
"key": "[10位以上授权码]",
"valid": "valid",
"expiration": "June 2037",
"tier": 3
}
}
反注册网站:https://api.themeisle.com/license/deactivate/Neve Pro Addon/[10位以上授权码]
POST内容:同注册网站
返回示例:
{
"message": "Deactivated",
"success": true,
"license": {
"key": "",
"valid": "not_active",
"expiration": false,
"tier": -1
}
}
那么现在如何破解,改源码肯定不行,这样每次更新都要改,很麻烦,所以自建一下最舒服,这里几行代码这么简单就用Python写了,然后找个机(不能是本机)运行这个脚本.
import json
from flask import Flask
app = Flask(__name__)
@app.route('/license/deactivate/<name>/<key>')
def deactivate(name,key):
payload = {'message': 'Deactivated', 'success': True, 'license': {'key': key, 'valid': 'not_active', 'expiration': False, 'tier': -1}}
return json.dumps(payload)
@app.route('/license/activate/<name>/<key>')
def activate(name,key):
payload = {"message": "Activated.", "success": True, "license": {"key": key, "expiration": "June 2037", "valid": "valid", "tier": 5}}
return json.dumps(payload)
@app.route('/license/check/<name>/<key>/<path:url>/<random>')
def check(name,key,url,random):
payload = {'success': 'true', 'license': 'valid', 'key': key, 'download_id': 1, 'expires': '2037-06-01 23:59:59', 'price_id': 5, 'plan': 5}
return json.dumps(payload)
app.run(host='0.0.0.0', port=80)
最后改网站服务器的Host指向,以后更新还是照样更新,但是授权就永远不过期.
原版插件下载地址: