【问题标题】:How can I extract HTML code with Scapy?如何使用 Scapy 提取 HTML 代码?
【发布时间】:2016-07-14 23:14:21
【问题描述】:

我最近开始使用 Python 2.x 的 scapy 库,我发现关于 sniff() 函数的文档很少。我开始玩弄它,发现我可以在非常低的水平上查看 TCP 数据包。到目前为止,我只找到了信息数据。例如:

这是我在 scapy 终端中输入的内容:

A = sniff(filter="tcp and host 216.58.193.78", count=2)

这是向 google.com 请求主页的请求:

<Ether  dst=e8:de:27:55:17:f3 src=00:24:1d:20:a6:1b type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=60 id=46627 flags=DF frag=0L ttl=64 proto=tcp chksum=0x2a65 src=192.168.0.2 dst=216.58.193.78 options=[] |<TCP  sport=54036 dport=www seq=2948286264 ack=0 dataofs=10L reserved=0L flags=S window=29200 chksum=0x5a62 urgptr=0 options=[('MSS', 1460), ('SAckOK', ''), ('Timestamp', (389403, 0)), ('NOP', None), ('WScale', 7)] |>>>

回复如下:

<Ether  dst=00:24:1d:20:a6:1b src=e8:de:27:55:17:f3 type=0x800 |<IP  version=4L ihl=5L tos=0x0 len=60 id=42380 flags= frag=0L ttl=55 proto=tcp chksum=0x83fc src=216.58.193.78 dst=192.168.0.2 options=[] |<TCP  sport=www dport=54036 seq=3087468609 ack=2948286265 dataofs=10L reserved=0L flags=SA window=42540 chksum=0xecaf urgptr=0 options=[('MSS', 1430), ('SAckOK', ''), ('Timestamp', (2823173876, 389403)), ('NOP', None), ('WScale', 7)] |>>>

使用这个函数,有没有一种方法可以从响应中提取 HTML 代码?

另外,这些数据包是什么样的?

最后,为什么这两个数据包几乎相同?

【问题讨论】:

  • count=2 杀了它,我还没有看到一段 HTML 只在两个 TCP 数据包中传输。
  • 我在发布后不久就意识到了这一点。我把它改成了无限制,发现很多十六进制代码。我可以假设这是纯 html 吗?如果不是,那是什么?
  • @EliasBothell 你试过使用scapy-http吗?可以用来在scapy中解析http。
  • @Noob123 我还在学习低级数据包的东西,所以我为愚蠢的问题道歉。为什么我需要解析http?据我了解,都是纯文本,可读

标签: python-2.7 tcp scapy packet-capture packets


【解决方案1】:

您示例中的段“几乎相同”,因为它们是 TCP SYN 和 SYN-ACK 段,它们是 TCP handshake 的一部分,HTTP 请求和响应在连接期间之后出现(通常在 ESTABLISHED 状态下,除了当使用 TCP Fast Open 选项时),因此您需要在握手后查看段以获取您感兴趣的数据。

         SYN
C ---------------> S
       SYN-ACK
C <--------------- S
         ACK
C ---------------> S
    HTTP request
C ---------------> S
         ACK
C <--------------- S
    HTTP response
C <--------------- S  <= Here is the server's answer
         ACK
C ---------------> S
...

您可以使用 Scapy 的 Raw 层在您的情况下提取 TCP 以上的数据(例如 pkt[Raw]

【讨论】:

    【解决方案2】:

    您是否尝试过使用scapy-http?这是一个很棒的 scapy 扩展,可以帮助解决这个确切的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2018-12-27
      • 2019-06-23
      • 1970-01-01
      • 2014-04-24
      相关资源
      最近更新 更多