【发布时间】:2018-12-07 20:11:57
【问题描述】:
我想在一个非常大的文件(文件大小大于 2 GB)中找到以下字节序列,并在这个字节序列之后打印 100 个字节。
0x77 0x??{6-8} 0x78 0x07 0x??{18} 0x87 0x0d 0x00{2}
更新:{6-8} 表示量词。
这类似于字节签名。通常,我会使用 Yara 在文件中搜索此类字节签名。显然,Yara 没有正确处理非常大的文件。
在这里,??表示通配符,所以可以匹配任意字节。
以下 grep 命令在这种情况下也无济于事,因为我的搜索模式包含通配符。
grep -obUaP "<\x-hex pattern>" <file>
也许我需要修改和使用某种类型的正则表达式?
谢谢。
【问题讨论】:
-
上面的例子是字符串的样子吗(用十六进制值代替通配符)?
-
{6-8}是否表示量词? -
您传递给
grep的模式到底是什么?它当然可以处理各种通配符表达式,但我们无法猜测您是如何尝试传递它们的(除了“显然不正确”)。 -
我已经更新了这个问题。 {6-8} 表示量词。
-
该量词是否应用于整个左字节? IE。
0x00{2}是指0x00 0x00?这些空格是为了便于阅读还是作为文字字符存在?