协议-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 帧格式分析 |


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/980308.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python第十一课:并发编程 | 多任务交响乐团

🎯 本节目标 理解多线程/多进程/协程的应用场景掌握threading与multiprocessing核心用法学会使用asyncio进行异步编程开发实战项目:高并发爬虫引擎破解GIL锁的性能迷思 1️⃣ 并发编程三剑客 🎻 生活化比喻: 多线程 → 餐厅多个…

linux中断调用流程(arm)

文章目录 ARM架构下Linux中断处理全流程解析:从硬件触发到驱动调用 ⚡**一、中断触发与硬件层响应** 🔌**1. 设备触发中断** 📡 **二、CPU阶段:异常入口与上下文处理** 🖥️**1. 异常模式切换** 🔄**2. 跳转…

Deepseek 模型蒸馏

赋范课堂: https://www.bilibili.com/video/BV1qUN8enE4c/

商城系统单商户开源版源码

环境配置 1.软件安装 宝塔安装系统软件:Nginx、MySQL5.6、PHP( PHP用7.1-7.4版本)、phpMyAdmin(Web端MySQL管理工具)。 2.配置mysql 设置mysql,在已安装的软件里面找到 mysql点击进行设置 3.修改sql-mode 选择左侧配置修改,找到里面的sql-mode&…

登录日志管理:通用分页和排序封装、 查询登录日志列表、删除登录日志、清空登录日志、解锁用户登录状态(解锁密码错误次数超限)

文章目录 引言I 登录日志管理接口列表II 通用分页和排序封装Java 分页和排序封装vue前端排序页面III 工具类字段名转换 : 驼峰转下划线命名引言 I 登录日志管理 接口列表 import request from @/utils/request// 查询登录日志列表 export function list(query) {return

Java内存管理与性能优化实践

Java内存管理与性能优化实践 Java作为一种广泛使用的编程语言,其内存管理和性能优化是开发者在日常工作中需要深入了解的重要内容。Java的内存管理机制借助于垃圾回收(GC)来自动处理内存的分配和释放,但要实现高效的内存管理和优…

Flutter_学习记录_实现列表上拉加载更多的功能

可以用ScrollController组件来实现这样列表上拉加载更多的功能: 1. 定义变量 在StatefulWidget 的组件内,添加三个属性: // 滚动视图的控制器final ScrollController _scrollController ScrollController();// 是否已显示了上拉加载中bool _isShowM…

使用DeepSeek+KIMI生成高质量PPT

一、使用DeepSeek DeepSeek官网:DeepSeek 点击“开始对话”,进入交互页面。 在上图中,输入问题,即可获取AI生成的结果。 基础模型(V3):通用模型(2024.12),高…

TCP和UDP比较

以下是 TCP(传输控制协议) 和 UDP(用户数据报协议) 的详细对比,涵盖核心特性、应用场景及技术差异: 1. 核心特性对比 特性TCPUDP连接方式面向连接(需三次握手建立连接)无连接&#…

Spring Boot 3.x 基于 Redis 实现邮箱验证码认证

文章目录 依赖配置开启 QQ 邮箱 SMTP 服务配置文件代码实现验证码服务邮件服务接口实现执行流程 依赖配置 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…

(七)消息队列-Kafka 序列化avro(传递)

&#xff08;七&#xff09;消息队列-Kafka 序列化avro&#xff08;传递&#xff09; 客从远方来&#xff0c;遗我双鲤鱼。呼儿烹鲤鱼&#xff0c;中有尺素书。 ——佚名《饮马长城窟行》 本文已同步CSDN、掘金平台、知乎等多个平台&#xff0c;图片依然保持最初发布的水印&…

Docker 学习(一)

一、Docker 核心概念 Docker 是一个开源的容器化平台&#xff0c;允许开发者将应用及其所有依赖&#xff08;代码、运行时、系统工具、库等&#xff09;打包成一个轻量级、可移植的“容器”&#xff0c;实现 “一次构建&#xff0c;随处运行”。 1、容器&#xff08;Container…

使用mermaid查看cursor程序生成的流程图

一、得到cursor生成的流程图文本 cursor写的程序正常运行后&#xff0c;在对话框输入框中输入诸如“请生成扫雷的代码流程图”&#xff0c;然后cursor就把流程图给生成了&#xff0c;但是看到的还是文本的样子&#xff0c;保留这部分内容待用 二、注册一个Mermaid绘图账号 …

蜂鸣器使用

1、蜂鸣器原理 无源蜂鸣器模块根据输入的 不同方波信号&#xff08;作为震荡源&#xff09;可以发出不同的声音。驱动电路中三极管电阻一般为1K-4K都行&#xff0c;能够让三极管导通即可。&#xff08;三极管即带箭头的部分&#xff0c;基极和发射机&#xff08;PNP&#xff09…

15. LangChain实战项目2——易速鲜花海报文案生成

你已经制作好了一批鲜花的推广海报&#xff0c;想为每一个海报的内容&#xff0c;写一两句话&#xff0c;然后 post 到社交平台上&#xff0c;以期图文并茂。 下载 Salesforce/blip-image-captioning-large 图生文模型 通过以下几个命令下载该模型 pip install -U huggingfa…

支持IPD项目管理的9大系统,哪款工具能有效提高项目控制能力

本文介绍了以下9大系统: 1.Worktile&#xff1b; 2. 腾讯敏捷开发平台&#xff08;TAPD&#xff09;&#xff1b; 3. 简道云&#xff08;Jiandaoyun&#xff09;&#xff1b; 4. 蓝鲸智云&#xff08;BlueWhale&#xff09;&#xff1b; 5. 轻流&#xff08;Qingflow&#xff0…

创建一个MCP服务器,并在Cline中使用,增强自定义功能。

MCP介绍 MCP 是一个开放协议&#xff0c;它标准化了应用程序如何向LLMs提供上下文。可以将 MCP 视为 AI 应用程序的 USB-C 端口。正如 USB-C 提供了一种标准化的方法来将您的设备连接到各种外围设备和配件一样&#xff0c;MCP 提供了一种标准化的方法来将 AI 模型连接到不同的…

Linux之yum详解

—— 小 峰 编 程 目录 1、Linux软件的安装方式 2、什么是yum 3、配置网络yum源 4、yum命令 【语法】 【yum常用命令】 1、Linux软件的安装方式 在CentOS系统中&#xff0c;软件管理方式通常有三种方式&#xff1a; rpm安装 、 yum安装 以及 编译安装 。 2、什么是yum…

2025国家护网HVV高频面试题总结来了01(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 0x1 高频面试题第一套 0x2 高频面试题第二套 0x3 高频面试题第三套 0x4 高频面试题第四套 0x5 高频面…

leetcode 59. 螺旋矩阵 II 中等

给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a; 输入&#xff1a;n 1 输出&am…