我尝试通过 PowerShell 和 PowerShell ISE(版本 5.1.1)中的 mmcat.exe 提取主引导记录 (MBR)。输出的二进制数据总是大于 512 字节。PowerShell 6.1.1 仍然存在这个问题。
$mmcat = "C:\Tools\sleuthkit\bin\mmcat.exe"
& $mmcat -t dos "$EWF_IMAGE" 0 > "$OUTPUT\Disk-Geometry\MBR.bin"
Run Code Online (Sandbox Code Playgroud)
这个问题在这里得到了很好的描述: PowerShell's Object Pipeline Corrupts Piped Binary Data
你知道解决这个问题的方法吗?
您无法在 PowerShell 中通过管道传送二进制数据。要解决此问题,请cmd.exe像这样使用:
$command = "C:\Tools\sleuthkit\bin\mmcat.exe -t dos `"$EWF_IMAGE`" 0 > `"$OUTPUT\Disk-Geometry\MBR.bin`""
cmd /c $command
Run Code Online (Sandbox Code Playgroud)
您可以像这样读取二进制数据:
[byte[]]$mbr = Get-Content -Path $OUTPUT\Disk-Geometry\MBR.bin -Encoding Byte
Run Code Online (Sandbox Code Playgroud)