我们得到了一个PCAP文件,我的工作是找到:
在用户受到感染/攻击之前,他们使用一个流行的搜索引擎(而不是Google)搜索一些信息。使用Python查找1)、哪个搜索引擎和2)用于进行此类搜索的关键字。3)搜索引擎推荐了哪些网站;4)用户实际访问了哪些网站?
通过在Wireshark上打开PCAP文件,我已经找到了正确的答案: Bing
虽然我仍然无法确定第2、3和4部分
但是,这显然不是分配的目的,因为我必须使用Python来返回信息。
到目前为止,我的代码是:
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部分。
有什么建议吗?
发布于 2019-03-19 19:28:45
pcaps有严格的格式,允许分隔不同的数据包。在一个完美的世界中,您将需要实现一个pcap解析器,允许您一个一个地获取每个包以供学习。您使用了更重的方法,它只是将所有内容解析为文本(在您非常具体的情况下是这样的:- ),所以这就是我将要记录的内容。但是,我确实建议您了解这一点:当您拥有每个包时,因为它是自己的,这要容易得多。
如果允许您使用库,scapy或dpkt之类的库可以帮助您解析pcaps。
首先,你需要知道你在寻找什么。关键字实际上是链接到HTTP请求的参数。当您将它解析为一个文件时,它与url的?和&参数相匹配,例如在http://www.example.org/?param1=foo¶m2=bar中
在您的示例中,在查找Bing时,下面列出了可以找到的参数列表:https://learn.microsoft.com/en-us/rest/api/cognitiveservices/bing-web-api-v5-reference#query-parameters
要得到这些,您需要首先提取所有的URL。为此,您可以使用regex和Python内置的re模块。在网上寻找一个好的网站,例如,我在HTTP中找到了一个:
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请求之前和之后一样,但这很麻烦。
https://stackoverflow.com/questions/55243226
复制相似问题