自动编辑 100 多个十六进制字符串

自动编辑 100 多个十六进制字符串

我目前正在开展一个项目,该项目涉及替换数百个十六进制字符串,到目前为止我一直在手动完成此操作,但我们拥有的数据已经变得太大而无法持续进行。

我一直在寻找一种自动化过程的方法,但是我找到的所有解决方案都没有成功,大多数只提供一次一个字符串的方法解决方案,这并不比在十六进制编辑器中查找和替换更快。

下面是我正在尝试做的一个示例:

Orange to Tomato

1) 4f72616e6765 to 546f6d61746f

Mango to Melon

2) 4D616E676F to 4D656C6F6E

这一过程需要对大量数据重复进行,从橙子到西红柿、从芒果到甜瓜等等。

有人能给我指明正确的方向吗?

感谢您的时间。

答案1

您可以在 .json 文件中保存哪些旧字符串应该被哪些新字符串替换。例如:

{"Orange":"Tomato","Mango":"Melon", ...}

然后,编写一个 Python 程序(或您选择的程序),读取 .json 文件,并用十六进制字符串文件中的新字符串替换所有出现的旧字符串。在这里,您可以使用正则表达式。当然,您必须先将 .json 文件中的字符串转换为十六进制格式。我估计编写这样的程序大约需要半小时。

答案2

它可以作为 PowerShell 脚本,但编写它并不那么简单。

您需要创建一个包含十六进制字符串对的文件,包含搜索和替换,然后循环执行替换。

此代码片段将有助于完成为一个搜索/替换组合编写的任务:

[byte[]] $searchBytes = 0x0, 0x80, 0x0  ## example
[byte[]] $replaceBytes = 0x87, 0xCE, 0xEB  ## example

[byte[]] $content = [System.Io.File]::ReadAllBytes( <filename> )

if( $content.Contains( $searchBytes ) )
{
    $startIndex = $content.IndexOf( $searchBytes )
    Write-Host "Found $searchBytes at $startIndex"
    for( $i = 0; $i -lt $searchBytes.Length; $i++ )
    {
        $content[ $i + $startIndex ] = $replaceBytes[ $i ]
    }
}

[System.Io.File]::WriteAllBytes( <filename>, $content )

相关内容