【问题标题】:Finding binary chunk in a file在文件中查找二进制块
【发布时间】:2009-05-12 21:32:54
【问题描述】:

我有一大块相当随机的二进制数据。我想找到该块在文件中的位置、出现的次数以及偏移的字节(或扇区)。关于如何做到这一点的任何想法?

谢谢, 贾斯汀

【问题讨论】:

  • 抱歉,直到现在才注意到 linux 标签。

标签: linux command-line binary


【解决方案1】:

我相信没有任何现有的命令完全符合您的要求。如果你的块很小并且你的文件适合内存,那么编写你自己的很容易。只需扫描文件内容,在每个位置应用 strncmp。

如果您的文件非常大但仍适合您的地址空间,您可以使用 mmap 执行相同的操作。

如果你的块不小,你最好使用Boyer-Moore algorithm 而不是strncmp。这仍然不是太多工作,因为已经有可以使用的实现。

【讨论】:

  • 这就是我最终所做的,使用 mmap 和 memcmp。它有效,但我认为确实应该有一个命令已经这样做了。
【解决方案2】:

我会为此推荐X-Ways WinHex。我发现自己经常使用它来搜索硬盘驱动器或大型磁盘映像文件上的任意数据。

【讨论】:

    【解决方案3】:

    你可以用 grep 做一些事情

    这会输出带有字节偏移的行

    grep --text --byte-offset 'ls' /bin/ls

    添加--count 参数以获取匹配的总数。

    【讨论】:

    • 我也这样做了,但问题是我有一个包含该块的文件。我找不到让 grep 在另一个文件中搜索一个文件的内容的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 2015-06-13
    • 1970-01-01
    • 2021-08-09
    • 2014-06-20
    相关资源
    最近更新 更多