python - 使用 scapy 完成 HTTP GET

标签 python http html-parsing packet scapy

我正在尝试使用 scapy 运行完整的 HTTP session 。也就是说,我想手动执行三次握手、GET 请求、接收 HTML 文件所需的确认以及终止连接。使用 [1] 我已经完成了三次握手和 GET 请求,但我似乎无法捕获从服务器发送的原始 HTML 数据包,而且我显然无法发送回更多的 ack 数据包。有什么想法吗?

此外,我最终希望能够解析 HTML 的原始数据包。如果有人知道如何从 scapy 数据包中做到这一点,我将不胜感激。

[1] http://www.thice.nl/creating-ack-get-packets-with-scapy/

最佳答案

金比,

我在工作,现在只能在 scapy 中解析不能发起连接。所以我会处理你的第二个请求。我们正在寻找类似我在这里提供的东西。包含 html 和 http 请求的层是 (Raw).load 如果数据包包含 html 或 http 请求,我会首先测试该层是否存在 (haslayer),然后如果数据包是 'http 数据包“这里只是检查 IF 语句中的 80,但是您可能只使用嗅探 netfilter 中的端口。我已经包含了直接嗅探线路或在此代码段中拉入 pcap 的选项。(调整端口等)如果您使用的是非标准)

#!/usr/bin/python -tt

from scapy import *
import sys

def parse(pkt):
    if pkt.haslayer(TCP) and pkt.getlayer(TCP).dport == 80 and pkt.haslayer(Raw):
        print pkt.getlayer(Raw).load

if '-l' in sys.argv:
    sniff(prn=parse)

else:
    pkts = rdpcap(sys.argv[1])
    for pkt in pkts:
       parse(pkt)

当然,以此为开端,您可以调整第 8 行以不仅接收 dport,还接收 sport 等。让我知道这是否有帮助,祝你好运!

附言更改以下内容

from scapy import *

from scapy.all import *

取决于你的版本..

关于python - 使用 scapy 完成 HTTP GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10184016/

相关文章:

python - PyCharm Community 2017.2 中 undefined variable 没有警告

python - scipy curve_fit 在简单的线性拟合上失败了吗?

javascript - RESTful HTTP 网络的最佳 Javascript 框架

java - Jsoup 在指定标签后开始解析还是从页面底部开始?

javascript - 正则表达式匹配内容直到多字符字符串

html - r.From ["username"] 给出空值

python - Pandas 数据框中几列的总和

python - 使用 python/selenium 样式化类元素

http - 响应分块时获取整个响应正文?

javascript - 如何在 AngularJS 中使用 $http 来更新持​​久内存