linux热点连上不通,一个WiFi模块开出多个热点(不可连接)-程序员宅基地

技术标签: linux热点连上不通  

ebba4c2706ea

效果图

原理

根据802.11协议,发现热点使用的是广播,并且是明文,所以在混杂模式下发送beacon帧或者在接收到Probe request之后返回Probe response即可模拟一个热点,接收到Association request 或者其它请求可以不用理会,这里的目的只是生成一个假热点,不会实现连接认证等步骤

可以在这里查看相关资料,也可以百度

beacon帧格式

WiFi的帧格式如下:

ebba4c2706ea

802.11frame format

关于每个字段的意义,可以看这篇文章

beacon帧type=0,subtype=8。一个典型的beacon帧分析看这里

关于element ID,简单地,可以看这篇文章

beacon帧举例:

uint8_t beacon_frame[]={

/*FC*/ 0x80 ,0x0 ,

/*DID*/ 0x0 ,0x0 ,

/*MAC Addr*/ 0xff ,0xff ,0xff ,0xff ,0xff ,0xff ,0x8 ,0x9b ,0x4b ,0x92 ,0x3e ,0xcd ,0x8 ,0x9b ,0x4b ,0x92 ,0x3e ,0xcd ,

/*SC*/ 0x30 ,0x4f ,

/*Timestamp*/ 0x80 ,0x51 ,0xcb ,0x68 ,0xd ,0x0 ,0x0 ,0x0 ,

/*BeaconInterval*/0x64 ,0x0 ,

/*CapabilityInfo*/0x31 ,0x0 ,

/*SSID(ElementID(1 Byte)-Length(1 Byte)-Data(Length Bytes))*/

0x0 ,28 ,'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0',

'0','0','0','0','0','0','0','0','0','0','0','0','0',

0x1 ,0x8 ,0x82 ,0x84 ,0x8b ,0x96 ,0xc ,0x12 ,0x18 ,0x24 ,

/*Below same as SSID,elementID different*/

0x3 ,0x1 ,0xb ,

0x5 ,0x4 ,0x1 ,0x2 ,0x0 ,0x0 ,

0x2a ,0x1 ,0x0 ,

0x32 ,0x4 ,0x30 ,0x48 ,0x60 ,0x6c ,

0x30 ,0x14 ,0x1 ,0x0 ,0x0 ,0xf ,0xac ,0x4 ,0x1 ,0x0 ,0x0 ,0xf ,0xac ,0x4 ,0x1 ,0x0 ,0x0 ,0xf ,0xac ,0x2 ,0xc ,0x0 ,

0x2d ,0x1a ,0xed ,0x11 ,0x1b ,0xff ,0xff ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x1 ,0x1 ,0x0 ,0xba ,0x0,

0xa5, 0x10 ,0xf2 ,0x50 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 };

为保证所有的beacon帧都能被识别成一个热点,源mac地址应都不一样,最好信道也不一样,经测试,很多手机会过滤mac相同的beacon,只显示其中一个热点

实现

esp8266

8266支持混杂模式,在这个模式下可以接收和发送有限制的底层数据。station模式下进入混杂模式,发送WiFi beacon帧

注意:不能链接任何wifi,先调用wifi_station_disconnect();断开连接,避免自动连接上了wifi

每次发送要确保上一次已经发送完毕了(发送回调函数调用后)再发送

//汉字:2个字节+'\0'==>每个汉字3字节

uint8_t ssids[4][28]={ {"一、泉眼无声惜细流"},{"二、树阴照水爱晴柔"},{"三、小荷才露尖尖角"},{"四、早有蜻蜓立上头"}};

void send_beacon()

{

static int count=0;

wifi_set_channel(count+5);

beacon_frame[10] = count+1;

beacon_frame[16] = count+1;

os_memcpy(beacon_frame+38,ssids[count],28);

beacon_frame[78] = count+5;

wifi_send_pkt_freedom(beacon_frame,sizeof(beacon_frame),0);

os_printf("send %d bytes data,ssid:%s\n",sizeof(beacon_frame),ssids[count]);

if(++count ==4)

count=0;

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33256233/article/details/117274958

智能推荐

数据存储之SQLite 数据库存储——第一行代码Android学习笔记_第一行代码sqliteopenhelper-程序员宅基地

文章浏览阅读1.3k次。SQLite 是一款轻量级的关系型数据库, 它的运算速度非常快,占用资源很少。存储大量复杂的关系型数据的时候使用。一、创建数据库SQLiteOpenHelper帮助类, 借助这个类就可以非常简单地对数据库进行创建和升级。SQLiteOpenHelper 中有两个抽象方法,分别是onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分_第一行代码sqliteopenhelper

JavaScript同步与异步_js放入定时任务中 是异步吗-程序员宅基地

文章浏览阅读951次,点赞4次,收藏13次。JavaScript的运行机制运行栈JavaScript的执行环境是 单线程 的,所谓单线程,就是每次都只能做一件事,后面的事必须等前面的执行完才可以进行。console.log(1);console.log(2);console.log(3);console.log(4);// 1, 2, 3, 4但是这有一个弊端,如果中途遇到某个操作长时间无法执行完成,那么后面的任务就必须排队等待,这严重影响了整个执行过程,会导致浏览器无响应。为了解决这个问题,JavaScript将任务分为了 ._js放入定时任务中 是异步吗

Qt>常见的容器汇总:QByteArry,QObject_qbytearry属于qobject 数据类型不-程序员宅基地

文章浏览阅读283次。Qt常见模板汇总QByteArray,在串口通讯中经常被使用_qbytearry属于qobject 数据类型不

pandas(3)缺失值重复值以及时间类型的处理_pandas 根据日期回补数据-程序员宅基地

文章浏览阅读1.7k次。1、缺失值的表现形式:不区分大小写 NAN nan NaN 都是空值2、怎么创建缺失值:None 或者np.nan3、pandas处理缺失值判断isnull()检测整张表中的缺失值的数据df.isnull().any(axis=1)判断哪行中有空值 因为是按列的数据统计的 所以axis=1df.isnull().any(axis=0)判断哪列中有空值。。df.notnull().all(axis=1)判断哪些行中有非空值。。df.notnull().all(axis=0)判断哪些列中有非空值_pandas 根据日期回补数据

C语言——白盒测试_c语言白盒测试方法-程序员宅基地

文章浏览阅读2.8w次,点赞12次,收藏34次。测试C语言部分代码_c语言白盒测试方法

随便推点

jQuery 语法实例_jquery 语法是为 html 元素的选取编制的,可以对元素执行某些操作。$(this).hide-程序员宅基地

文章浏览阅读478次。jQuery 语法jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。基础语法是:$(selector).action()美元符号定义 jQuery 选择符(selector)“查询”和“查找” HTML 元素 jQuery 的 action() 执行对元素的操作 示例$(this).hide() - 隐藏当前元素$("p").hide() -_jquery 语法是为 html 元素的选取编制的,可以对元素执行某些操作。$(this).hide()

关于这几天使用IOS的ASYNCSOCKET完成无限后台的过程_ios gcdasyncsocket 进入后台运行-程序员宅基地

文章浏览阅读1k次。这几天用了下ASyncSocket完成前后台即时通讯,当时有想过用消息推送的技术实现的,可是后来想到消息推送的不可靠性还是算了。于是使用了tcp/ip实现后台主动发送数据给前台的功能。最开始设计后台的时候,我有考虑到数据量比较大的问题,所以数据大的时候我会使用分包和组包的功能去实现。TCP/IP在传输数据的时候,一般不会大于1500字节,所以我每512字节分了一个包。然后当一次性数_ios gcdasyncsocket 进入后台运行

linux注册表+快捷健+tracker_linux 系统注册表位置-程序员宅基地

文章浏览阅读1.4k次。今天没事,把以前零零散散的从网上学的知识或是技巧整理一下,以防时间长了忘了。做的是另一类工作,真的没多少时间学习linux相关的东西了......==============================================1.gconf-editor ----->linux下的注册表,可以修改一些东西,并定义快捷键2.Linux下的快捷键(这个可以在ubuntu的系统-->首选项_linux 系统注册表位置

安卓之读取raw文件夹下得txt文件_android studio raw 文本-程序员宅基地

文章浏览阅读4.7k次,点赞2次,收藏7次。Demo:读取res/raw下存放的一个text文件_android studio raw 文本

风云变幻,且看HiWork如何帮助团队更好地解决异地沟通问题!_hiwork电脑版-程序员宅基地

文章浏览阅读979次。HiWork 是基于云存储的团队即时沟通协作平台,可以根据项目、话题甚至兴趣等建立话题组,沟通记录以及共享文件永久云端保存。新加入的团队成员能够看到团队成员的沟通历史及文件共享信息。通过电脑及手机端都可以随时随地进行沟通以及沟通历史记录查看,会对整个项目的过程以及目前所处阶段有一个全面细致地了解,这样置身于可以随时随地了解沟通上下文的环境中,有效避免了产生理解偏差或沟通准确度递减问题。_hiwork电脑版

scrapy存储到MySQL数据库_使用scrapy爬取的数据存储到mysql数据库基本操作-程序员宅基地

文章浏览阅读5.2k次。class MysqlPipeline(object): def __init__(self, host, database, user, password, port): self.host = host self.database = database self.user = user self.password = pa..._使用scrapy爬取的数据存储到mysql数据库基本操作

推荐文章

热门文章

相关标签