【问题标题】:MySQL header parsing with Scapy使用 Scapy 解析 MySQL 标头
【发布时间】:2017-10-06 23:11:19
【问题描述】:

我正在尝试从捕获文件中解析 MySQL 服务器问候(和客户端响应,稍后)数据包。我可以看到 IP 和 TCP 标头,但 Scapy 显示的是 MySQL 标头。

问题是如何从这些原始数据中提取盐分?

这就是我在 Wireshark 中的内容(省略了 TCP 标头):

MySQL Protocol
Packet Length: 52
Packet Number: 0
Server Greeting
    Protocol: 10
    Version: 5.0.54
    Thread ID: 94
    Salt: >~$4uth,
    Server Capabilities: 0xa22c
    Server Language: utf8 COLLATE utf8_general_ci (33)
    Server Status: 0x0002
    Extended Server Capabilities: 0x0000
    Authentication Plugin Length: 0
    Unused: 00000000000000000000
    Salt: >612IWZ>fhWX

这就是 Scapy 给我的:

###[ TCP ]###
        sport     = mysql
        dport     = 56162
        seq       = 3442775512
        ack       = 3436755790
        dataofs   = 8
        reserved  = 0
        flags     = PA
        window    = 512
        chksum    = 0x83ab
        urgptr    = 0
        options   = [('NOP', None), ('NOP', None), ('Timestamp', (15785614, 15785614))]
###[ Raw ]###
           load      = b'4\x00\x00\x00\n5.0.54\x00^\x00\x00\x00>~$4uth,\x00,\xa2!\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>612IWZ>fhWX\x00'

如您所见,TCP 的显示与我在 Wireshark 中看到的一样,但 MySQL 有效负载只是原始的。

关于如何解析它的任何建议? (或者 MySQL 负载中每个字段的大小是多少?我假设,如果我知道每个字段的长度,我可以简单地步进那么多并读取适当的数据。)

【问题讨论】:

  • 当您单击它们时,Wireshark 是否不会为您提供每个已识别 MySQL 字段的偏移量和大小(它应该在底部突出显示十六进制有效负载中的相应字节)?

标签: python mysql parsing scapy pcap


【解决方案1】:

Scapy 中不支持 MySQL 协议,因此您必须编写自己的层。请参阅documentation about adding new layers

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2010-11-08
    • 2019-10-08
    • 2010-09-09
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多