[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 老刘1号 于 2023-4-24 00:02 编辑

好久没写bat了,写个玩玩
仅供娱乐,速度奇慢,不建议使用
如果有bug请自行修复,不要找我,当然如果没有那更好了(x
输入:input.png
输出:new.png
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. (
  4. for /f "skip=2 delims=" %%. in ('certutil input.png ^| find /v "CertUtil"') do (
  5. for /f "tokens=2-17 delims= " %%a in ("%%.") do (
  6. if defined prev (
  7. rem 这么写是因为最后一行得做特殊处理(certutil输出格式不标准)
  8. echo !prev!
  9. )
  10. if not defined t (
  11. rem 对第一行的16个hex,不显示前4个,就相当于丢掉了
  12. set t=啊
  13. rem 前四个hex也就是%%a %%b %%c %%d 扔掉,,
  14. set "prev=%%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p"
  15. ) else (
  16. set "prev=%%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p"
  17. )
  18. )
  19. set "lastline=%%."
  20. )
  21. rem echo !lastline!
  22. )> newhex.txt
  23. (
  24. rem 针对最后一行的特殊处理
  25. rem flag1 -> 读到了第一个非空格的字符
  26. rem flag2 -> 空格分割的第一个字符串读完了
  27. :trim
  28. set "char=!lastline:~,1!"
  29. rem echo !char!
  30. rem pause
  31. if "!char!" == " " (
  32. if "!flag1!" == "yes" set flag2=yes
  33. set "lastline=!lastline:~1!"
  34. ) else (
  35. if "!flag2!" == "yes" goto ok
  36. set flag1=yes
  37. set "lastline=!lastline:~1!"
  38. )
  39. goto trim
  40. :ok
  41. rem  观察certutil输出,hex部分最长48
  42. rem echo ll: !lastline!
  43. rem echo lltrim: !lastline:~,48!
  44. >>newhex.txt echo !lastline:~,48!
  45. )
  46. rem > newhex.txt
  47. certutil -decodehex newhex.txt new.png
  48. pause
复制代码
用certutil结合base64做一些处理也可以,不过太麻烦了我懒得写‘
那个newhex.txt是临时文件,运行完了之后可以删了
1

评分人数

    • buyiyang: certutil还能这样用技术 + 1

TOP

返回列表