Code Monkey home page Code Monkey logo

chinawareblock's People

Contributors

sharoue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chinawareblock's Issues

随手写了一个获取证书的,简单试了下能用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using System.Security.Cryptography;

namespace GetCertFromFolder
{
public class Program
{
public static readonly string invalidChar = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());

    public static void Main(string[] args)
    {
        string baseFolder = @"!!!SOMEPATH";
        foreach (FileInfo fileInfo in new DirectoryInfo(baseFolder).EnumerateFiles("*.exe"))
        {
            try
            {
                X509Certificate cert = X509Certificate.CreateFromSignedFile(fileInfo.FullName);
                string certInBase64 = ExportToPEM(cert);

                string hash = cert.GetCertHashString();
                string issueTo = cert.Subject.Split(new string[] { ", " }, StringSplitOptions.None).FirstOrDefault(x => x.StartsWith("CN=")).Substring(3);
                string validTo = DateTime.Parse(cert.GetExpirationDateString()).ToString("yyyy-MM-dd");
                string certFileName = hash + "-" + issueTo + "-" + validTo + ".cer";

                File.WriteAllText(Path.Combine(baseFolder, removeInvalidCharInPath(certFileName)), certInBase64);
            }
            catch (CryptographicException)
            {
                continue;
            }
        }
    }

    private static string removeInvalidCharInPath(string path)
    {
        foreach (char c in invalidChar)
        {
            path = path.Replace(c.ToString(), "");
        }
        return path;
    }

    private static string ExportToPEM(X509Certificate cert)
    {
        StringBuilder builder = new StringBuilder();

        builder.AppendLine("-----BEGIN CERTIFICATE-----");
        builder.AppendLine(Convert.ToBase64String(cert.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks));
        builder.AppendLine("-----END CERTIFICATE-----");

        return builder.ToString();
    }

}

}

编码问题: GBK 在某些系统下乱码

因为某些原因,我的 win10 默认不含中文。在运行 bat 文件时候碰到了乱码。
所以能否将所有文件用英文命名,或者将所有文件以 utf8 编码?

部分软件无法导出所有证书

Hello Sharoue,

我尝试用证书导出工具导出时好像无法导出所有证书,有些软件(2345看图王/搜狗浏览器)只能导出一个证书(sha1),还有一个sha256的不会被导出,只有两个都拉黑才能禁止安装,请问这个工具的bug还是我不会操作。。。
file

方法介绍:手动提取程序的证书/签名

如何提取程序的全部证书/签名(包括sha1、sha256等)

英文原文:How to extract a digital signature/certificate from a signed software file/package

  1. 鼠标右击任意一个exe、msi或dll文件,选择“属性”。
  2. 如果文件经过数字签名,将会出现一个标题为“数字签名”的选项卡,选择该选项卡。
  3. 在“签名列表”中可以看到一个或多个签名文件,通常是 sha1 或 sha 256 。选中其中一个。
  4. 在步骤 3 中做出选择后,单击“详细信息”按钮。
  5. 在新弹出的“数字签名详细信息”页面上,选择“查看证书”按钮。
  6. 在新弹出的证书页面中,选择“详细信息”选项卡,然后点击“复制到文件”按钮。
  7. 在新弹出的证书导出向导中,单击第一页上的“下一步”按钮。
  8. 在“导出文件格式”页面上,选择 DER 或 Base-64 编码的 x.509 (.CER) 选项,然后按“下一步”按钮。
  9. 在要导出的文件页面上,使用“浏览”按钮设置证书文件的放置位置以及文件名。
  10. 单击“下一步”按钮。
  11. 在完成证书导出向导页面,点击“完成”按钮,出现弹出框后点击“确定”按钮。证书文件导出完成。

2016 LTSB 问题

全家桶一键处理,无限循环 CMD 闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪闪

bug

对百度浏览器无效,提取工具导出的证书也拉黑后也没用。

批量删除指定证书的脚本

#7

感谢作者大大,脚本很好用。
我写了一个和一键拉黑作用相反的Powershell脚本,供 @sharoue 参考。
作用是一键将当前目录(及子目录)中的*.cer证书从Disallowed中删除(如果有)。

水平有限,如有问题还请见谅

# Self-Elevating script
If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
{
  # Relaunch as an elevated process:
  Start-Process powershell.exe "-File",('"{0}"' -f $MyInvocation.MyCommand.Path) -Verb RunAs
  exit
}

# For each cert in the folder, delete it from the disallowed store
$certList = Get-ChildItem -Recurse $PSScriptRoot -Filter *.cer | Where { ! $_.PSIsContainer } | Select Name,FullName,Length
foreach ($cert in $certList) 
    {
        $certPrint = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
        $certPrint.Import($cert.FullName)
	certutil -user -delstore "Disallowed" $certPrint.Thumbprint
    }

参考资料:

权限提升:https://ss64.com/ps/syntax-elevate.html

证书信息获取:https://social.technet.microsoft.com/Forums/en-US/969bfa58-a479-4b07-8c3b-4e57121351da/powershell-pulling-thumbprint-from-certificate-cer?forum=ITCG

一键拉黑好像还是可以安装运行?

我在本地虚拟机上试了下,单纯一键拉黑到不受信任的证书里面,这些安装程序还是可以运行的,需要添加到本地组策略 - Windows设置 - 软件限制策略里面进行封禁才能强力阻止其运行。

有没有考虑下拉黑各种软件站的P2P下载器的证书?

众所周知,由于百度的原因,不少人下载一些东西会跑到各种下载站上面去,使用那个P2P高速下载器,进而带来一堆奇怪的东西。所以,有没有考虑过拉黑这些下载器的证书呢?让他们根本无法运行起来。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.