在多个文件的目录中搜索数据字符串

在多个文件的目录中搜索数据字符串

我需要在一堆文件中搜索以十六进制格式存储的特定字符串数据。

例如,我有超过200个文件,其中一个包含:

60 55 8B EC 83 EC 48 56 57 83 CF FF

我如何扫描可能包含我正在寻找的字节字符串的多个文件?

运行 Windows 10 Pro 64 位。

答案1

如何在文件中搜索指定的十六进制字符串?

您可以使用免费Swiss File Knife下载瑞士锉刀 - 在 SourceForge.net 上浏览文件

它在 Windows CMD shell、Mac OS X Terminal 或 Linux shell 中运行。

它有一个hexfind命令:

sfk hexfind [opts] -pat /pattern/ -dir anydir -file .ext1 [.ext2]

search text or binary data in text and binary files.
if multiple patterns are given then they are searched
independently (pattern1 OR pattern2).

this is a basic command to search only static data.
type sfk xhexfind to use wildcards and expressions.

在命令行上查找二进制文件中的文本:适用于 Windows、Mac OS X、Linux、Raspberry Pi 的免费 sfk hexfind了解更多信息。

答案2

您可以结合格式-Hex选择字符串Powershell 中的 cmdlet 可以找到您要查找的 Format-Hex 内容:

以十六进制显示文件或其他输入。

并选择字符串:

在字符串和文件中查找文本。

请尝试以下操作:

Get-ChildItem -File * | foreach {  
    $a= Format-Hex $_.FullName | Select-String  "60 55 8B EC 83 EC 48 56 57 83 CF FF" 
    
    if ($a.Length -gt 0) { $_.FullName}
    }

解释:

  • Get-ChildItem -File *:列出文件夹中的所有文件
  • | $a= Format-Hex $_.FullName | Select-String "60 55 8B EC 83 EC 48 56 57 83 CF FF":将上一个 cmdlet 的输出通过管道传输到下一个 cmdlet。然后,将每个文件的内容转换为十六进制格式,然后根据模式检查内容并将其存储在变量中
  • if ($a.Length -gt 0) { $_.FullName}:如果变量的长度大于0,则表示找到了模式,并显示文件名。

相关内容