首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python搜索PCAP文件并返回有关搜索查询的关键信息

使用Python搜索PCAP文件并返回有关搜索查询的关键信息
EN

Stack Overflow用户
提问于 2019-03-19 14:23:08
回答 1查看 1.5K关注 0票数 0

我们得到了一个PCAP文件,我的工作是找到:

在用户受到感染/攻击之前,他们使用一个流行的搜索引擎(而不是Google)搜索一些信息。使用Python查找1)、哪个搜索引擎和2)用于进行此类搜索的关键字。3)搜索引擎推荐了哪些网站;4)用户实际访问了哪些网站?

通过在Wireshark上打开PCAP文件,我已经找到了正确的答案: Bing

虽然我仍然无法确定第2、3和4部分

但是,这显然不是分配的目的,因为我必须使用Python来返回信息。

到目前为止,我的代码是:

代码语言:javascript
复制
pcapfile = open('nameofpcapfile.pcap', 'rb')

x = pcapfile.read()
decoded = x.decode("iso-8859-1")

searchengines = ["www.google.com", "www.yahoo.com", "www.ask.com", "www.bing.com",
                 "www.aol.com", "www.baidu.com", "www.wolframalpha.com",
                 "www.duckduckgo.com", "www.yandex.ru"]

searchenginesfound = []

for i in searchengines:
    if i in decoded:
        searchenginesfound.append(i)


if searchenginesfound.__len__() == 0:
    print("Search engine not found")
elif searchenginesfound.__len__() == 1:
    print("Search Engine used: ", searchenginesfound)
elif searchenginesfound.__len__() > 1:
    print("Search Engines used: ", searchenginesfound)

此代码能够成功地返回bing.com作为使用的搜索引擎。但是,我不知道如何处理第2、3和4部分。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-19 19:28:45

pcaps有严格的格式,允许分隔不同的数据包。在一个完美的世界中,您将需要实现一个pcap解析器,允许您一个一个地获取每个包以供学习。您使用了更重的方法,它只是将所有内容解析为文本(在您非常具体的情况下是这样的:- ),所以这就是我将要记录的内容。但是,我确实建议您了解这一点:当您拥有每个包时,因为它是自己的,这要容易得多。

如果允许您使用库,scapydpkt之类的库可以帮助您解析pcaps。

首先,你需要知道你在寻找什么。关键字实际上是链接到HTTP请求的参数。当您将它解析为一个文件时,它与url的?&参数相匹配,例如在http://www.example.org/?param1=foo&param2=bar

在您的示例中,在查找Bing时,下面列出了可以找到的参数列表:https://learn.microsoft.com/en-us/rest/api/cognitiveservices/bing-web-api-v5-reference#query-parameters

要得到这些,您需要首先提取所有的URL。为此,您可以使用regex和Python内置的re模块。在网上寻找一个好的网站,例如,我在HTTP中找到了一个:

代码语言:javascript
复制
regex = r"/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/"

然后您需要使用re.search(regex, decoded),然后使用groups() (在线查找:-)来查找所有URL。在此之后,您将能够通过split("&")获得各种关键字。

对于3)和4),您需要找到下一个HTTP答案和请求。在这里,不实现pcap解析器会变得很棘手,因为您需要猜测它们在文本块中的位置。您可能可以查找HTTP标记,就像在HTTP请求之前和之后一样,但这很麻烦。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55243226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档