嗨,我正在尝试使用powershell命令Format Hex,它运行良好。在普通的十六进制编辑器中,可以选择隐藏和不包括右侧的解码文本字符。
我不知道如何在powershell中使用Format Hex只显示:
00000030 1A 00 00 00 00 00 00 00 68 74 74 70 3A 2F 2F 66
有没有一个参数可以对PS C:\Users\YourName\Desktop>格式化十六进制文件.dll而不是下面的?我只是确认在使用Format Hex命令时是否存在任何这样的参数或cli工具,而不是寻找截断或文件解析解决方案。
00000030 1A 00 00 00 00 00 00 00 68 74 74 70 3A 2F 2F 66 ........http://f
00000040 72 61 6E 6B 69 65 2E 70 68 6F 74 6F 00 00 FF ED rankie.photo...í
00000050 00 C2 50 68 6F 74 6F 73 68 6F 70 20 33 2E 30 00 .APhotoshop 3.0.
00000060 38 42 49 4D 04 04 00 00 00 00 00 A6 1C 02 28 00 8BIM.......▌..(.
00000070 62 46 42 4D 44 30 31 30 30 30 61 66 63 30 64 30 bFBMD01000afc0d0
我阅读了关于格式化十六进制的帮助
Format-Hex
没有参数,该参数将从其输出中省略最后一列。
如果您在macOS或Linux上运行,您可以使用那里提供的标准实用程序,如hexdump
。
然而,以牺牲性能为代价,您可以围绕Format-Hex
:编写一个简单的包装器函数
function Format-HexBare {
Format-Hex @args |
Out-String -Stream |
ForEach-Object `
-Begin { $maxLen = if ($IsCoreCLR) { 64 } else { 58 } } `
-Process {
$line = $_
try { $line.Substring(0, $maxLen) } catch { $line }
}
}
注意:PowerShell版本特定的最大行长度(不包括最后一列(是上面的硬编码,原因如下:
一个健壮的正则表达式解决方案将是一个挑战。
.Substring()
解决方案还消除了不需要的列(仅在PowerShell(Core(7+中显示(的标头。
虽然不能保证输出格式不会随着时间的推移而改变,但[1]在这种情况下不太可能。尽管如此,如果发生这种情况,该功能很容易适应。
[1]显示格式的细节(仅适用于人类观察者(不属于PowerShell关于向后兼容性的公共合同的一部分