示例#1
0
        static void TestP7s(byte[] PKCS7)
        {
            var signedData = new SignedCms();

            signedData.Decode(PKCS7);
            Console.WriteLine(signedData.Certificates.Count);
            int i = 0;

            foreach (var certificate in signedData.Certificates)
            {
                i++;

                X509CertificateParser x509CertificateParser = new X509CertificateParser();
                X509Certificate       x509Certificate       = x509CertificateParser.ReadCertificate(certificate.GetRawCertData());
                RsaKeyParameters      rsaKeyParameters      = x509Certificate.GetPublicKey() as RsaKeyParameters;
                if (RocaTest.IsVulnerable(rsaKeyParameters))
                {
                    Console.WriteLine("Cetificate #" + i + " is vulnerable. Cert Hash: " + certificate.GetCertHashString());
                }
                else
                {
                    Console.WriteLine("Cetificate #" + i + " is NOT vulnerable");
                }
            }
        }
示例#2
0
文件: Program.cs 项目: l1kw1d/roca
        static bool TestCert(string pemCert)
        {
            X509CertificateParser x509CertificateParser = new X509CertificateParser();
            X509Certificate       x509Certificate       = x509CertificateParser.ReadCertificate(Encoding.ASCII.GetBytes(pemCert));
            RsaKeyParameters      rsaKeyParameters      = x509Certificate.GetPublicKey() as RsaKeyParameters;

            return(RocaTest.IsVulnerable(rsaKeyParameters));
        }
示例#3
0
        static bool TestCert(string certFile)
        {
            X509CertificateParser x509CertificateParser = new X509CertificateParser();
            X509Certificate       x509Certificate       = x509CertificateParser.ReadCertificate(File.ReadAllBytes(certFile));
            RsaKeyParameters      rsaKeyParameters      = x509Certificate.GetPublicKey() as RsaKeyParameters;

            return(RocaTest.IsVulnerable(rsaKeyParameters));
        }
示例#4
0
文件: Program.cs 项目: 0xBADCA7/roca
        static void TestPDF(string path)
        {
            Console.WriteLine("processing PDF");
            AcroFields    acroFields = new PdfReader(path).AcroFields;
            List <string> names      = acroFields.GetSignatureNames();

            foreach (var name in names)
            {
                try {
                    Console.WriteLine(name);
                    PdfDictionary dict = acroFields.GetSignatureDictionary(name);

                    PdfString contents = (PdfString)PdfReader.GetPdfObject(dict.Get(PdfName.CONTENTS));


                    byte[] PKCS7      = contents.GetOriginalBytes();
                    var    signedData = new SignedCms();
                    signedData.Decode(PKCS7);
                    Console.WriteLine(signedData.Certificates.Count);
                    int i = 0;
                    foreach (var certificate in signedData.Certificates)
                    {
                        i++;

                        X509CertificateParser x509CertificateParser = new X509CertificateParser();
                        X509Certificate       x509Certificate       = x509CertificateParser.ReadCertificate(certificate.GetRawCertData());
                        RsaKeyParameters      rsaKeyParameters      = x509Certificate.GetPublicKey() as RsaKeyParameters;
                        if (RocaTest.IsVulnerable(rsaKeyParameters))
                        {
                            Console.WriteLine("Cetificate #" + i + " is vulnerable. Cert Hash: " + certificate.GetCertHashString());
                        }
                        else
                        {
                            Console.WriteLine("Cetificate #" + i + " is NOT vulnerable");
                        }
                    }
                } catch (Exception exc) {
                    Console.WriteLine(exc.Message);
                }
            }
        }