【问题标题】:Extracting a packet content using a Python script使用 Python 脚本提取数据包内容
【发布时间】:2016-10-28 14:37:35
【问题描述】:

我正在尝试编写一个代码,该代码将向站点发送 HTTP 获取请求,并将使用 scapy 将内容保存在 HTML 文件中。

如果是我的代码:

r = Ether() / IP(dst=cache_ip) / TCP() / "GET /index.html HTTP/1.0 \n\n"
b = str(r)
http.write(b)
print "html page is ready, check your html files folder to check"
http.close()

并且 cache_ip 是 Google 的 IP,而不是输出应该是保存在我计算机上的 HTML 文件中的 Google 的 HTML 页面... Instad 我明白了:

ÿÿÿÿÿÿ<¨*â-LEC@ Þ QÚûPP PÛGET /index.html HTTP/1.0 

现在我知道对于请求之类的工作有更好的模数,但我的任务是仅在 scapy 中完成。如果有人能指出问题并为使用 scapy 编写的工作提供更好的代码,那就太好了

编辑 - 我曾尝试使用 tcp 握手,但现在我试图将内容写入我的 html 文件,但由于某种原因我无法做到 -

http = open(os.path.dirname(
    os.path.abspath(inspect.getfile(inspect.currentframe()))) + "/html_saved_pages/" + url + ".html", "w")

update_history(url)

syn = IP(dst=cache_ip) / TCP(dport=80, flags='S')
syn_ack = sr1(syn)
syn_ack
getStr = 'GET / HTTP/1.1\r\nHost:'+cache_ip+'\r\n\r\n'
request = IP(dst=cache_ip) / TCP(dport=80, sport=syn_ack[TCP].dport,
seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags='A') / getStr
reply = sr(request)
http.write(reply)
print "html page is ready, check your html files folder to check"

http.close()

【问题讨论】:

  • 压缩了?检查内容类型标头。
  • 嗯,我不知道如何提取内容,也没有找到任何解决方案来解释我为什么来到这里
  • @Thebaron:考虑一下 Scapy 中 sr() 的返回类型是什么。我可以告诉你它不是什么——它不是你可以简单地输出到文件的字符串格式的 HTML。此外,您还必须确保 Google 生成的 HTML 不会分布在多个数据包中。使用wireshark确认。如果您发现 HTML 页面分布在多个数据包中,也许会问一个关于如何将它们组合在一起的新问题?

标签: python ubuntu httprequest http-get scapy


【解决方案1】:

在您给定的代码中,不清楚http 是什么,因此无法确切知道http.write()http.close() 会做什么。

但无论如何,如果您的目标是使用 ONLY scapy 从 Web 检索 HTML,则必须从 TCP 3 次握手开始,然后是 HTTP GET 请求:

How to create HTTP GET request Scapy?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-22
    • 2020-03-19
    • 2023-04-07
    • 2020-11-14
    • 2018-06-14
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    相关资源
    最近更新 更多