最近在研究一个问题:如何通过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. Junit : how to add listener, and how to extends RunListener to override behaviors while failed

    http://junit.sourceforge.net/javadoc/org/junit/runner/notification/RunListener.html org.junit.runner ...

  2. OpenCV学习笔记(11)——Canny边缘检测

    了解Canny边缘检测的概念 1.原理 Canny边缘检测是一种非常流行的边缘检测算法,是 John F.Canny在1986年提出的.它是一个有很多步构成的算法 1)噪声去除 使用5*5的高斯滤波器 ...

  3. web开发(三) 会话机制,Cookie和Session详解

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6422391.html>,在此仅供学习参考之用. 一.会话 ...

  4. python3.5 append使用

    1.从元组中添加 friends=[] tup1=("Jon",35) friends.append(tup1[0]) print(friends[0]) ssh://root@1 ...

  5. java:(设置编码集,密码的加密,JSTL,EL表达式,权限设置)

    1.设置编码集: package cn.zzsxt.lee.web.sevlet; import java.io.IOException; import javax.servlet.ServletEx ...

  6. python 连接 hive数据库环境搭建

    首先需要安装以下Python 包:(我用的是Python 2) 在安装Python包之前需要安装一些依赖工具: Debian/Ubuntu: apt-get install python-dev li ...

  7. 龙芯软硬件培训个人总结-day1

    第一天主要针对的硬件设计,推他们年底要量产的3A4000+7A1000.这里我只记录下自己关注的几个点. 1,3A4000/3B4000处理器 支持256位向量指令:    对处理器封装进行了优化,不 ...

  8. <数据结构系列3>队列的实现与变形(循环队列)

    数据结构第三课了,今天我们再介绍一种很常见的线性表——队列 就像它的名字,队列这种数据结构就如同生活中的排队一样,队首出队,队尾进队.以下一段是百度百科中对队列的解释: 队列是一种特殊的线性表,特殊之 ...

  9. 意想不到的JavaScript(每日一题2)

    问题一: 答案: 解析:

  10. python基础之字符串索引与切片

    字符串索引与切片:切片后组成新字符串与原字符串无关系增:str1+str2查:str1[index] str1[start_index:end_index]1,索引从0开始2,根据索引获取元素:索引超 ...