【问题标题】:Wireshark thinks scapy packet's raw data is DNS (malformed packet)Wireshark 认为 scapy 数据包的原始数据是 DNS(格式错误的数据包)
【发布时间】:2020-12-29 13:20:00
【问题描述】:

我正在尝试使用原始数据向我网络中的所有设备发送一个带有 scapy 的 udp 数据包:(hello everyone)

数据包如下所示:

packet = Ether(dst="ff:ff:ff:ff:ff:ff") / IP(dst="255.255.255.0") / UDP(sport=8118) / "hello everyone"
packet.show()

###[ Ethernet ]###
  dst       = ff:ff:ff:ff:ff:ff
  src       = (my mac address)
  type      = IPv4
###[ IP ]###
     version   = 4
     ihl       = None
     tos       = 0x0
     len       = None
     id        = 1
     flags     =
     frag      = 0
     ttl       = 64
     proto     = udp
     chksum    = None
     src       = 192.168.0.105
     dst       = 255.255.255.0
     \options   \
###[ UDP ]###
        sport     = 8118
        dport     = domain
        len       = None
        chksum    = None
###[ Raw ]###
           load      = 'hello everyone'

当我发送数据包 (sendp(packet)) 时,wireshark 说这是一个格式错误的 DNS 数据包:

有什么问题?

【问题讨论】:

    标签: networking wireshark scapy broadcast


    【解决方案1】:

    我相信您对 Wireshark 感到困惑,因为您没有指定目标端口。如果您没有为UDP 指定dport,则默认为53:

    class UDP(Packet):
        name = "UDP"
        fields_desc = [ShortEnumField("sport", 53, UDP_SERVICES),
                       ShortEnumField("dport", 53, UDP_SERVICES),
                       ShortField("len", None),
                       XShortField("chksum", None), ]
    

    这两个端口实际上都可以。 53 是用于 DNS 的,因此 Wireshark 会尝试根据端口号将您的负载解释为 DNS。

    同时指定 sportdport 以确保您的数据包不会被误解为 DNS 数据包。

    【讨论】:

    • 正确!我的坏
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 2017-01-21
    • 2018-04-08
    • 1970-01-01
    相关资源
    最近更新 更多