实际上利用certutil.exe 把二进制文件(包括各种文件,exe可执行程序,图片,声音,mp3) 经过base64编码为文本,可以实现把这些文件嵌入到批处理代码中。

有什么用?:

举个例子,批处理经常需要依赖其它命令行工具实现自动化脚本,如果把这些工具转成文本嵌入到代码中,贴到网上就可以直接把可用的代码发出去了。不需要上传附件。

缺点:

base64编码后的文本比原文件长1/3,加上如果依赖的文件体积大,转换出来的文本内容会非常长。这个缺点影响了这个玩法的实用性。

xp 中没有certutil 这个工具,影响了适用范围。

如果依赖多个文件,需要用winrar 打包成exe 自解压文件,然后再编码。

certutil 是一个证书工具,功能挺丰富的,参数非常多,我这里只截取和base64编码相关的帮助信息:

C:\Users\Administrator>certutil.exe /?

动词:
-dump -- 转储配置信息或文件
-asn -- 分析 ASN.1 文件 -decodehex -- 解码十六进制编码的文件
-decode -- 解码 Base64 编码的文件
-encode -- 将文件编码为 Base64
。。。

用法如下:

我用一个小mp3文件示范:

第一步,先cmd中执行certutil -encode 编码文件:

E:\Game\New Heroes3\Mp3>certutil -encode hello.mp3 hi.bat

↑↑↑上面的命令行执行完后,得到一个文件hi.bat,用记事本能看到一大串,base64的字母。

第二步,用编辑器打开hi.bat,

不要修改文件其中的内容,只在文件头部写入你自己的批处理代码,用certutil -decode把文本还原成原文件,

如果你把以下代码存为xx.bat 并运行,应该可以听到这个MP3文件的声音。

@echo off
certutil -decode "%~f0" hello.mp3
start hello.mp3
exit /b 1 -----BEGIN CERTIFICATE-----
/+MgxAAUcQZgA0YYALhaemECCEECZNO7u7vGiIiI/7u7u6InxE57v+j+ifoBiz4g
cDgYlHMLv+oH35QEP5TqB8//8HDgnB/g+D5d/8oc8v+UB+GJR3BCJw+XD/8u8EEA
QAAUCgUCgUD/4yLECRWRPtJfjUAAoFAoFAe997lwJ35Twn+Wfemd/M3TCjiKAuH6
ThO2rqKA0MQ986vujKj97ehhiRAoIFAAKDH4Y9/0qdb/8utJp/nL/oh7w+go9H63
/8UVYYgEAna26X/FY2gtJAX/4yDEDheD7u4fxygDhs/mGECXznOHxh2850FA0Vv8
7ixf0cit7UuX60Mchn/Re+lUjdVexLlZE60OUz/sv///T/NVpaliArIZXXvXf/83
/dZNGrKRmK6v/RR2vceBkMxSptrrS/1hQf/jIsQLFZrm/j44RN4BJ/RRw02+AaEL
8jCEPgNCEL9hCEMHxCD/PNITPUVBka2KmaiI6dPT9Xrovun///R/dWS0UwMdwZAI
DB0FRhpLf5XUxR1TDBqz9aFKyBQAHIG2N388oIIJItv9L//jIMQQGALW5X5SBJoG
oR3PUwSaUaLjKf+bIFKv2lBp7vbtyjHO/1chDnf/hGVySE0JfRmIme9Gp79Eyf7f
////3kOc5zgY4QQQMCAEHO1dpPxI6wMZMo4aD7Hf6IEGASpG3Ab9SqUD/+MixAsW
c771/ihFVoM39Dv+YSOHCfKUpBMU+GSHyFEFNDdcTCIAF5poYP+AHNETRkvzIxn9
powA9f/2nd7HawcwQIxlR0d15e9X2r7///2pedetTijkDMRG3D4hCAm0ko/2JDkG
YFIG/+MgxA0XS7Lh9lHE+7Hh/5QMH/zAIBL/oPitv9Qqx23U44C3+p4ebuupxgjL
/kI//IFbp9f+5Fb/t/kQopWR2SzBArt/p/6F/9v+jFnJMqqims6KwxGVxqvJCbjt
1YzIAh2KOv5gViP/4yLEChRZavV+CkRCMiX/DgRf5wMCAW/3K/9Smf+iobznoqP+
qFMKa0H0AZ6osaDpsHwuBCQdsFnHTV/8YKEE8FFVjDzWe7/W1zMXvLKBlhse9inq
Ep/zEScFZExJVXsBIEwHQpPeyp3/4yDEFBQZLsgKaxKQiWVR2BEsnJNMDgwNzA7R
IkTWdhNYqgERERJPUTSXjTT2E2nNDMh589ZFkamh4Kig5H////auJk////9VNQHv
//3/FcFJ3lCEEhVP7kxQKjNfDDSQOgETipY2wP/jIsQeFECG1B5STIBwKhoMmToN
JHAU6sNhJ9VA0VGgJbEstsSq/+zG8RQ6w2Gjx14amdV7P/sm7S/vLU/p/e8HbbbZ
/mYX5Iugggyx1CxINsdGVQQ+hrasb9hJdI0CiocLm2H3yxCec//jIMQpFHDexB9Q
KADMBeZDO1aiHAv2rFOqxOrHvIgZ7xXezcxdWJjKbZdtrWaWbtiufbotrZPTSObk
6nZFkDFOrmJKRrt1p39vw9asCwqiptI09RkRU1zxUiGKqjB8b0IRq8NIes/4/+Mi
xDIXkXakAZhAAKk3F/n/c8SSIR0vfMyMIHuYyqtcRK//vsd1uenTpT2/7/P/3vRf
Z+vov91a1QD3SEsiYyVJQPFTaKlxcsfn86WVZZVMRjEyqjnRyYFYZpZbswZNjFWG
aOrQVQOu/+MgxC8fw2J8y5hAAGNVhmj/yQ9DkagKiZVdmn//GDyjxXVIVYZpVY//
/u7huJmRUYzSqwzSqx///+cqipC050k5TSzarDXKrw3/////axNSTWrWUcoKlitX
//4lEuXWCCAKAFCFBY7/4yLECxRq9kQXyBAAGirKKmrsx1Q1///KXK3Q3//lL///
/KX//0No/KXL//MbMbUpXl/5S0MZkMbKUu1DVLlKWhhQwGoKneJYKuEQcLfrO8Gv
8SpMQU1FMy45Ni4xqqqqqqqqqqqqqqr/4yDEFQAAA0gAAAAAqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==
-----END CERTIFICATE-----

原理:

观察可以知道,文件中 从"-----BEGIN CERTIFICATE-----" 之后的内容是base64编码,

而certutil 会忽略其它内容,这个标签才开始解码base64。

2016年8月31日 22:52:03 codegay

windows 2012 Server x64 测试可行。xp上不带certutil,听说2000以上的系统才带有这个命令工具。使用其它系统的同学,如果可以请测试反馈一下是否可行。

扩展阅读

《certutil - decode/encode BASE64/HEX strings.Print symbols by HEX code. 》 http://ss64.org/viewtopic.php?id=1562

用 certutil 实现 Hex2Bin 和 Base64 加解密 http://www.bathome.net/thread-31883-1-1.html

利用certutil.exe实现在批处理(bat)中嵌入可执行文件或者各种媒体、图片之类二进制文件的简单方法!的更多相关文章

  1. 利用CSS的@font-face属性 在网页中嵌入字体

    字体使用是网页设计中不可或缺的一部分.网页是文字的载体,我们希望在网页中使用某一特定字体,但是该字体并非主流操作系统的内置字体,这样用户在浏览页面的时候就有可能看不到真实的设计. 美工设计师最常做的办 ...

  2. 批处理(.bat)中使用相对路径

    批处理中使用相对路径,只需要用cd /d %~dp0代替绝对路径就可以了. ->cd /d ->%~dp0 %0为当前批处理文件 %~d0 是指批处理所在的盘符 %~dp0 是指批处理所在 ...

  3. 利用certutil.exe 传文件

    certutill.exe 在Windows 7 及其之后的所有Windows Server和Workstation版本均预装 1. Encode file: certutil -encode kk. ...

  4. 关于web开发中订单自动超时和自动收货的简单方法(window server)

    最近做一个订单自动超时和自动收货的功能,因为以前是用的mysql 存储过程和定时器来完成,这次的业务逻辑相对复杂用以前的方式就不太合适,本来是准备使用定时执行php脚本来实现的,后来发现业务逻辑中使用 ...

  5. 解决Android Studio中Refreshing gradle project时间过长的最简单方法

    Refreshing gradle project往往出现在Gradle出现更新,需要从墙外的网重新拖下来的前提下.具体可以查看以下文件:/path/to/project/gradle/wrapper ...

  6. win7中资源管理器不能显示图片预览的解决方法

    在用xp的时候,在资源管理器里面预览图片文件是在普通不过的事情了.换到win7之后,图片文件一直不能预览,只是显示图标还挺烦的.肯定是哪里设置的不对,下午闲来无事,找到是哪里的问题了. 如果你也遇到相 ...

  7. CertUtil.exe被利用来下载恶意软件

    1.前言 经过国外文章信息,CertUtil.exe下载恶意软件的样本. 2.实现原理 Windows有一个名为CertUtil的内置程序,可用于在Windows中管理证书.使用此程序可以在Windo ...

  8. Windows 批处理(bat)语法大全

    本文是学习bat整理的笔记,由于内容较多,建议结合右侧文章大纲查看. %~dp0[获取当前路径] %~dp0 “d”为Drive的缩写,即为驱动器,磁盘.“p”为Path缩写,即为路径,目录 cd % ...

  9. windows批处理(.bat)

    转自http://www.cnblogs.com/shiney/archive/2011/07/04/2097236.html 本文在运行中有一些小小的问题,我修改了一下,将会在稳重标出 批处理文件是 ...

随机推荐

  1. Java类中中文问题

    一个奇怪问题 java类中要保存一个xml文件到数据库,2种传值方式其中1种不知何故会最终导致解析xml时报错. xml文件内容由StringBuffer定义,其中一段内容如下: sb.append( ...

  2. JAVA开发错误总结(仅记录遇到的错误---后续不断更新......)

    =======华丽分割线(工具总结)===================== 1:Maven项目中junit测试找不到主类的问题 Class not found com.test.utils.tes ...

  3. Yii2使用教程

    安装 中文文档:http://www.yiichina.com/doc/guide/2.0/start-installation 1,安装 这里我直接下载归档文件,压缩包安装了.composer各种麻 ...

  4. ActiveReport 同一单元格内图片跟文字按条件显示

    ActiveReports支持提供Image控件来显示图片素材,Image控件的值可以为图像的二进制流,图像路径,或url等:而在很多情况下,图片是签名扫描文件,并不会一直有值.如果图片的值为空,则显 ...

  5. 个人学习随笔(psi-blast随笔)

    psi-blast学习 最近自己学习了一些新工具,最近在学习关于蛋白质相互作用位点的预测,在学习中,接触了几个新的工具,下面说说自己正在学习的psi-blast. 首先要说我用psi-blast用来做 ...

  6. TensorFlow 在android上的Demo(1)

    转载时请注明出处: 修雨轩陈 系统环境说明: ------------------------------------ 操作系统 : ubunt 14.03 _ x86_64 操作系统 内存: 8GB ...

  7. JAVA字符串05之课程问题解决

    (一)古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:请编写一个程序,使用上述算法加密或解密用户输入的英文字串. 1.设计思想:首先选择是加密字符串还是解密字符串,两种算法相似.如果要加密字符串 ...

  8. file_put_contents保存数据,

    file_put_contents("sui.txt", var_export($now_member,TRUE),FILE_APPEND); 可以保存数组,方便调试

  9. [整]磁盘 I/O 性能监控指标和调优方法

    在介绍磁盘 I/O 监控命令前,我们需要了解磁盘 I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能. 磁盘 I/O 性能监控的指标主要包括: 指标 1:每秒 I/O 数(IOPS 或 t ...

  10. Solr环境搭建过程中遇到的问题

    Solr下载地址:http://www.apache.org/dyn/closer.lua/lucene/solr/6.3.0 Solr搭建步骤转自:http://blog.csdn.net/wbcg ...