[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] Certutil 以十六进制查看二进制文件和处理二进制文件

本帖最后由 老刘1号 于 2023-8-4 23:05 编辑

看论坛相关的帖子里好像都没说certutil有以16进制查看二进制文件的这个功能,那我就狗尾续貂一下

查看二进制(有坑,见#9
  1. certutil -dump xxx.bin
  2. ::or
  3. certutil xxx.bin
复制代码
bin -> hex
  1. certutil -encodehex file.bin hex.txt
复制代码
hex -> bin
  1. certutil -decodehex hex.txt file.bin
复制代码
bin -> base64
  1. certutil -encode file.bin b64.txt
复制代码
base64 -> bin
  1. certutil -decode b64.txt file.bin
复制代码
相关例子
bat 去掉二进制文件前4个字节
老刘的博客:https://OldLiu.CnBlogs.com/

额,我记得编码base64的,文件稍微大点的就不行了

TOP

回复 2# Five66


    编码base64源文件限制74,472,684字节

TOP

你好,你分享的bat去掉二进制文件前4个字节中提到也可以用certutil结合base64做,关于这个可以提供一点思路吗?

TOP

回复 4# buyiyang


    可以参考:http://www.bathome.net/viewthread.php?tid=43845 和百度的base64条目
编解码是互逆的操作
老刘的博客:https://OldLiu.CnBlogs.com/

TOP

回复 2# Five66


    确实,不过其实拆成多个再通过copy /b合成一个也行,就是挺麻烦的
一般也就小文件玩玩
老刘的博客:https://OldLiu.CnBlogs.com/

TOP

呃,不知道是特殊设定还是什么的,发现 bin -> hex 在某些情况下得不到符合预期的结果

例如文本文件2.txt内容为:
  1. 1   2    3
  2. 1   0    3
  3. 1   3    4
  4. 1   2    5
复制代码
执行 certutil -dump 2.txt 后,结果为:
  1.   0000  ...
  2.   0009
  3.     d7 6d f5 d3 7d 77 e3 5d  b9                        .m..}w.].
  4. CertUtil: -dump command completed successfully.
复制代码
很明显结果是不符的

然后把2.txt的内容修改为:
  1. 1   ,2    3
  2. 1   0    3
  3. 1   3    4
  4. 1   2    5
复制代码
保存后,再次执行 certutil -dump 2.txt , 结果为:
  1.   0000  ...
  2.   002f
  3.     0000  31 20 20 20 2c 32 20 20  20 20 33 0d 0a 31 20 20   1   ,2    3..1
  4.     0010  20 30 20 20 20 20 33 0d  0a 31 20 20 20 33 20 20    0    3..1   3
  5.     0020  20 20 34 0d 0a 31 20 20  20 32 20 20 20 20 35        4..1   2    5
  6. CertUtil: -dump command completed successfully.
复制代码
结果变正常了

TOP

本帖最后由 老刘1号 于 2023-8-4 19:47 编辑

回复 7# Five66
测试了一下确实欸…
确实挺奇怪的
建议直接用第三方吧,实在想用纯批处理实现可以先
  1. fsutil file createNew 空文件 大小
复制代码
然后再
  1. fc /b 空文件 要生成十六进制表示的文件
复制代码
老刘的博客:https://OldLiu.CnBlogs.com/

TOP

回复 8# 老刘1号
只是一时图方便用来看某个单词的ascii值时发现了这个,certutil大部分只是用来hashfile的
至于原因,应该是certutil把内容当成base64了,对内容进行了base64解码,然后显示了解码后的内容的hex,
只是不知道它是在什么情况下才将内容视为base64,也不知道这是不是正常的设定

TOP

回复 7# Five66
  1. certutil -encodehex In.txt Out.txt
复制代码
1

评分人数

    • 老刘1号: 啊?帮助里怎么没写有这个选项技术 + 1
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。

TOP

回复 10# Batcher


    啊,这,竟然成功了 (记得很久之前看着-decodehex过个选项试过,当然是失败的),还有太感谢了

TOP

回复 11# Five66


    太逆天了,-?帮助里都没写有这个选项,居然可以用
当初我还想怎么只有decodehex没有encodehex,居然还真的有
老刘的博客:https://OldLiu.CnBlogs.com/

TOP

返回列表