最近在研究一个问题:如何通过AP来获取station的rssi。

具体可以拆分为以下三种情况:

  1、首先station如果已经连接到AP上,这种情况很容易就能够得到station的RSSI.这里就不讨论这种情况。

  2、当station并未与设定AP连接,但是这个时候station与另外一个AP连接,并且这两个AP具有相同的channel,这个时候需要通过一种方式去获取station相对于

  设定AP的RSSI。

  3、当station并未与设定AP连接,但是这个时候station与另外一个AP连接,当时这个时候两个AP具有不同的channel,这个时候需要通过一种方式去获取station

  相对于设定AP的RSSI。

问题分析:

  1、第一种情况很简单,一些ioctl就可以轻松的得到。

  2、第二种和第三种情况相似,唯一的区别是channel不相同。在station与AP之间未进行连接的情况下,想要去获取station相对于AP的RSSI,只有一种方式

  那就是通过AP向station发送报文,发送什么报文呢?802.11帧请求帧(proble request/null data/Qos null data/RTS)。通过实验发现发送proble request/

  Qos null data 帧,station并没有做出回应,(RTS还未进行实验)。当通过AP向station发送null data帧的时候,station会返回给AP一个ACK报文,通过这

  个ACK可以得到RSSI,这是在QCA 一种叫position的功能上得到的,在QCA上发送普通的null data的时候,不能将station帧收到driver上来,这里就简单通过这种方式,获取到RSSI。但是在这个测试验证的过程中发现有些网卡并不能及时的回复ACK报文,导致AP这边的发送状态始终是放失败,最终不能得到station的RSSI,这种情况还在分析原因。

  分析原因很有可能是station没有跟设定AP连接,所以station就不会正面回复ACK,但是有些网卡会回复ACK,测试过程中ralink的网卡会回复,inter和realtek都不会正面回复。下面将把抓包得到的信息以图片的形式贴出来。

  总之通过上面的方式不能获取所有网卡的RSSI,经过一份思索,回想起QCA里面通过一种欺骗的手段来获取ACK.

  首先看看null data帧:

  

  ACK报文内容非常简单,只有一个receiver的mac地址,

两种情况的区别在bssid,正常情况下bssid是填写的ap1的mac,而在欺骗的情况下是填写的AP2的mac,当sta收到null data的时候,发现bssid为AP2,AP2刚好是自己连接的,所以sta就会正面回复一个ACK.ACK报文对于同一channel的所有AP来说都是一样的,大家都会收到这个ACK.

  

关于AP如何获取station的rssi的更多相关文章

  1. ESP8266开发之旅 网络篇④ Station——ESP8266WiFiSTA库的使用

    1. 前言     在前面的篇章中,博主给大家讲解了ESP8266的软硬件配置以及基本功能使用,目的就是想让大家有个初步认识.并且,博主一直重点强调 ESP8266 WiFi模块有三种工作模式: St ...

  2. ESP8266 station模式下建立client、server TCP连接

    程序实现内容: 1.在station模式下,ESP8266作为client.server进行TCP连接2.实现数据的发送.接收(同时回传)实现思路:TCP网络通信分层为:应用层.网络层.数据链路层.物 ...

  3. ESP8266-Soft AP模式 —— 谁想连上我

    AP是Access Point简称,也就是访问接入点,是网络的中心节点.一般家庭的无线路由器就是一个AP,众多站点(STA)加入到它所组成的无线网络,网络中的所有的通信都通过AP来转发完成. 软AP也 ...

  4. wifi mode: AP,Client,Ad-hoc,802.11s,Pseudo Ad-hoc(ahdemo),Monitor,AP(WDS),Client(WDS)

    openwrt wifi mode:APClientAd-hoc802.11sPseudo Ad-hoc(ahdemo)MonitorAP(WDS)Client(WDS) http://forum.a ...

  5. C++ 中获取 可变形參函数中的參数

    #include <iostream> #include <stdarg.h> using namespace std; int ArgFunc(const char * st ...

  6. Android WiFi 获取国家码

    记录一下Android获取国家码的方式 Wifi 国家码获取途径 1.DefaultCountryTablefield in WCNSS_qcom_wlan_nv.bin-read during dr ...

  7. 使用WIFI网卡的AP功能

    前几篇博客中,wifi无线网卡都工作于STA模式,那么它能否工作于AP模式.本篇博客就研究使wifi 无线网卡工作于AP模式.使用一个应用程序hostapd,关于它的介绍可以去此网站https://w ...

  8. ESP8266-Station模式--我想连上谁

    Station模式又叫做站点工作模式,类似于无线终端 处于Station模式下的ESP8266,可以连接到AP.通过Station(简称为“STA”)模式,ESP8266作为客户端连接到路由的wifi ...

  9. WIFI WPA1/2 Crack for Windows

    0x00 前言 目前WIFI WPA破解主要 以“aircrack-ng”为代表,运行于Linux系统( 如Kali Linux ),Windows系统比较少见,主要是Windows系统下WIFI网卡 ...

随机推荐

  1. Java中的低级错误

    1.              不能用“==”比较两个字符串内容相等. 2.              对list做foreach循环时,循环代码中不能修改list的结构. 3.            ...

  2. Windows下搭建Docker与Kubernetes(DevOps一)

    Docker与Kubernetes (二)搭建 开通  Hyper-V 安装Docker for Windows 开通Kubernetes 3.关键概念 PodKubernetes 中的最小单元,一个 ...

  3. Storm之WordCount初探

    刚接触Strom,记录下执行过程 1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <proj ...

  4. git远程分支被误删,本地分支还存在,如何恢复远程分支?

    做项目的时候碰到了这样一件事:本地分支存在,远程分支不在了,如图: (git branch -a 是查看本地和远程分支,红色部分是远程分支) (git branch -r 是查看远程分支的) 奇怪的是 ...

  5. fiddler抓取app的https的包

    线上问题的排查有时候需要抓包,但是是https协议的,则需要安装证书 在Android 6.0 (API level 23)及以前,APP默认信任系统自带的CA证书以及用于导入的CA证书,Androi ...

  6. SuperSocket 学习笔记-客户端

    客户端: 定义 private AsyncTcpSession client; 初始化 client = new AsyncTcpSession(); client.Connected += Clie ...

  7. java:CSS(定位,组合选择符,边距,Float,Table的样式,显示和隐藏,换行,盒子模型,iframe和frameset框架)

    1.绝对定位,相对定位,fixed定位(指浏览器窗口定位): <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  8. 应用安全 - Java - 插件 - IO - excel-streaming-reader - 漏洞汇总

    xlsx-streamer.jar的XXE漏洞 Date 类型XXE 影响范围 xlsx-streamer.jar-2.0.0及以下版本 复现

  9. 深入理解java:2.3.5. 并发编程concurrent包 之容器BlockingQueue(阻塞队列)

    1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列. 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空. 当队列满时,存储元素的线程会等待队列 ...

  10. 2019JAVA第九次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.8 评分等级 课程总结 1.实验代码 package Domon8; import java.awt. ...