实际上利用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
IkTWdhNYqgERERJPUTSXjTT2E2nNDMh589ZFkamh4Kig5HauJk9VNQHv
//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

转载于:https://www.cnblogs.com/gayhub/p/5832836.html

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

  1. c++imread 函数_OpenCV中C++函数imread读取图片的问题及解决方法

    今天在用OpenCV实验Image Pyramid的时候发现一个奇怪的问题,就是利用C++函数imread读取图片的时候返回的结果总是空,而利用C函数cvLoadImage时却能读取到图像.代码如下: ...

  2. 批处理bat中的脚本

    设置变量使用set var=value,注意赋值前后不能有空格,获取变量使用%var% setlocal设置临时环境变量,不会影响环境变量,必须与endlocal使用 %~dp0表示当前脚本对应的目录 ...

  3. vscode中嵌入cppcheck进行静态检查,包含插件使用方法

    1 vscode下载插件cpp-check-lint 如图: 下载好之后按ctrl+shift+p打开用户设置(user setting),在设置中追加加入以下代码: /* cppcheck配置 */ ...

  4. Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)

    需要源码和图片集请点赞关注收藏后评论区留言~~~ 一.图像解码器ImageDecoder 早期的Android只支持3种图像格式,分别是JPEG,PNG,GIF 虽然这三类图片都能在ImageView ...

  5. Qt 中使用UDP传送大图片(文件)的方法

    我们知道传送文件一般使用的是TCP,要是需要使用UDP应该怎么做呢? 对于发端,首先应该在点击事件中得到我们需要发送的文件名,这里是fileName.得到名字之后,新建一个QFile类,来存自己的QF ...

  6. 批处理 bat cmd 命令大全

    net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...

  7. Windows批处理BAT脚本

    批处理定义:顾名思义,就是将一系列命令按一定的顺序集合为一个可执行的文本文件,拓展名一般为BAT. 小知识: 1. 可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程. 2. Win+R ...

  8. 举个栗子!Tableau 技巧(113):在工作表中嵌入可切换网页

    我们知道,在 Tableau 仪表板中可以嵌入网页内容.但有用户提出了新的需求:我想在仪表板中嵌入多个网页内容,并且可以实现不同网页内容的切换. 在企业实际应用中,可能需要切换查看存货.供货和签约等多 ...

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

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

最新文章

  1. Atitit onvif协议获取rtsp地址播放java语言 attilx总结
  2. BeanUtils.copyProperties VS PropertyUtils.copyProperties
  3. ros知识:关于catkin_init_workspace不能执行的错误
  4. 产品新人的10字生存手册
  5. 微博遭鹿晗恋情暴击瘫痪,如何快速提高系统性能?
  6. 千年鸿蒙 盼尔来兮是什么意思,鸿蒙是什么意思_鸿蒙的意思和出处_我爱历史网...
  7. 英语答题测试的软件叫什么,英语做题软件哪个好 有答案解析的英语做题软件分享...
  8. xbox360无线手柄接收器驱动_八位堂USB 无线接收器让手柄不闲置,无线畅玩各平台游戏...
  9. sql如何取前几行_10 个不为人知的 SQL 技巧
  10. C++提高部分_C++普通函数与函数模板的区别---C++语言工作笔记084
  11. 移动端滚动穿透的6种解决方案
  12. Julia: ...的作用,有意思!
  13. nyist 488 素数环
  14. 大数据hadoop入门 总结图
  15. 电子设计大赛-运算放大器
  16. 简单好用的ImageAI编程库!选择最适合你的!
  17. Playwright-新一代自动化工具 > 酱紫写爬虫?
  18. 什么是递归查询,迭代查询?
  19. kafka集群搭建+权限认证(SASL/SCRAM)+整合springboot
  20. 单元测试覆盖分析指标-翻译中

热门文章

  1. 没有了SA密码,无法Windows集成身份登录,DBA怎么办?
  2. centos+ffmpeg安装配置+切片
  3. Visual Studio 快捷键 转载
  4. nginx 403 forbidden 二种原因
  5. 在Ubuntu中使用远程桌面
  6. Windows环境下MySQL的zip包精简方法与安装。
  7. latex 常用小结
  8. 2011百度之星初赛B圆环
  9. 教程:从FLASH过渡到SILVERLIGHT.(实例+源码)
  10. scrapyd部署爬虫项目到LINUX服务器