openwrt上wifi探针的实现----mt7620a+rt2860v2

2023-11-10

(最新的实现在这里http://blog.csdn.net/lixuande19871015/article/details/71601363

什么是wifi探针

看到探针,感觉很高大上的样子,其实就是通过wifi搜集经过这个AP范围的手机的mac地址,没有什么深刻的东西,知乎上关于这个东西讨论的很多,有人觉得很有用,可以做很多增值的应用,有人觉得没啥用,不过这并不妨碍我们从技术上去实现它。

802.11协议

协议里面要求每个AP每隔一定时间(几十毫秒到几秒不等)向周围的sta和AP广播beacon帧,就是告诉周围的sta和其他的AP:我是xxxx(bssid),快来连我!我是xxxx(bssid),快来连我!瞬间感觉每个AP都有一颗放荡的心,有木有!有木有!

每个sta(可以理解为手机、笔记本)除了默默监听周边AP发送的beacon帧以外,还会偷偷发送probe帧:我是xxxx(mac地址),我能连你吗?我是xxxx(mac地址)我能连你吗?十足一个闷骚的小婊砸,所以我每次出门都默默关掉手机的wifi,现在的无线环境实在是太不安全了,参看连接http://network.pconline.com.cn/587/5878836.html

在7620a上的实现

基本思路是在AP收到探测帧后,将mac地址记录下来,通过proc文件系统上报给应用层。下面是代码:

mac地址获取部分:

在函数VOID APPeerProbeReqAction(IN PRTMP_ADAPTER pAd,IN MLME_QUEUE_ELEM *Elem);中添加

extern UCHAR GLOBAL_AddrLocalNum;

extern UCHAR GLOBAL_AddrLocal[ADDR_LOCAL_NUMBER][MAC_ADDR_LEN];
PFRAME_802_11 pFramelxd = (PFRAME_802_11)Elem->Msg;
if(GLOBAL_AddrLocalNum >ADDR_LOCAL_NUMBER || GLOBAL_AddrLocalNum == ADDR_LOCAL_NUMBER)
{
//GLOBAL_AddrLocalNum = 0;
}
else
{
int index = 0;
BOOLEAN flag = 1;
for(index=0; index<GLOBAL_AddrLocalNum; index++)
{
if(NdisCmpMemory(GLOBAL_AddrLocal[index],pFramelxd->Hdr.Addr2,MAC_ADDR_LEN)==0)
{
flag = 0;
break;
}
}
//COPY_MAC_ADDR(GLOBAL_AddrLocal[GLOBAL_AddrLocalNum], pFramelxd->Hdr.Addr1);
//GLOBAL_AddrLocalNum++;
//COPY_MAC_ADDR(GLOBAL_AddrLocal[GLOBAL_AddrLocalNum], pFramelxd->Hdr.Addr2);
//GLOBAL_AddrLocalNum++;
if(flag)
{
COPY_MAC_ADDR(GLOBAL_AddrLocal[GLOBAL_AddrLocalNum], pFramelxd->Hdr.Addr2);
GLOBAL_AddrLocalNum++;
}
}

proc部分:

应用层向proc的节点中写入“s”,告知驱动需要获取sta相关的数据,驱动给出采集到的maclist。

static struct proc_dir_entry *entry_wl_beacon_mac;

UCHAR GLOBAL_AddrLocalNum = 0;
UCHAR GLOBAL_AddrLocal[MAX_MCAST_LIST_SIZE][6];

static char *maclistbuffer;

static int maclist_proc_show(struct seq_file *m, void *v)
{
if(maclistbuffer[0] == 's')
{
maclistbuffer[0] = '0';
int index=0;
for(index=0;index<GLOBAL_AddrLocalNum;index++)
{
seq_printf(m,"%02x:%02x:%02x:%02x:%02x:%02x\n", GLOBAL_AddrLocal[index][0],GLOBAL_AddrLocal[index][1],GLOBAL_AddrLocal[index][2],GLOBAL_AddrLocal[index][3],GLOBAL_AddrLocal[index][4],GLOBAL_AddrLocal[index][5]);
}
GLOBAL_AddrLocalNum = 0;
}
else
{
//seq_printf(m,"sta number is %d, proc!\n", GLOBAL_AddrLocalNum);
//seq_printf(m,"ap number is %d, proc!\n", GLOBAL_AddrLocalNum1);
}
return 0;
}
static int maclist_proc_open(struct inode *inode, struct file *file)
{
return single_open(file,maclist_proc_show,inode->i_private);
}

static ssize_t maclist_proc_write(struct file *file, const char *buffer, size_t len, loff_t *off)
{
int user_len = 0;

if (len > MAX_MACLIST_LENGTH)
{
user_len = MAX_MACLIST_LENGTH;
}
else
{
user_len = len;
}
if(copy_from_user(maclistbuffer, buffer, user_len))
{
return -EFAULT;
}
return user_len;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

openwrt上wifi探针的实现----mt7620a+rt2860v2 的相关文章

  • Windows Phone 8.1 设备 (Lumia 930) 和 VS2013 调试仅适用于禁用 WiFi

    当 Windows Phone 8 1 应用程序启动进行部署和调试时 VS2013 中出现错误 错误 1 错误 DEP6100 发生以下意外错误 在 boostrapping 阶段 连接到设备 SmartDeviceException 部署
  • 手机在捕获 Wi-Fi 探测请求时不会发送所有存储的 ssid

    我使用 scapy 构建了一个脚本来捕获 monitornig wi fi 接口中的探测请求 我成功捕获了请求以及其中包含的一些 SSID 但手机中存储的大多数网络都不会被广播 对于为什么会发生这种情况 还没有一个明确的模式 有些手机根本不
  • 如何更新已创建的 Wi-Fi 配置(或“UID XXX 无权更新 [Wi-Fi] 配置错误”)?

    我正在开发一个管理 Wi Fi 连接的应用程序 我的场景如下 假设整个大楼都有一个名为 testing tls 的 Wi Fi 网络 我的应用程序应该能够仅连接到选定的接入点 基于 BSSID 或 MAC ID 我们用TLS 认证验证用户的
  • Android 2.2 wifi热点API

    我需要在 Android 2 2 Froyo 中进行什么 API 调用来创建 Wifi 热点 如网络共享和便携式热点设置项中所示 您可以致电 private boolean setWifiApEnabled WifiConfiguratio
  • 在监控模式下使用 libpcap 嗅探 wifi

    问题陈述 Calling pcap activate 结果是PCAP ERR RFMON NOTSUP错误 即不支持 RF 监控模式 Context 我正在编写一个小型 C 程序 其工作是在监视器模式下监听我的笔记本电脑的 wifi 卡 该
  • 通过 wifi 传输 ipad 到 ipad 文件

    通过 wifi 将文件从一台 ipad 传输到另一台 ipad 的最佳方法是什么 我知道如何处理 wifi 网络连接 但我需要知道将图像 视频等从一台 ipad 传输到另一台 ipad 的最有效方法 您可能想看看https github c
  • iOS从蓝牙接收数据,然后通过wi-fi将信息发送到另一台服务器上的数据库

    我应该查看哪些库来完成以下任务 我想通过蓝牙从另一台设备接收字符串 这需要查看附近设备的列表并选择正确的设备 然后我想通过 Wi fi 将字符串发送到数据库 这是我真正想做的事情的简单版本 但我需要首先知道如何做这些事情 此外 任何设计技巧
  • 有没有办法在 iOS 中以编程方式打开和关闭蓝牙和/或 WiFi?

    我正在寻找一种简单的方法来在 iOS 4 x 设备 iPhone 和 iPad 上切换蓝牙和 WiFi 的打开和关闭状态 当我在不同的位置和使用场景之间移动时 我会不断切换这些功能 现在需要多次点击并访问 设置 应用程序 我希望创建一个简单
  • 如何禁用 Android 设备的强制网络助手?

    当用户通过强制门户连接到开放 WiFi 时 Android 设备将打开带有强制门户 登录页面的浏览器实例 我们想禁用它 因为我们使用应用程序进行登录 我在 Android Marshmallow 中遇到了 CaptivePortal 类 我
  • Github (SSH) 通过公共 WIFI,端口 22 被阻止

    我目前在公共 WIFI 站点上 但无法使用 SSH 他们可能阻止了该端口 但是 我需要该连接来执行git push ssh T email protected cdn cgi l email protection ssh connect t
  • 使用 C# 配置 Wifi 设置

    如何使用 C 紧凑框架 为 Win Mobile 应用程序配置 Wifi 设置 所以交易是 配置网络 隐藏APP的SSID 使用 TKIP 进行 WPA 身份验证 强制用户和密码 不会提示最终用户进行身份验证 看看智能设备框架 http w
  • 以编程方式连接到 Android wifi 网络

    我正在尝试连接到选定的 wifi 网络 从 UI 但无法连接到它 这是我的代码 private boolean addNetworkAndActivate ScanResult scanResult String password Wifi
  • 在未越狱的 iOS 设备上启用/禁用 Wifi

    我的内部应用程序需要这个 我想在 ios 设备上切换 wifi 任何框架都可用 我尝试了以下代码 但它没有为我提供任何帮助 这不会改变我的 wifi 设置 Class BluetoothManager objc getClass Bluet
  • Android,在网络共享和连接到接入点时检测 WiFi 的本地 IP 和子网掩码

    我需要检测本地IP地址和子网掩码在 WiFi 网络上 在 Android 设备上 为了严格计算本地子网的 UDP 广播地址 当设备连接到接入点时 以下功能正常工作 Only works when NOT tethering WifiMana
  • 是否可以强制通过 Wifi 或 TMobile 网络进行网络流量?

    我想知道使用 G1 是否可以强制网络流量通过 Wifi 或通过 Cell GSM 网络 我需要强制应用程序通过塔式网络连接以获取一些登录信息 这可能吗 有人对这如何可能有任何想法吗 我正在尝试使用 Android SDK 在应用程序内完成此
  • 如何在Android中使用Intent连接已知的WiFi?

    我有这样的事情 wifiNetworks ArrayList
  • Android手机休眠时网络访问

    我正在使用警报组合 设置为AlarmManager 和后台服务定期同步我的应用程序中的数据 我遇到的唯一问题是 当睡眠策略终止 Wi Fi 连接时 同步将不再起作用 有没有办法 唤醒 已进入睡眠状态的 Wi Fi 连接 GMail 以某种方
  • Android 智能手机与其他设备之间的直接 Wifi 通信

    我想在 Android 设备和另一个设备 不是另一个 Android 智能手机 而是使用 C 实现的带 wifi 的设备 之间建立通信 通过 WIFI 我已经发现android提供了直接无线网络 http developer android
  • iPhone 在个人热点模式下不发送网络广播/组播

    根据最近的实证研究结果以及网络上的各种帖子 在启用了个人热点的 iPhone 上运行的应用程序似乎无法将广播和 或多播发送到个人热点的网络上 任何人都可以阐明这个问题的原因吗 应用程序 我有一个用跨平台 C 代码构建的 IOS 应用程序 它
  • Wifi和3G同时使用

    对于我的应用程序 我需要来自本地网络和互联网的数据 本地网络 Wifi 无法连接到互联网 因此我必须使用移动连接 例如 3G 但每当我连接到本地网络时 3G 就会停止 询问三星服务后 无法在 UI 中更改该设置 但他们无法告诉我是否有可编程

随机推荐

  • https网络编程——如何建立利用根证书(凭证)签发建立中继证书(凭证)详解

    参考 如何建立利用根证书 凭证 签发建立中继证书 凭证 详解 地址 https qingmu blog csdn net article details 108221568 spm 1001 2014 3001 5502 目录 在建立中继之
  • oracle 写入 权限设置,改变用户组文件的读写和执行权限

    网上找来一篇关于linux权限修改方式文章 对于我脑子记性不好的人有非常大的帮助 1 更改档案拥有者 命令 chown cfhvR help version user group file 功能 更改文件或者文件夹的拥有者 参数格式 use
  • c++读写文件

    目录 1 写文件 2 读文件 3 二进制方式写文件 4 3 二进制方式读文件 文件类型分为两种 文本文件 文件以文本的ASCII码形式存储在计算机中 二进制文件 文件以文本的二进制形式存储在计算机中 用户一般不能直接读懂它们 操作文件的三大
  • 小型机 PC服务器 性能,pc服务器小型机

    pc服务器小型机 内容精选 换一换 业务测试完成后或不再需要克隆服务器 您可参考本章节删除克隆服务器 删除克隆服务器后 请到弹性云服务器Console界面检查 使用主机迁移服务迁移Windows系统的源端服务器时 要求目的端服务器的磁盘大小
  • 进程间通讯的7种方式

    1 常见的通信方式 管道pipe 管道是一种半双工的通信方式 数据只能单向流动 而且只能在具有亲缘关系的进程间使用 进程的亲缘关系通常是指父子进程关系 命名管道FIFO 有名管道也是半双工的通信方式 但是它允许无亲缘关系进程间的通信 消息队
  • [架构之路-213]- 架构 - 架构设计过程快速概览与在线画图工具

    目录 第一步 业务系统 1 收集目标系统的用户需求 2 定义用例图 第二步 领域建模 1 业务流程定义 2 业务功能分解 3 非功能性架构 支撑架构 第三步 高层架构设计 1 应用展现层 2 业务功能层 3 框架支撑层 第四部 详解架构设计
  • 如何查gmail发件人ip_如何在Gmail中阻止来自特定发件人的电子邮件

    如何查gmail发件人ip There are some email senders from which you never want to hear You can t stop them from sending you emails
  • 瞳孔特征值提取,blink frequency,fixation frequency,saccad extent, pupil diameter等

    进行的分析有 滤波分析 fft psd database py 下面展示一些 内联代码片 import pandas as pd import numpy as np def read file raw path data pd DataF
  • unity 3d 原创制作射击游戏(一)

    目录 实验一 4 1 设计如下UI界面 其中包含了canvas Panel Text Button Image RawImage等UI元素 4 2 实现点击Play按钮转换场景 点击Exit退出游戏的功能 5 3 主界面添加音量滑动杆 静音
  • Flink1.11.0 SQL与hive整合

    一 前言 此次flink sql 整合 hive 主要是能在flink sql中读写hive数据 为flink实时写数据进入hive 构建实时数仓做准备工作 flink 1 11 0 hive 2 3 4 hadoop 2 7 2 主要步骤
  • 使用Python,OpenCV制作不同风格的素描图(正常,漫画,写实风格)

    使用Python OpenCV制作不同风格的素描图 正常 漫画 写实风格 这篇博客将介绍如何使用Python OpenCV制作不同风格的素描图 正常风格 漫画风格 写实风格 1 效果图 原始图 VS 正常风格素描图 VS 漫画风格素描图 V
  • 软件测试缺陷的定义、产生原因、缺陷报告格式、缺陷报告

    软件缺陷的定义 错误 静态存在于说明文档中的表述或编码错误 缺陷 存在于代码中或硬件系统中的错误 BUG 被测对象实际表现与用户显性需求或隐性需求中的差异 功能实现错误 功能实现遗漏 功能实现多余 功能实现不好 失效 因缺陷激发后导致功能的
  • 递归求斐波那契数列

    斐波那契数列 题目描述 编写一个函数 求斐波那契数列的第n项的值 首先 对于斐波那契数列 我们是非常熟悉了 对斐波那契定义为如下 f 0 0 f 1 0 f 2 1 f n f n 1 f n 2 其中n gt 1 对于这种求斐波那契数列第
  • Mockito(三)--完整功能介绍

    强烈建议不熟悉Mockito的同学先看看我写的Mockito 一 入门篇和 二 实例篇之后再来看这篇文章 因为只有看了前两篇文章才明白mockito的本质以及该如何使用它 下面是对Mockito全部功能的介绍 1 使用mockito验证行为
  • 如何从大型模型(BART)fine tune一个小模型及代码实现

    系列文章 如何从大型模型 BART fine tune一个小模型及代码实现 文本自动摘要评价方法 金字塔方法 pytorch 使用BART模型进行中文自动摘要 目录 系列文章 摘要 自动摘要目前的问题 seq2seq 模型 BART Fin
  • VUE 路由守卫 next() / next({ ...to, replace: true }) / next(‘/‘) 说明

    最近因为 next 遇到了不少问题 在这里记录一下 首先是路由守卫 是不是感觉简简单单 beforeEach to from next gt to 要去的路由 from 当前路由 next 放行的意思 但是在看别的项目时常常能看到next
  • Linux网络编程:多路I/O转接服务器(select poll epoll)

    文章目录 一 select 1 基础API select函数 思路分析 select优缺点 2 server c 3 client c 二 poll 1 基础API poll函数 poll优缺点 read函数返回值 突破1024 文件描述符
  • linux指令的那些事

    1 将当前目录加入LD LIBRARY PATH export LD LIBRARY PATH PWD LD LIBRARY PATH 2 给show demo相应的执行权限 chmod x show demo 3 列出show demo文
  • C语言string中常用方法

    方法目录 文章目录 strlen strcat strcmp strcpy strchr strstr strlen 作用 返回字符串s中的字符数 末尾的空格除外 include
  • openwrt上wifi探针的实现----mt7620a+rt2860v2

    最新的实现在这里http blog csdn net lixuande19871015 article details 71601363 什么是wifi探针 看到探针 感觉很高大上的样子 其实就是通过wifi搜集经过这个AP范围的手机的ma