PHP源码

目前使用比较多的一种。

新建apx.php,写入以下代码:

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
<?php
if ($argc < 4) {
    echo “Usage: php ” . $argv[0] . ” mac expireYear bandwidth, Bandwidth=0 means unlimited.\nExample: php ” . $argv[0] . ” 04:a0:67:a1:05:0b 2999 0 \n”;
    die;
}
$lic_tpl = ‘b226bc274e220f53e22d863a1ec913dea6961bd046d034e88818e68d260d781345298b8d3b11e00b5061045667c12af4982992ab86ee7a4f84c1ef83020a1adc[serial]c81cb3b404eab69f59993fbf62bd373a[date]0663cea3f326[bw]a366445113ecf74205e40af32cb30c5342cc5ebd981f7e02a9326f3823e8304e4d20f942f20bdfbeaeeff843′;
// month/date base: FA43 now 0663 => 1231 we do not change it
$date_base = 16245;
$bw_base = 3812869942;
$mac = $argv[1];
$date = intval($argv[2]);
$bw = intval($argv[3]);
$mac = explode(‘:’, $mac);
$mac_res = array();
for ($i = 0; $i < 16; $i++) {
    if ($i < 6) {
        $mac_res[$i] = intval($mac[$i], 16) + $i;
    } else {
        $mac_res[$i] = $mac_res[$i % 6] + $i;
    }
}
$serial = ”;
for ($i = 0; $i < 8; $i++) {
    $serial .= sprintf(‘%02X’, ($mac_res[$i] + $mac_res[$i + 8]) % 256);
}
echo ‘SerialNo:’ . $serial . ‘
‘;
$lic = ”;
$rd = array(162, 15, 239, 202, 57, 14, 45, 164, 147, 232, 120, 90, 117, 15, 239, 232);
for ($i = 0; $i < 16; $i++) {
    $lic .= sprintf(‘%02x’, (ord($serial[$i]) + $rd[$i]) % 256);
}
echo ‘Lic:’ . $lic . ‘
‘;
$date_lic = unpack(‘H*’, pack(‘v’, $date_base + $date));
$date_lic = $date_lic[1];
$bw_lic = unpack(‘H*’, pack(‘V’, $bw_base + $bw));
$bw_lic = $bw_lic[1];
$lic = str_replace(‘[serial]‘, $lic, $lic_tpl);
$lic = str_replace(‘[date]‘, $date_lic, $lic);
$lic = str_replace(‘[bw]‘, $bw_lic, $lic);
@file_put_contents(“./apx-” . $date . “1231.lic”, pack(‘H*’, $lic));

使用ifconfig命令查看当前机器MAC地址。

1
php apx.php mac expireYear bandwidth

例如:php apx.php 02:42:ac:11:46:9e 2999 0
bandwidth=0代表无限制,执行后将会在当前目录生成文件名为apx-29991231.lic的授权文件。
同时,请记录下执行后生成的SerialNo。

 

NODEJS源码

开源项目:https://github.com/Srar/ServerSpeeder-Keygen

首先你需要安装NodeJS!!

在您已经安装nodejs(v4.0.0+)环境的情况下

1
2
3
4
git clone https://github.com/Srar/ServerSpeeder-AutoInstaller.git
cd ./ServerSpeeder-AutoInstaller/ServerSpeederCreckServer
npm install
node app.js

程序默认监听4000端口,您可以访问特定路由来生成授权文件:

1
http://127.0.0.1:4000/regenspeeder/lic?bandWidth=1G&mac=00:00:00:00:00:00&expires=2023-03-03

上述例子会为00:00:00:00:00:00MAC地址网卡生成一个速度上限1Gpbs和到期时间为2023-03-03的授权文件

锐速心跳包访问地址, 您可以通过配置Nginx与Hosts来强制指定访问:

  • my.serverspeeder.com
  • www.serverspeeder.com
  • dl.serverspeeder.com

 

1
2
3
4
5
6
7
8
9
10
server {
    listen          80;
    server_name     my.serverspeeder.com www.serverspeeder.com dl.serverspeeder.com;
    charset utf8;
    location / {
        proxy_pass http://127.0.0.1:4000/;
    }
}

 

 

 

JAVA源码

目前该代码已经不再更新。部署依赖比较多。不推荐。

开源项目:https://github.com/ruterfu/ServerSpeeder-AutoInstaller

需要java环境,且有tomcat。项目为java servlet项目,Eclipse Project。

PS : 如果是搞java的这些应该都懂。

servspdInstaller.sh 为一键安装(无需修改mac地址)

增加了tomcat直接跑的war包,配置文件里面配置

注意事项:

1
2
1.写入hosts,将dl.serverspeeder.com重定向到shell顶部填写的HOSTADDR(这里就靠自己部署了,反正就是返回一个code:200,让ss认为lic是正常的,部署好不要忘了在hosts里面修改dl.serverspeeder.com,我默认写[hostIP]了)

注意事项: 需要把项目放在Tomcat-webapps-ROOT来运行,因为软件请求的时候地址是http://***.com/ac.do,或者通过nginx代理也可以

接口使用提示:

1
2
3
4
5
1.lic生成,100M带宽默认: http://ip.com[:port]/regenspeeder/lic?mac=00:00:00:00:00:00
2.lic生成指定日期: http://ip.com[:port]/regenspeeder/lic?mac=00:00:00:00:00:00&amp;expires=2035-12-31
3.lic生成指定带宽: http://ip.com[:port]/regenspeeder/lic?mac=00:00:00:00:00:00&amp;bandwidth=100M
4.生成日期参数和带宽参数可同时使用(废话…),带宽不填默认100M

使用方法:

1
2
3
4
5
6
7
8
9
1.在服务器上安装tomcat ubuntu为apt-get install tomcat7
2.将仓库里srcANDwar里的servspd.war放到tomcat里面webapps包中(默认tomcat7的webapps目录是/var/lib/tomcat7/webapps),最好重命名成ROOT,这样网址中不需要加项目名,tomcat端口最好为80,也可以使用nginx进行反向代理,
3.测试使用:ROOT http://您的服务器ip[:服务器端口]/
非ROOT: http://您的服务器IP[:服务器端口]/servspd/
4.如果显示一个 Hello World 字样就可以了
5.打开servspdInstaller.sh 修改HOST=http://ip.com[:port]为自己服务器ip和项目名 例如HOST=http://10.1.1.1:8080/servspd
6.额外:如果tomcat是80端口,且项目已经重命名成ROOT,则打开servspdInstaller.sh 修改HOSTADDR=[hostIP]为自己服务器ip 例如HOSTADDR=10.1.1.1
7.将servspdInstaller.sh传到服务器上,输入 bash servspdInstaller.sh 即可进行自动安装

附加内核更改方法(Ubuntu) 这里用 3.13.0-29-generic 举例,其他服务器自行摸索:

1
2
3
4
5
6
7
8
9
1.首先,安装需要的内核: sudo apt-get install linux-image-extra-3.13.0-29-generic
2.输入 sudo uname -r,记住当前的内核,假设是 3.13.0-74-generic
3.输入 sudo apt-get purge linux-image-3.13.0-74-generic linux-image-extra-3.13.0-74-generic
4.因为上面命令执行后会删除当前内核然后会安装新内核,假设安装了3.xx.xx内核,这时可能不知道,用以下方式查找,输入sudo apt-get purge linux-image-3 然后按2次tab后会出现以下内容linux-image-3.13.0-29-generic  linux-image-extra-3.13.0-29-generic linux-image-3.XX.X-XX-generic linux-image-extra-XX.X-XX-generic,如果出现了4个,则记住xx的数字,并继续输入完整,最后完整命令是:sudo apt-get purge linux-image-3.XX.X-XX-generic linux-image-extra-3.XX.X-XX-generic,如果只出现2个,则跳过
5.sudo update-grub更新内核
6.sudo reboot 重启服务器
7.重启之后 再次使用uname -r则看到使用了3.13.0-29-generic内核,直接下载servspdInstaller.sh并配置好里面的地址,上传到到服务器,然后sudo bash servspdInstaller.sh进行安装
8.具体参考 http://bbs.tcp.hk/thread-84-1-1.html

更改记录:

1
2
3
4
5
1.2016年02月29日23:02, 修正输入时间会导致错乱问题,原来版本当输入2100年时,会生成23xx的文件
2.2016年03月01日16:40, 取消kernel内核单独提供,一并放入网页中,这样无需进行nginx部署
3.2016年03月02日13:41, 不再更新
4.2016年03月11日12:22, 反正有那么多了,就直接改名ServerSpeeder-AutoInstaller.

需要自行部署eclipse项目,来重定向ss的定时lic检测,否则会因为无法更新lic而导致ss加速无效

 

Python源码

这个是最开始出现的计算序列号的方法。比较原始。可以学习了解,不推荐使用。

根据MAC生成序列号:

1
2
MAC=’MAC地址’.replace(‘:’,”)
print ‘%02X%02X%02X%02X%02X%02X%02X%02X’%((int(MAC[0:2],16)+int(MAC[4:6],16)+10)%256,(int(MAC[2:4],16)+int(MAC[6:8],16)+13)%256,(int(MAC[4:6],16)+int(MAC[8:10],16)+16)%256,(int(MAC[6:8],16)+int(MAC[10:12],16)+19)%256,(int(MAC[8:10],16)+int(MAC[0:2],16)+16)%256,(int(MAC[10:12],16)+int(MAC[2:4],16)+19)%256,(int(MAC[0:2],16)+int(MAC[4:6],16)+22)%256,(int(MAC[2:4],16)+int(MAC[6:8],16)+26)%256)

 

根据序列号逆推MAC地址,因为生成序列号时做了取模,故可能反推失败:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
S=’序列号’
m4=(int(S[4:6],16)-int(S[0:2],16)+int(S[8:10],16)-22)/2
m2=int(S[4:6],16)-m4-16
m0=int(S[0:2],16)-m2-10
m5=(int(S[6:8],16)-int(S[2:4],16)+int(S[10:12],16)-25)/2
m1=int(S[10:12],16)-m5-19
m3=int(S[2:4],16)-m1-13
if (m0 >= 0 and m1 >= 0 and m2 >= 0 and m3 >= 0 and m4 >= 0 and m5 >= 0):
        print ‘MAC地址为%02x:%02x:%02x:%02x:%02x:%02x’%(m0,m1,m2,m3,m4,m5)
else:
        MAC0 = ‘%02x:%02x:%02x:%02x:%02x:%02x’%(m0%256,m1%256,m2%256,m3%256,m4%256,m5%256)
        MAC = MAC0.replace(‘:’,”)
        S2 = ‘%02X%02X%02X%02X%02X%02X%02X%02X’%((int(MAC[0:2],16)+int(MAC[4:6],16)+10)%256,(int(MAC[2:4],16)+int(MAC[6:8],16)+13)%256,(int(MAC[4:6],16)+int(MAC[8:10],16)+16)%256,(int(MAC[6:8],16)+int(MAC[10:12],16)+19)%256,(int(MAC[8:10],16)+int(MAC[0:2],16)+16)%256,(int(MAC[10:12],16)+int(MAC[2:4],16)+19)%256,(int(MAC[0:2],16)+int(MAC[4:6],16)+22)%256,(int(MAC[2:4],16)+int(MAC[6:8],16)+26)%256)
        if (S.lower() == S2.lower()):
                print ‘MAC地址为’+MAC0
        else:
                print ‘反推失败’

 

 

然后访问: http://51.ruyo.net/p/1015.html

下载完整的安装包,替换Config即可。

等有时间更新完整的内容。

 

 

参考文献:

http://lpisme.azurewebsites.net/archives/801/

http://www.hostloc.com/thread-305480-1-1.html

 

https://51.ruyo.net/2820.html