예제 #1
0
        public static void VerifySignature(params string[] files)
        {
#if !DEBUG // && false
            try
            {
                var key = new PublicKey(new Oid("1.2.840.113549.1.1.1"), new AsnEncodedData(new byte[] { 05, 00 }), new AsnEncodedData(Properties.Resources.sakura_sign));
                using (var rsa = (RSACryptoServiceProvider)key.Key)
                {
                    var failure = files.Where(f => !File.Exists(f + ".sig") || !rsa.VerifyData(File.ReadAllBytes(f), "SHA256", File.ReadAllBytes(f + ".sig"))).ToList();
                    if (failure.Count == 0)
                    {
                        return;
                    }
                    NTAPI.MessageBox(0, "@@@@@@@@@@@@@@@@@@\n" +
                                     "         !!!  警告: 文件签名验证失败  !!!\n" +
                                     "@@@@@@@@@@@@@@@@@@\n\n" +
                                     "下列文件未通过数字签名校验:\n" + string.Join("\n", failure) + "\n\n" +
                                     "这些文件可能已损坏或被纂改, 这意味着您的电脑可能已经被病毒感染, 请立即进行杀毒并重新下载启动器\n\n" +
                                     "如果您准备自己编译启动器或使用其他版本的 frpc, 请自行修改 SakuraLibrary\\Utils.cs 或使用 Debug 构建来禁用签名验证", "Error", 0x10);
                }
            }
            catch (Exception e)
            {
                NTAPI.MessageBox(0, "@@@@@@@@@@@@@@@@@@\n" +
                                 "         !!!  警告: 文件签名验证失败  !!!\n" +
                                 "@@@@@@@@@@@@@@@@@@\n" +
                                 "出现内部错误, 请截图此报错并联系管理员\n\n" + e, "Error", 0x10);
            }
            Environment.Exit(0);
#endif
        }
예제 #2
0
        public static void VerifySignature(params string[] files)
        {
#if !DEBUG // && false
            var failure = files.Where(f => !WinTrust.VerifyFile(f)).ToArray();
            if (failure.Length == 0)
            {
                return;
            }
            NTAPI.MessageBox(0, "@@@@@@@@@@@@@@@@@@\n" +
                             "         !!!  警告: 文件签名验证失败  !!!\n" +
                             "@@@@@@@@@@@@@@@@@@\n\n" +
                             "下列文件未通过数字签名校验:\n" + string.Join("\n", failure) + "\n\n" +
                             "这些文件可能已损坏或被纂改, 这意味着您的电脑可能已经被病毒感染, 请立即进行杀毒并重新下载启动器\n\n" +
                             "如果您准备自己编译启动器或使用其他版本的 frpc, 请自行修改 SakuraLibrary\\Utils.cs 或使用 Debug 构建来禁用签名验证", "Error", 0x10);
            Environment.Exit(0);
#endif
        }
예제 #3
0
        public static void VerifySignature(params string[] files)
        {
            // 如果您准备自己编译启动器或使用其他版本的 frpc
            // 请自行修改此部分代码或使用 Debug 构建来禁用签名验证

#if !DEBUG // && false
            try
            {
                var failure = files.Where(f => !File.Exists(f)).ToList();
                if (failure.Count != 0)
                {
                    NTAPI.MessageBox(0, "@@@@@@@@@@@@@@@@@@\n" +
                                     "         !!!  错误: 启动器文件损坏  !!!\n" +
                                     "@@@@@@@@@@@@@@@@@@\n\n" +
                                     "下列文件不存在:\n" + string.Join("\n", failure) + "\n\n" +
                                     "请重新安装启动器\n如果重装后还看到此提示,请检查杀毒软件是否删除了启动器文件", "错误", 0x10);
                    Environment.Exit(1);
                }

                var key = new PublicKey(new Oid("1.2.840.113549.1.1.1"), new AsnEncodedData(new byte[] { 05, 00 }), new AsnEncodedData(Properties.Resources.sakura_sign));
                using (var rsa = (RSACryptoServiceProvider)key.Key)
                {
                    failure = files.Where(f => !File.Exists(f + ".sig") || !rsa.VerifyData(File.ReadAllBytes(f), "SHA256", File.ReadAllBytes(f + ".sig"))).ToList();
                    if (failure.Count == 0)
                    {
                        return;
                    }
                    NTAPI.MessageBox(0, "@@@@@@@@@@@@@@@@@@\n" +
                                     "         !!!  警告: 文件签名验证失败  !!!\n" +
                                     "@@@@@@@@@@@@@@@@@@\n\n" +
                                     "下列文件未通过数字签名校验:\n" + string.Join("\n", failure) + "\n\n" +
                                     "这些文件可能已损坏或被纂改, 这意味着您的电脑可能已经被病毒感染\n\n" +
                                     "请立即进行全盘杀毒并重新安装启动器", "错误", 0x10);
                }
            }
            catch (Exception e)
            {
                NTAPI.MessageBox(0, "@@@@@@@@@@@@@@@@@@\n" +
                                 "         !!!  警告: 文件签名验证失败  !!!\n" +
                                 "@@@@@@@@@@@@@@@@@@\n" +
                                 "出现内部错误, 请截图此报错并联系管理员\n\n" + e, "错误", 0x10);
            }
            Environment.Exit(1);
#endif
        }