协议-Airkiss

发布于:2025-03-03 ⋅ 阅读:(88) ⋅ 点赞:(0)

是什么?

  • 设备 A 与外界没有建立任何实质性连接,可以称之为信息孤岛。
  • 设备 B 通过路由 或者直接 将 Wifi 的 ssid 与密码 UDP广播 传递给 A

在这里插入图片描述


为什么?

  • 解决将无线网络的 ssid 与密码传输到设备难题

怎么做?

  • 芯片自带AT指令开启Airkiss功能
AT\r\n
AT+CWMODE=1\r\n
AT+CWSTARTSMART=3\r\n	#设置配置参数3,SmartConfig功能支持ESP-TOUCH以及AirKiss

核心本质

  • UDP包的广播与监听
  • 9bits Length字段的编码

前导码

解决问题

  • 多个AP不知道哪个信道
  • 同一信道海量UDP包同时发送
  • UDP广播包需要封装,与最后SNAP包存在差异

前导域-差异值

  • 在发送链路层数据之前,需要先发送400ms覆盖8个信道的前导域
  • 前导域由4个字节组成 固定为{1,2,3,4}
  • 求得差异值,才能解析出实际的信息数据

举个例子

  • 接受方通过监听,在链路层截获802.2 SNAP格式的前导数据包,其Length字段的值分别为53,54,55,56,那差异值就能确定为53-1=52。之后接收方接收到数据之后都用SNAP包的Length字段值减去52,即能得到实际的信息数据

链路层LLC数据格式

监听SNAP格式数据包

  • 启用 Wi-Fi 芯片的混杂模式监听空间中的无线信号
  • 由于操作系统的限制,,发送方只能改变Length字段进行信息传递

在这里插入图片描述

![[Pasted image 20250302173412.png]]
在这里插入图片描述

字段 长度(字节) 含义
DMAC 6 目的MAC地址。
SMAC 6 源MAC地址。
Length 2 指后续数据的字节长度,但不包括CRC检验码。
DSAP 1 目的服务访问点,若后面类型为IP帧值设为0x06。
SSAP 1 源服务访问点,若后面类型为IP帧值设为0x06。
Ctrl 1 该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数据格式。
SNAP-ID 5 由OUI和Type两部分组成。
OUI 3 3字节的组织唯一标识符(Organizationally Unique Identifier),其值通常等于MAC地址的前3字节,即网络适配器厂商代码。
Type 2 标识以太网帧所携带的上层数据类型。
Data 44~1498 负载。
CRC 4 用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)。

整体架构

在这里插入图片描述

magic code field

  • Length是 Data Length

  • 在信息传输之前

    • 先对AP进行扫描,通过获取的beacon可以得知无线环境中所有非隐藏AP的ssid、rssi以及信道。
  • 在传输过程中

    • 接收方先从magic code field中获取目标AP ssid 的crc8值,然后再和事先扫描所得到的ssid的crc8值进行比对,如果发现相同值,那么在接下来的接收过程中接收方就不用再接收ssid信息

在这里插入图片描述

prefix code

  • Length是发送密码长度

在这里插入图片描述

sequence header

  • 数据以4为粒度进行划分,每4个数据组成一个sequence

  • 以sequence为单位进行数据的发送

  • 每个sequence都由sequence header字段和data字段组成

  • 从sequence index 开始到本 sequence data 结束所有数据的 crc8 的低 7 位值(最高位需补 0)

在这里插入图片描述

data

在这里插入图片描述

数据内容

  • 随机数的作用是
    • 当数据接收方连上AP之后,立即发送以该随机数为内容的UDP广播包
    • 当发送方收到该广播包后就能确认接收方已经准确接收到所有数据

在这里插入图片描述


抓包解析

  • 使用安信可提供的工具,抓包罢了不用真正输入真是ssid,毕竟仅仅是广播
  • 使用wireshark

在这里插入图片描述

前导码

  • 手机192.168.100.3 发出的UDP包 很明显 data 长度Length 1 2 3 4 满足前导域条件

在这里插入图片描述

magic code field

  • 20组

在这里插入图片描述

prefix code

  • 8 位密码
  • CRC 0XC2

在这里插入图片描述

sequence header

  • 第一个Index 数据0x31 0x32 0x33 0x34 对应ascii 前四位密钥1234

在这里插入图片描述

  • 第二个Index 数据0x35 0x36 0x37 0x38 对应ascii 前四位密钥5678

在这里插入图片描述

  • 第三个 sequence header a8 82 包后置
  • 随机数 0x01
  • ssid 应该是108-3

在这里插入图片描述

第四个 sequence header f0 83

在这里插入图片描述


文档链接说明



网站公告

今日签到

点亮在社区的每一天
去签到