使用 HEX 编辑器在文件中查找序列

使用 HEX 编辑器在文件中查找序列

几天前,我决定使用 Auslogics 碎片整理程序对我的 2TB 外置硬盘进行碎片整理和优化。现在,先介绍一下背景。我进行碎片整理的分区是一个 1.8TB 的分区,由 VeraCrypt(TrueCrypt 的一个分支)加密。碎片整理完成后,我发现几个文件已损坏。我能检测到损坏的文件都是压缩文件,使用 Windows 10 的默认压缩方式进行压缩。我在 WinHex 中打开这些文件,看到了一件奇怪的事情:所有这些损坏文件的末尾都有一段“DF DF DF”序列。这是该问题的屏幕截图。请注意,虽然图片显示它是一个 arc 文件,但它仍然是通过 Windows 压缩压缩的。奇怪的是,即使文件有那些 DF 块,对已安装分区的二分搜索也没有产生任何这样的序列。

现在我想创建一个批处理文件,它将:

  • 创建磁盘上的压缩文件列表
  • 检查每个文件二进制内容末尾的 DF 序列
  • 列出所有受影响的文件

我尝试使用 Powershell 脚本来解决这个问题,但没有成功。我认为在 Linux 平台上解决这个问题会容易得多,但我不知道该怎么做。任何帮助或建议都将不胜感激。

附加说明:很多人说,由于分区已加密,所以挂载分区的二进制搜索失败。这是错误的。我在搜索之前挂载了分区。因此,搜索的不是硬盘的原始数据,而是未加密分区的数据。

其他详细信息:操作系统:Windows 10 Professional X64 / Ubuntu 14.04 x64 文件系统:NTFS

答案1

Get-Content带有-Encoding Byteand开关的cmdlet-Tail为您提供了要在 PowerShell 中匹配的内容。假设这是它失败的地方。

答案2

Get-ChildItem -recurse -file -Attributes Compressed -path $Path | Foreach-Object -Process { if ((Get-Content -Tail 1 -encoding String -literalpath $_.fullname).endswith("ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß")) { Write-Output "$($_.Name) `t $($_.FullName) `t $($_.length)"}  }

简单的一行代码。基本上基于 kRush 所说的内容。将 $Path 替换为正确的路径。

相关内容