解析二进制文件以查找c++中的uri

Parsing a binary file to look for URIs in C++

本文关键字:c++ 中的 uri 查找 二进制文件      更新时间:2023-10-16

我的目标是使用c++在二进制文件中查找uri。我已经编写了代码,它告诉我给定的字符串是否是正确的URI(例如,我的代码将为"http://a.pl"返回TRUE,为"xdG:"返回FALSE)。然而,我很难让它在整个文件中工作。我不能一个字一个字地检查整个文件,因为uri可能隐藏在单词中的某个地方,例如

…href = " http://a.pl ">链接…

我想到的显而易见的解决方案是逐个字符检查单词,所以首先是否…href="http://a.pl">link…是一个URI,那么…ref="http://a.pl">link…ef="http://a.pl">链接…等等......但这似乎是一个非常缓慢的解决方案。我怎样才能使它更有效率?

一个简单的解决方案(如果您想避免使用真正的解析器)是首先搜索://,这应该非常简单和有效,并且必须是您感兴趣的任何URI的一部分(理论上,可能还有其他的,如果您也需要它们,只需搜索:)。然后通过检查a-z, A-Z, 0-9, +, -.来向后搜索方案(httpftp或其他)。然后运行你的算法(希望它知道在哪里结束?)。

如果您只需要http - uri,您当然可以优化上面的内容,简单地查找http://,然后才调用您的算法。