低成本打造便携式无线网络攻防学习环境
1.摘要
一直以来, 无线网络安全问题与大众的个人隐私息息相关, 例如: 为了节省流量, 连接到一个看似安全的免费WiFi, 在使用过程中泄露自己的各类密码信息甚至银行卡账号密码信息。随着家用智能电器的普及, 家中的各类智能设备连入家里的无线网络, 却突然失灵, 甚至无法正常连接上网络。本文将从研究的角度搭建一个专门用于无线网络安全探索的实验环境。
2.设备选型
要了解无线攻击原理, 很有必要从攻击者的需求角度来模拟, 从硬件设备选择上, 普通电脑或服务器、虚拟机已经无法满足实际需求, 一款能够满足攻防技术复现还原的设备至少需要满足以下几点:
-
可便携 - 设备体积偏小、携带、安装、拆卸均方便。
-
可编程 - 设备上能够运行自主开发的控制程序, 由此对硬件性能有一定要求。
-
可维护 - 能够方便提供软、硬件接口, 方便问题查找和维护。
-
可续航 - 为了能够持续产生效果, 需要具备一定的连续工作能力, 包括: 有电源和无电源的情况都要考虑。
-
可覆盖 - 主要针对信号强度, 普通电脑的无线网卡虽也可满足需求, 但信号范围覆盖有限会导致某些功能不稳定。
2.1 设备主体选型
针对以上特点, 这款无线硬件主体设备最终决定采用:Raspberry Pi 4B(树莓派), 其参数和需求满足对应关系如下:
| 硬件型号: | Raspberry Pi 4B | |
|---|---|---|
| 硬件尺寸: | 88 * 58 * 19.5 毫米 | 满足便携式需求 |
| 中央处理器: | 1.5GHz,四核Cortex A-72 | 满足可编程需求 |
| 存储空间(最高): | 64GB | 满足可编程需求 |
| 内存空间(最高): | 8GB | 满足可编程需求 |
| 无线网络: | 802.11 2.4GHz/5GHz双频 | 满足可维护需求 |
| 有线网络: | USB 2.0前兆以太网(300Mb/s) | 满足可维护需求 |
| 供电接口 | micro usb(5V 2.5A) | 支持外接USB电池供电,满足续航需求。 |
| USB接口 | USB 2.0 * 2 / USB 3.0 * 2 | 支持更丰富的外接设备。 |
| HDMI接口 | 可接显示器 | 方便维护 |
Raspberry Pi 4B设备除了拥有容量足够的磁盘空间和内存之外,还提供众多第三方接口。设备提供了四个USB接口,可以即插即用鼠标、键盘、U盘、移动硬盘等设备;设备提供了HDMI接口,能够将设备运行信息投到显示器上操作,方便维护。
2.2 天线选型
设备的信号接收范围决定了扫描的WiFi范围和数量,Raspberry Pi 4B设备虽然自带无线网卡,但集成的无线网卡接收无线信号范围有限,最多接收半径不超过10米,经过选型,最终选择了一款第三方基于USB接口带外接天线的无线网卡,该无线网卡参数详情如下:
| 指标名称 | 指标参数 | 需求指标 |
|---|---|---|
| 信号覆盖半径 | 50米 | 符合 |
| 天线长度 | 106mm | 符合 |
| 系统兼容性 | 支持即插即用 | 符合 |
| USB体积 | 15mm x 37mm | 符合 |
| 支持监听模式 | 监听和正常模式切换 | 符合 |
其原型图如下:

该天线是一款带USB头的即插即用天线, 支持大多数Linux系统, 与树莓派主体可以完美结合, 如图:

注意: 在选购外接无线网卡时, 一定要问清楚是否支持网卡监听模式, 关于监听模式参考文章后面的第四部分。
2.3 续航设备选型
由于树莓派自带电源接口和电源, 这里的续航主要针对无电源供电情况, 选择了一个10000毫安的电池, 可连续工作十几个小时,电池绑定在一个小型嵌入式板上, 通过USB供电, 如图:

与天线比起来, 这款电池和电池板不像一款产品, 但也临时没有找到便宜的可替代品, 还好体积不算太大, 便携性也能满足实际需求。
3.操作系统安装
3.1 操作系统选择
根据实际需求, 目前最合适的系统莫过于Kali系统, 打开网址: Get Kali | Kali Linux , 这里可以找到专门针对树莓派的最新Kali系统镜像, 如图:

3.2 操作系统安装
3.2.1 系统烧录工具安装
树莓派没有硬盘, 替而代之的是一个很小的SDCard卡片, 因此安装Kali系统首先要将系统image镜像烧录到SdCard中。
系统烧录工具主要包括:PanasonicSDFormatter和balenaEtcher。其中,PanasonicSDFormatter是SDCard格式化工具,能够将SDCard中的数据快速清空,如果是新系统换旧,则需要先格式化之前的数据。balenaEtcher是系统烧录工具,能够将操作系统镜像烧录到SDCard中。
将PanasonicSDFormatter下载解压之后进入文件夹, 该工具是绿色免安装版, 直接双击SDFormatter.exe即可看到主界面,如图:

balenaEtcher下载解压后同样直接双击exe开始安装, 无需任何设置, 点击"我同意"后直接进入安装流程, 主界面如下:

3.2.2 SDCard格式化
将树莓派自带的SDCard插入到USB读卡器中(读卡器树莓派自带), 再将USB读卡器插入到操作电脑中, 经过少许等待, 会发现系统多出两个盘符, 如图:

打开工具PanasonicSDFormatter, 在Drive中选择Boot之外的那个盘符, 这里也就是G盘,直接点击"格式化"按钮进行格式化,如图:

出现以下界面说明格式化成功,如图:

此时再查看SDCard的盘符, 可以发现已经可以看到SDCard的容量, 接下来便可以开始烧录系统。
3.2.3 系统镜像烧录
打开工具balenaEtcher,点击按钮"Select image",选择下载到本地的kali镜像,之后再点击“Flash”按钮开始烧录,如图:

烧录过程要等待比较长一段时间, 等进度到达100%后, 便可以拔出读卡器, 将SDCard插入到树莓派底部插槽中,通电进入系统。
在树莓派中启动的Kali系统启动界面如下:

4.设置网卡监听模式
无线网卡监听模式是指无线网卡可以接收所有经过它的数据流的工作方式, 通常用于网络发现。当前扫描无线热点之前, 必须将无线网卡设置为监听模式。然而,并不是所有无线网卡默认支持监听模式, 可以使用工具: airmon-ng测试当前的无线网卡是否支持监听模式, 首先直接在Kali系统中运行以下命令:
# airmon-ng
命令执行后,显示以下网卡名称:

注意:上图中的rt2800usb就是我们选购的第三方网卡,是通过USB接入, airmon-ng命令能够识别的网卡均支持网卡监听模式。
接着输入以下命令,尝试开启无线网卡的监听模式:
# airmon-ng start wlan0
注意: 只有支持监听模式的网卡才能启动成功, 以下是启动监听模式成功后的:

到这里, 监听模式启动完毕, 下面就可以开始扫描周边的无线热点了。
5.启动无线扫描
无线扫描主要使用Kali自带的air-dump-ng来完成, 例如,使用以下命令开启抓包:
# airodump-ng 监听网卡名称 --beacons -w 抓包文件保存路径
该命令执行后, 程序不会退出, 会持续进行扫描, 并且会生成抓包文件,如图:

其中, .csv文件中保存了扫描到的无线热点信息,如图:

除此之外, 还能获取到连接到Wifi的客户端信息,如图:

6.总结
到此, 一个属于我们自己的便携式无线网络攻防环境搭建完成, 后面可以以此环境做很多研究工作,包括无线攻防技术研究, 开发自己的程序对数据进行分析和处理, 以及协议分析及元数据获取等等。
相关文章:
低成本打造便携式无线网络攻防学习环境
1.摘要 一直以来, 无线网络安全问题与大众的个人隐私息息相关, 例如: 为了节省流量, 连接到一个看似安全的免费WiFi, 在使用过程中泄露自己的各类密码信息甚至银行卡账号密码信息。随着家用智能电器的普及, 家中的各类智能设备连入家里的无线网络, 却突然失灵, 甚至无法正常连…...
Qt|QLabel显示刷新图像数据
参考:QImage、QClipboard(https://zhuanlan.zhihu.com/p/649611141) 获取图像数据并转换为QImage unsigned char *data 图像数据; QImage show_image_ QImage(data, imgInfo.width, imgInfo.height, imgInfo.width, QImage::Format_Grays…...
Java类加载那些事
Java源文件(.java文件)被编译器编译后变为字节码形式的类文件(.class文件),Java类加载的过程就是JVM加载.class的二进制文件并且放到内存中,将数据放到方法区,并且在堆区构造一个java.lang.clas…...
QSplitter分裂器
QSplitter QSplitter 是 Qt 框架提供的一个小部件(widget),用于在用户界面中创建可拖动的分割窗口,允许用户调整子部件的大小和布局。它可以将父部件分割为多个可调整大小的子部件,使用户能够自定义界面的布局和大小。…...
pgsql 时区查看和修改
建议使用UTC时区,或者和linux、后端程序的时区保持一致,否则容易出现时间的差别。 pgsql的时间字段有一个带时区的timestamp with time zone,如果业务涉及多个时区,建议使用这个字段。 相关链接参考: linux时区设置和…...
el-table 表格表头、单元格、滚动条样式修改
.2023.11.21今天我学习了如何对el-table表格样式进行修改,如图: 运用的两个样式主要是 1.header-cell-class-name(设置表头) 2.class-name(设置行单元格) 代码如下: <el-table :data&quo…...
dockerDesktop使用方法
安装软件 装在C盘会容易满,可以装在D盘, "path\to\Docker Desktop Installer.exe" install -accept-license --installation-dirD:\Docker\Docker --wsl-default-data-rootD:\Docker\data并且在软件的设置的Docker Engine里添加阿里镜像源…...
[Ubuntu]RT810xE--网线已拔出--问题解决
0 环境 ubuntu 22.04.3 LTSDell Inspiron 15 5547windows/ubuntu 双系统 1 问题说明 Dell 笔记本安装的 Ubutun 系统,有线网络无法使用,一直显示 “网线已拔出”。 网上一查,才了解到主要原因:网卡驱动安装错误。系统默认安装…...
美国DDoS服务器:如何保护你的网站免遭攻击?
在当今数字化时代,互联网已经成为人们生活中不可或缺的一部分。随着互联网的普及和发展,网络安全问题也日益严重。其中,DDoS攻击是目前最常见和具有破坏性的网络攻击之一。那么,如何保护你的网站免遭DDoS攻击呢?下面将介绍…...
R语言数据缩放-1到1
目录 普通scale -1到1限定范围scale 普通scale R语言实战:scale()函数 - 知乎 (zhihu.com) scale(x, center TRUE, scale TRUE) 过程: 对每个变量(列)计算平均值(mean)和标准…...
C语言第二十五弹--打印菱形
C语言打印菱形 思路:想要打印一个菱形,可以分为上下两部分,通过观察可以发现上半部分星号的规律是 1 3 5 7故理解为 2对应行数 1 ,空格是4 3 2 1故理解为 行数-对应行数-1。 上半部分代码如下 for (int i 0;i < line;i){//上…...
PyTorch微调终极指南1:预训练模型调整
如今,在训练深度学习模型时,通过根据自己的数据微调预训练模型来进行迁移学习(transfer learning)已成为首选方法。 通过微调这些模型,我们可以利用他们的专业知识并使它们适应我们的特定任务,从而节省宝贵…...
Uptime Kuma 企业微信群机器人告警
curl https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa \-H Content-Type: application/json \-d {"msgtype": "text","text": {"content": "hello world"}}企业微信群机器人ke…...
【网络安全】-网络安全的分类详解
文章目录 介绍1. 网络层安全(Network Layer Security)理论实操使用VPN保护隐私 2. 应用层安全(Application Layer Security)理论实操使用密码管理器 3. 端点安全(Endpoint Security)理论实操定期更新防病毒…...
php利用ZipArchive类实现文件压缩与解压
github项目 1、Linux 安装zlib库 cd /usr/local/src wget https://zlib.net/current/zlib.tar.gz tar -zxvf zlib.tar.gz cd zlib-1.3 ./configure make && make install 2、zlib的使用 $all_name all.zip;// 创建ZipArchive对象$zip_all new ZipArchive();if ($z…...
Java面试附答案:掌握关键技能,突破面试难题!
问题:什么是大O表示法?它在Java中的应用是什么? 回答: 大O表示法是一种用来衡量算法复杂度的方法,它描述了算法的时间复杂度和空间复杂度的增长速度。它使用符号O(n)来表示算法的渐进时间复杂度,其中n表示…...
API自动化测试:如何构建高效的测试流程
一、引言 在当前的软件开发环境中,API(Application Programming Interface)扮演了极为重要的角色,连接着应用的各个部分。对API进行自动化测试能够提高测试效率,降低错误,确保软件产品的质量。本文将通过实…...
字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan…...
SAP_ABAP_面试篇_关于Function Module函数的三种处理类型
关于 Function Module 这个技术点,在面试过程中一般会考察以下几个问题: 1 函数处理类型的更新模式 一般会问到异步和事务(逻辑单元 LUW),异步函数的调试方式、SM13监控更新函数的执行过程(V1 与 V2 模式…...
CentOS简介、ISO类型、CentOS7安装与配置以及远程连接。
目录 1.CentOS简介 2.CentOS ISO类型 3.CentOS7安装与配置 4.远程连接 1.CentOS简介 CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
软件工程 期末复习
瀑布模型:计划 螺旋模型:风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合:模块内部功能紧密 模块之间依赖程度小 高内聚:指的是一个模块内部的功能应该紧密相关。换句话说,一个模块应当只实现单一的功能…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
webpack面试题
面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...
理想汽车5月交付40856辆,同比增长16.7%
6月1日,理想汽车官方宣布,5月交付新车40856辆,同比增长16.7%。截至2025年5月31日,理想汽车历史累计交付量为1301531辆。 官方表示,理想L系列智能焕新版在5月正式发布,全系产品力有显著的提升,每…...
[C++错误经验]case语句跳过变量初始化
标题:[C错误经验]case语句跳过变量初始化 水墨不写bug 文章目录 一、错误信息复现二、错误分析三、解决方法 一、错误信息复现 write.cc:80:14: error: jump to case label80 | case 2:| ^ write.cc:76:20: note: crosses initialization…...
