当前位置: 首页 > news >正文

协议-Airkiss

是什么?

  • 设备 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]]
在这里插入图片描述

字段长度(字节)含义
DMAC6目的MAC地址。
SMAC6源MAC地址。
Length2指后续数据的字节长度,但不包括CRC检验码。
DSAP1目的服务访问点,若后面类型为IP帧值设为0x06。
SSAP1源服务访问点,若后面类型为IP帧值设为0x06。
Ctrl1该字段值通常设为0x03,表示无连接服务的IEEE 802.2无编号数据格式。
SNAP-ID5由OUI和Type两部分组成。
OUI33字节的组织唯一标识符(Organizationally Unique Identifier),其值通常等于MAC地址的前3字节,即网络适配器厂商代码。
Type2标识以太网帧所携带的上层数据类型。
Data44~1498负载。
CRC4用于帧内后续字节差错的循环冗余检验(也称为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

在这里插入图片描述


文档链接说明

  • 参考文档
    https://breezetemple.github.io/2019/01/04/airkiss/

  • 参考文档
    Airkiss协议详解.pdf

  • 参考文档
    Radiotap、Prism 和 802.11 帧格式分析 |


相关文章:

  • LINUX网络基础 - 初识网络,理解网络协议
  • 一、Redis 通用命令大全
  • SoapUI 结合 Postman 测试 WebService 协议
  • 一个py文件搞定mysql查询+Json转换+表数据提取+根据数据条件生成excel文件+打包运行一条龙
  • AI日记app
  • 前端文件分片上传深度解析:从原理到实践
  • leetcode日记(74)扰乱字符串
  • 记录一次跨库连表的坑
  • Java中用Map<String,Object>存储层次结构
  • 数据结构(初阶)(五)----栈
  • 解决下载支持gpu的pytorch问题
  • 云原生网络篇——万级节点服务网格与智能流量治理
  • [密码学实战]Java生成SM2根证书及用户证书
  • 【零基础C语言】第四节 数组
  • 系统架构设计师—计算机基础篇—计算机网络
  • leetcode 59. 螺旋矩阵 II 中等
  • DeepSeek效应初现:Grok-3补刀ChatGPT,OpenAI已在ICU?
  • 如何理解语言模型
  • 【算法】875. 快速幂
  • 代码随想录刷题day35|(二叉树篇)二叉树的非递归遍历(前序+后序)
  • 达恩当选罗马尼亚总统
  • 中方是否担忧美国主权信用评级下调?外交部:美国应采取负责任的政策措施
  • 瑞幸首度牵手成都国际非遗节,用一杯饮品将非遗之美推向全国
  • 国宝归来!子弹库帛书二、三卷抵达北京
  • 国内规模最大女子赛艇官方赛事在沪启航,中外41支队伍逐浪
  • 荣盛发展:新增未支付债务11.05亿元