登录
首页 >  Golang >  Go问答

解析802.11探测请求帧信息元素的gopacket使用指南

来源:stackoverflow

时间:2024-02-26 16:12:23 274浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《解析802.11探测请求帧信息元素的gopacket使用指南》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

gopacket 支持解析信标和探测响应帧中的信息元素,如下所示:

for _, layer := range packet.Layers() {
    if layer.LayerType() == layers.LayerTypeDot11InformationElement {
        dot11info, ok := layer.(*layers.Dot11InformationElement)
        }
}

但是gopacket不支持解析探测请求帧中的信息元素。 我只能使用 packet.layer(layers.layertypedot11mgmtprobereq).(*layers.dot11mgmtprobereq) 获取contents和payload,信息元素就在这个contents中。

那么如何解析探测请求帧中的这些信息元素呢?


解决方案


我相信你必须自己写。您是否已经尝试过 this 实施?

解析器如下:

func (pr *capturedRequest) decodeProbeRequestLayer(probeLayer *layers.Dot11MgmtProbeReq) {
    var body []byte
    body = probeLayer.LayerContents()
    for i := uint64(0); i < uint64(len(body)); {
        id := layers.Dot11InformationElementID(body[i])
        i++
        switch id {
        case layers.Dot11InformationElementIDSSID:
            elemLen := uint64(body[i])
            i++
            if elemLen > 0 {
                pr.SSID = string(body[i : i+elemLen])
                i += elemLen
            }
            break
        case layers.Dot11InformationElementIDVendor:
            pr.VendorSpecific = body[i+1:]
            return
        default:
            elemLen := uint64(body[i])
            i += 1 + elemLen
            break
        }
    }
}

今天关于《解析802.11探测请求帧信息元素的gopacket使用指南》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>