您的位置 首页 > 数码极客

安卓的ssr如何看到密码

前言

相信翻过墙的小伙伴都听说过 Shadowsocks 吧。我们使用Shadowsocks的时候,通常别人给的都是SS或者SSR的链接,这些链接的样子大概长这个样子

ss://YWVzLTI1Ni1nY206a2lyaXRvQDIxMC44OS4xODEuMTY3OjkxOTE=#123

ssr://aGs3LjI1Nmh0MTY4LmNvbTo1MDYzNDpvcmlnaW46YWVzLTI1Ni1jZmI6cGxhaW46TXpZeFZsQk9kR1Z6ZERFeU13Lz9vYmZzcGFyYW09JnByb3RvcGFyYW09JnJlbWFya3M9U0VzeCZncm91cD01NldlNVotZg

但是Shadowsocks MAC客户端却不能直接使用这些链接,只能手动输入server、port、密码、加密方法等参数,这让我很是烦躁。

MAC OSX SSR 客户端配置

最近开始学习Python,了解了基本的语法,正想练练手呢,于是想用Python写一个解析SSR链接,so,开始吧。

SS/SSR 链接分析

首先我们得知道SS/SSR链接由什么组成和经过怎样的编码变成了上述那个样子的。

ss链接

在 Base64 编码之前,ss链接的格式是这样的

ss://method:password@server:port

也就是说,一般我们见到的链接就是 ss://Base64 编码字段 ,其中 method:password@server:port 这部分被进行了 Base64 编码 。

那我们上面的的SS链接来说,我们只需要将

YWVzLTI1Ni1nY206a2lyaXRvQDIxMC44OS4xODEuMTY3OjkxOTE=#123

通过Base64解码,应该就能得到method:password@server:port的明文形式。

所以试试用Python Base64解码一下看看

ba('YWVzLTI1Ni1nY206a2lyaXRvQDIxMC44OS4xODEuMTY3OjkxOTE=#123')

得到结果

b'aes-256-gcm:kirito@210.89.181.167:9191'

可以看到结果和method:password@server:port形式是一样的,只不过解码出来的是二进制的而已。用utf-8编码一下就能得到字符串了。

ba('YWVzLTI1Ni1nY206a2lyaXRvQDIxMC44OS4xODEuMTY3OjkxOTE=#123').decode('utf-8')

然后就是把method、password、server和port分别解析出来就行了。

SSR链接

在 Base64 编码之前,ssr 链接的格式是这样的

ssr://server:port:protocol:method:obfs:password_base64/?params_base64

上面的链接的不同之处在于 password_base64 和 params_base64 ,顾名思义,password_base64 就是密码被 base64编码 后的字符串,而 params_base64 则是协议参数、混淆参数、备注及Group对应的参数值被 base64编码 后拼接而成的字符串。

即 params_base64 为这些字段的拼接

obfsparam=obfsparam_base64&protoparam=protoparam_base64&remarks=remarks_base64&group=group_base64

还是拿上面的SSR链接,用Base64解码看一下结果

ba('aGs3LjI1Nmh0MTY4LmNvbTo1MDYzNDpvcmlnaW46YWVzLTI1Ni1jZmI6cGxhaW46TXpZeFZsQk9kR1Z6ZERFeU13Lz9vYmZzcGFyYW09JnByb3RvcGFyYW09JnJlbWFya3M9U0VzeCZncm91cD01NldlNVotZg').decode('utf-8')

结果报错了,怎么回事,不按照套路出牌啊。不着急,先来看一下报的什么错

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "/usr/local/Cellar/python;, line 87, in b64decode

bina: Incorrect padding

看不懂,但是我可以猜出来,错误应该是Incorrect padding引起的,所以找Google大大问一下怎么回事。

Google大大说python Base64解码的时候,输入的编码字符串的长度必须是4的倍数,如果不是4的倍数需要再字符串后面补上=。

soga,原来是需要补=啊,拿我试试在后面加几个=试一试。在原来的字符串后加了2个=后,奇迹出现了

ba('aGs3LjI1Nmh0MTY4LmNvbTo1MDYzNDpvcmlnaW46YWVzLTI1Ni1jZmI6cGxhaW46TXpZeFZsQk9kR1Z6ZERFeU13Lz9vYmZzcGFyYW09JnByb3RvcGFyYW09JnJlbWFya3M9U0VzeCZncm91cD01NldlNVotZg==').decode('utf-8')

结果

';protoparam=&remarks=SEsx&group=56We5Z-f'

惊不惊喜?得到的结果和前面说的SSR链接的组成是一致的。接下来就是解析每个部分了,需要注意的是,password和params部分还需要用Base64解码一次。

http://MzYxVlBOdGVzdDEyMw/?obfsparam=&protoparam=&remarks=SEsx&group=56We5Z-f'

对照前面的SSR格式,/?之前的是password部分,后面的params部分。

password解码,注意需要在后面补加=

ba('MzYxVlBOdGVzdDEyMw==').decode('utf-8')

结果

'361VPNtest123'

params remarks 解码

ba('SEsx').decode('utf-8')

结果

'HK1'

params group 解码

ba('56We5Z-f').decode('utf-8')

这次又报错了,很无奈啊,怎么又报错了!

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "/usr/local/Cellar/python;, line 87, in b64decode

return bina(s)

bina: Incorrect padding

诶,这个错难道是让我在后面补=吗?我继续在后面补=,但是这次不好使了,加了无数个=都不管用了,怎么办?

无计可施啊,仔细观察一下,这次解码的字符串和原来的字符串好像有点不一样,这个字符串里面有-,这个明显是个特殊字符嘛,是不是这个-导致解码失败的呢?向Google大大问一下。果然Base64还有一种URL安全的编码,我们看看有不有URL安全的解码方法呢?果然存在

ba()

我用这个方法把原来的那个解码方法替换一下试试

ba('56We5Z-f').decode('utf-8')

果然,这次就能正确得到结果了,开心

'神域'

到此为止,所有的问题基本都解决了,接下来就是码砖了。这个就不说了。最后贴一下我的代码。

完整代码

运行一下试试,结果都能解析,不错。

请输入需要解析的ssr链接:

ssr://MTAzLjExNC4xNjMuMzg6NTYxMzpvcmlnaW46YWVzLTI1Ni1jZmI6cGxhaW46ZDNkM0xuZDFkM2RsWWk1amIyMC8_b2Jmc3BhcmFtPSZwcm90b3BhcmFtPSZyZW1hcmtzPVFFbFNRVTVUVTFJZ0xTQXhOMEYxWnlBdElERXdNeTR4TVRRdU1UWXpMak00Jmdyb3VwPVFFbFNRVTVUVTFJ

解析结果:

server: 103.114.163.38, port: 5613, 协议: origin, 加密方法: aes-256-cfb, 密码: www.wuwweb.com, 混淆: plain, 混淆参数: , 协议参数: , 备注: @IRANSSR - 17Aug - 103.114.163.38, 分组: @IRANSSR

请输入需要解析的ssr链接:

ssr://NTkuMTI1LjYxLjE4MDo4MDk3Om9yaWdpbjphZXMtMjU2LWNmYjpwbGFpbjpaVWxYTUVSdWF6WTVORFUwWlRadVUzZDFjM0IyT1VSdFV6SXdNWFJSTUVRLz9vYmZzcGFyYW09ZEhObE15NXRiUzVpYVc1bkxtNWxkQ3gwYzJVeUxtMXRMbUpwYm1jdWJtVjBMSFJ6WlRFdWJXMHVZbWx1Wnk1dVpYUXNZMnh2ZFdSbWNtOXVkQzVqYjIwc1kyeHZkV1JtYkdGeVpTNWpiMjBzWVdwaGVDNXRhV055YjNOdlpuUXVZMjl0TEhkM2R5NWlhVzVuTG1OdmJRJnByb3RvcGFyYW09JnJlbWFya3M9UUVsU1FVNVRVMUlnTFNBeE4wRjFaeUF0SURVNUxqRXlOUzQyTVM0eE9EQSZncm91cD1RRWxTUVU1VFUxSQ

解析结果:

server: 59.125.61.180, port: 8097, 协议: origin, 加密方法: aes-256-cfb, 密码: eIW0Dnk69454e6nSwuspv9DmS201tQ0D, 混淆: plain, 混淆参数: , 协议参数: , 备注: @IRANSSR - 17Aug - 59.125.61.180, 分组: @IRANSSR

请输入需要解析的ssr链接:

ssr://MjA3LjEyNi4xNjUuMTM4OjEyNjY2OmF1dGhfc2hhMV92NDpjaGFjaGEyMDpodHRwX3NpbXBsZTpkRXAyYzFCRC8_b2Jmc3BhcmFtPSZwcm90b3BhcmFtPSZyZW1hcmtzPVFFbFNRVTVUVTFJZ0xTQXhOMEYxWnlBdElESXdOeTR4TWpZdU1UWTFMakV6T0EmZ3JvdXA9UUVsU1FVNVRVMUk

解析结果:

server: 207.126.165.138, port: 12666, 协议: auth_sha1_v4, 加密方法: chacha20, 密码: tJvsPC, 混淆: http_simple, 混淆参数: , 协议参数: , 备注: @IRANSSR - 17Aug - 207.126.165.138, 分组: @IRANSSR

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“安卓的ssr如何看到密码,ssr如何使用,安卓”边界阅读