使用Python脚本提取数据包内容

时间:2016-06-26 14:20:29

标签: python ubuntu httprequest http-get scapy

我试图创建一个代码,该代码将向网站发送HTTP get请求,并使用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,输出应该是Google保存在我的计算机上的HTML文件中的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()

1 个答案:

答案 0 :(得分:0)

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

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

How to create HTTP GET request Scapy?