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



我想做一个代码,将发送一个HTTP get请求到一个网站,并将内容保存在一个HTML文件使用scapy。

所以如果我的代码:

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

和cache_ip是谷歌的IP比输出应该是谷歌的HTML页面保存在我的电脑上的HTML文件…相反,我得到这个:

ÿÿÿÿÿÿ<¨*â-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.1rnHost:'+cache_ip+'rnrn'
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()

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

但是在任何情况下,如果你的目标是使用ONLY scapy从web检索HTML,你必须从TCP 3-way握手开始,然后是HTTP GET请求:

如何创建HTTP GET请求Scapy?

最新更新