我们已获得一个PCAP文件,我的工作是查找:
在用户被感染/攻击之前,他们使用了流行的搜索引擎(而非Google)来搜索某些信息。使用Python找出 1)哪些搜索引擎和2)他们用来进行此类搜索的关键字。 3)搜索引擎推荐了哪个网站,以及4)用户实际访问了哪个网站?
通过在Wireshark上打开PCAP文件,我已经找到了正确的答案:必应
尽管我仍然无法确定第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部分
有什么建议吗?
答案 0 :(得分:0)
如果允许您使用库,则诸如scapy
或dpkt
之类的库可以帮助您解析pcaps。
首先,您需要知道要查找的内容。关键字实际上是链接到HTTP请求的参数。当您将其解析为文件时,它会匹配网址的?
和&
参数,例如http://www.example.org/?param1=foo¶m2=bar
在您要使用Bing的情况下,以下是您可以找到的参数列表:https://docs.microsoft.com/en-us/rest/api/cognitiveservices/bing-web-api-v5-reference#query-parameters
要获取这些URL,您需要首先提取所有URL。为此,您可以使用正则表达式和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
标签,但这很麻烦。