【问题标题】:Make batch omit lines from a file从文件中批量省略行
【发布时间】:2021-12-07 13:43:55
【问题描述】:

我正在创建一个批处理指纹识别器,并且我正在使用 SystemInfo 和 IpConfig 的组合来为计算机获取唯一的 sha256 哈希,问题是我的 systeminfo 输出中存在诸如启动时间之类的内容以及其他内容每次都会更改时间,我需要一种在生成哈希之前省略它们的方法。 我目前的整个代码是:

@echo off
systeminfo >>fingerprint.txt
echo - - - - - - - - - - - - >> fingerprint.txt
ipconfig >>fingerprint.txt
:: Here i want to have the omitter
powershell Get-FileHash fingerprint.txt -Algorithm SHA256 > comphash.txt
pause

【问题讨论】:

  • FINDFINDSTR 命令都有一个/V 选项,其中指出:显示所有不包含指定字符串的行。
  • 我从来没有听说过这样荒谬的方式来执行这样的任务。以systeminfo 开头的命令可能是您可以使用的最慢的命令,并且会输出太多不相关的信息。它提供的大部分信息是动态的或易于重新配置的,因此毫无意义。我建议您忘记获取有关当前代码的帮助,而是研究要考虑使用哪些“计算机”硬件/软件信息。但是,该站点不适合告诉您那是什么,并且可能更适合Super User

标签: batch-file sha256


【解决方案1】:

与您计算机的几乎所有信息一样,计算机的唯一标识符可以在wmic 中找到。在这种情况下,它是 csproduct 类的 UUID 属性,它处理来自 SMBIOS 的计算机系统产品信息。

wmic 在数据末尾有一些额外的回车符,因此需要进行一些调整才能像普通命令一样通过for /f 循环运行它,但它看起来像这个:

for /f "delims=" %%A in ('wmic csproduct get UUID /value ^| find "="') do set %%A

这将使wmic 命令以UUID=00000000-0000-0000-0000-000000000000 格式输出其数据,然后将UUID 设置为名为@9​​87654329@ 的变量,使用find 查找= 并删除多余的回车符.

【讨论】:

    【解决方案2】:

    感谢 Squashman 找到了答案,如果有人想使用它,最终代码是:

    @echo off
    color 33
    systeminfo | find "Domain:" /v | find "System" /v | find "Virtual" /v | find "Available" /v >> fingerprint.txt
    echo Your computers unique fingerprint: >> finalhash.txt
    powershell Get-FileHash fingerprint.txt -Algorithm SHA256 >> finalhash.txt
    del fingerprint.txt
    start finalhash.txt
    pause
    
    
    
    

    【讨论】:

    • 添加新的修补程序后会发生什么?指纹会变!记忆的变化呢?更改输入语言怎么样?等等。这个想法是完全错误的,请重新考虑你的整个方法!
    • 您可以将其缩减为findstr /v "Domain: System Virtual Available"
    • 我也会考虑只使用CERTUTIL 来散列文件。它会比调用 Powershell 快得多。然后你也可以从CERTUTIL 命令中过滤掉所有你不需要的东西。 certutil -hashfile fingerprint.txt SHA256|findstr /V /B "SHA256 CertUtil:"
    • 很好地使用findstr 的想法会删除动态虚拟内存更改,但是,如果您的最终用户更改了他们的登录服务器、所有者名称、时区怎么办?等等。如果他们只是刷新他们的 BIOS 固件怎么办。非静态 IP 地址可以随时更改,或者如果他们更改其网关/DHCP 服务器?
    猜你喜欢
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多