felix17 2022-03-02 04:26 采纳率: 100%
浏览 34
已结题

C# 如何解码SSR?

SSR:Y24wMS5lZmFuLm1lbjo4NzUxOm9yaWdpbjpyYzQtbWQ1Omh0dHBfcG9zdDpaV1poYm1OamVYVnUvP29iZnNwYXJhbT1Nak13TnpRdGRUa3phRTR5YVdGRk9TNWtiM2R1Ykc5aFpDNXRhV055YjNOdlpuUXVZMjl0JnByb3RvcGFyYW09JnJlbWFya3M9NmFhWjVyaXZNREUmZ3JvdXA9NmFXXzZhV3RZMlBrdXBFZ0xTQkg2SzZoNVlpUzc3eUlNVEF3TUVkQzc3eUo

使用Python脚本解码出来的结果:
脚本来自:https://github.com/luvvien/ss-ssr-url-parser/blob/master/ss_ssr_decode.py
{'ip': 'cn01.efan.men', 'port': '8751', 'protocol': 'origin', 'method': 'rc4-md5', 'obfs': 'http_post', 'password': 'efanccyun'}

但是使用Python的话,每一个使用者都要去配置运行环境,这样很麻烦。

所以我想请问一下是否可以使用C#进行解码?

我尝试使用以下代码进行解码:
string SSR = "Y24wMS5lZmFuLm1lbjo4NzUxOm9yaWdpbjpyYzQtbWQ1Omh0dHBfcG9zdDpaV1poYm1OamVYVnUvP29iZnNwYXJhbT1Nak13TnpRdGRUa3phRTR5YVdGRk9TNWtiM2R1Ykc5aFpDNXRhV055YjNOdlpuUXVZMjl0JnByb3RvcGFyYW09JnJlbWFya3M9NmFhWjVyaXZNREUmZ3JvdXA9NmFXXzZhV3RZMlBrdXBFZ0xTQkg2SzZoNVlpUzc3eUlNVEF3TUVkQzc3eUo";

byte[] newBytes = Convert.FromBase64String(SSR);

string orgStr = BitConverter.ToString(newBytes);

MessageBox.Show(orgStr);

但是无法成功运行,显示:The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.”

  • 写回答

2条回答 默认 最新

  • 码老头 2022-03-03 13:59
    关注

    楼上的解释是正确的,但算法似乎有点问题,以下是我修改后的示例:

    using System;
    using System.Text;
    
    namespace ConsoleApp4
    {
        class Program
        {
            static void Main(string[] args)
            {
                var ssr = "Y24wMS5lZmFuLm1lbjo4NzUxOm9yaWdpbjpyYzQtbWQ1Omh0dHBfcG9zdDpaV1poYm1OamVYVnUvP29iZnNwYXJhbT1Nak13TnpRdGRUa3phRTR5YVdGRk9TNWtiM2R1Ykc5aFpDNXRhV055YjNOdlpuUXVZMjl0JnByb3RvcGFyYW09JnJlbWFya3M9NmFhWjVyaXZNREUmZ3JvdXA9NmFXXzZhV3RZMlBrdXBFZ0xTQkg2SzZoNVlpUzc3eUlNVEF3TUVkQzc3eUo";
                Console.WriteLine(ssr.Length);
                ssr = ssr.Replace('-', '+').Replace('_', '/').PadRight(4*((ssr.Length+3)/4), '=');
                Console.WriteLine(ssr.Length);
                var newBytes = Convert.FromBase64String(ssr);
                var orgStr = Encoding.UTF8.GetString(newBytes);
                Console.WriteLine(orgStr);
            }
        }
    }
    

    运行结果:

    271
    272
    cn01.efan.men:8751:origin:rc4-md5:http_post:ZWZhbmNjeXVu/?obfsparam=MjMwNzQtdTkzaE4yaWFFOS5kb3dubG9hZC5taWNyb3NvZnQuY29t&protoparam=&remark
    s=6aaZ5rivMDE&group=6aW_6aWtY2PkupEgLSBH6K6h5YiS77yIMTAwMEdC77yJ
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 3月2日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效