news 2026/9/14 16:41:06

Flipper Zero BadUSB 侦察脚本实战解析:用 USB_And_Harddrive_Information 收集目标主机 USB 与硬盘信息

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flipper Zero BadUSB 侦察脚本实战解析:用 USB_And_Harddrive_Information 收集目标主机 USB 与硬盘信息

Flipper Zero BadUSB 侦察脚本实战解析:用 USB_And_Harddrive_Information 收集目标主机 USB 与硬盘信息

【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper

本篇技术指南聚焦于 Flipper Zero 的 BadUSB 应用场景,深入拆解 UNC0V3R3D-BadUSB-Collection 中 Exfiltration/USB_And_Harddrive_Information 目录下的侦察脚本。读完本文,你将掌握该脚本的完整运行流程、每一行 DuckyScript 与 PowerShell 的底层逻辑、必须手工修改的配置项,以及如何在授权环境下安全地测试与扩展它。

脚本概览:它到底做了什么

USB_And_Harddrive_Information.txt是一个用DuckyScript 1.0编写的 Flipper Zero BadUSB 载荷(集合 README 明确说明该仓库所有脚本均基于 DuckyScript 1.0)。它的核心任务是:当目标 Windows 电脑插入 Flipper Zero 并被识别为键盘后,自动完成以下三件事——

  1. 打开 PowerShell:以管理员权限启动 PowerShell 会话;
  2. 获取硬件信息:枚举目标电脑上当前连接以及曾经连接过的 USB 卷(win32_volume),提取驱动器名称、卷标与剩余空间;
  3. 保存信息到文件:将结果渲染成一份带样式的 HTML 报告,保存到用户目录下新建的文件夹中,最后压缩成 ZIP 包,并尝试通过Compress-Archive写入指定路径。

仓库中与该脚本同目录的 readme.md 将脚本归类为Exfiltration(数据外传)类别,作者为UNC0V3R3D,版本为 1.0。脚本头部注释也给出了同样的元信息:

REM Author: UNC0V3R3D (UNC0V3R3D#8662 on Discord) REM Description: Saves some general Information about the USB and Harddrives REM Version: 1.0 REM Category: Exfiltration

需要强调的是,该脚本所在的整个集合在 README.md 中被明确声明为仅供教育目的使用,并要求使用者在使用任何脚本前获得授权、建议在虚拟机中测试。本文所有分析均面向学习与研究场景。

上手前的必备准备

部署到 Flipper Zero

按照集合 README.md 的安装说明,将脚本部署到 Flipper Zero 的流程为:

  1. USB_And_Harddrive_Information.txt拷贝到 Flipper Zero SD 卡的badusb目录;
  2. 使用 qFlipper 应用(或手机端 Flipper Zero 应用)连接设备,将文件拖入SD Card --> badusb
  3. 在 Flipper 上进入BadUSB分类,选择该脚本并连接目标电脑后,按中间按钮开始执行。

唯一的强制修改点:输出路径

readme 中明确强调:该脚本不是即插即用的(not plug and play),必须修改一行配置才能正常工作。需要改动的是脚本最后一行 PowerShell 命令中的目标路径:

Compress-Archive -Path $fileSaveDir -DestinationPath PATH TO SAVE FILE HERE\HEREresults-68597243.zip ; exit

请将PATH TO SAVE FILE HERE替换为你希望 ZIP 包落盘的绝对路径,例如:

Compress-Archive -Path $fileSaveDir -DestinationPath C:\Users\Public\Documents\HEREresults-68597243.zip ; exit
  • 若路径不存在或目标无写权限,Compress-Archive会直接报错,压缩步骤将失败(但 HTML 报告仍已写入用户目录,信息并未丢失);
  • -DestinationPath.zip结尾,Compress-Archive会自动创建该 ZIP 文件;
  • 文件名中的68597243是一串随机数后缀,用于在众多报告中做唯一区分,可以保留也可以自行更换。

运行流程逐步拆解

阶段一:键盘模拟与 UAC 提权(DuckyScript 部分)

脚本的前半段完全由 DuckyScript 命令构成,负责把 Flipper Zero 模拟成键盘完成一系列按键注入:

DELAY 750 WINDOWS d DELAY 900 WINDOWS r DELAY 900 STRING powershell Start-Process powershell -Verb runAs ENTER DELAY 750 LEFTARROW ENTER DELAY 900 ALT y DELAY 900 GUI UP DELAY 900

逐行含义如下:

命令作用为什么需要
DELAY 750等待 750ms让目标系统在设备插入后完成 USB 枚举与键盘驱动加载,避免后续按键丢失
WINDOWS d按下 Win+D显示桌面、收起焦点窗口,保证后续按键注入到干净的环境
WINDOWS r按下 Win+R打开"运行"对话框
STRING powershell Start-Process powershell -Verb runAs逐字符输入命令通过Start-Process -Verb runAs请求以管理员权限启动一个新的 PowerShell 进程
ENTER回车执行上面的命令,触发 UAC 提权弹窗
DELAY 750等待等待 UAC 弹窗出现
LEFTARROW/ENTER左箭头 + 回车从脚本结构看,用于在 UAC 弹窗上定位并确认"是"按钮,属于对提权弹窗的交互处理
ALT yAlt+Y键盘快捷方式,确认 UAC 的"是(Yes)"选项(UAC 弹窗在键盘焦点下支持 Alt+Y 确认)
GUI UP按下 Win+Up将焦点窗口(即刚打开的管理员 PowerShell 窗口)最大化,为后续输入命令做准备

这一阶段的要点是时序控制:UAC 弹窗出现速度随系统配置不同而波动,脚本在此处安排了DELAY 750DELAY 900的多段等待。如果你的测试环境弹出速度更慢,可以按集合 README 的排障建议,把相关DELAY数值调大(例如 900 → 1200)。

阶段二:收集与生成 HTML 报告(PowerShell 部分)

提权完成后,脚本通过STRING命令将一整条 PowerShell 脚本逐字符注入管理员会话。这条长命令是整个脚本的数据收集核心,可以拆解为四个步骤。

第 1 步:创建带时间戳的报告目录

$folderDateTime = (get-date).ToString('d-M-y HHmmss'); $userDir = (Get-ChildItem env:\userprofile).value + '\Walkuer Ghost ' + $folderDateTime; $fileSaveDir = New-Item ($userDir) -ItemType Directory;
  • (get-date).ToString('d-M-y HHmmss')生成形如13-9-26 085930的时间戳,确保每次运行生成独立目录,不互相覆盖;
  • 报告目录会被创建在当前 Windows 用户目录(%USERPROFILE%)下,命名形如C:\Users\<用户名>\Walkuer Ghost 13-9-26 085930

第 2 步:定义 HTML 样式并初始化报告文件

$style = '<style> table td{padding-right: 10px;text-align: left;}#body {padding:50px;...}</style>'; $Report = ConvertTo-Html -Title 'Recon Report' -Head $style > $fileSaveDir'/ComputerInfo-68597243.html'; $Report = $Report + '<div id=body><h1>Walkuer Ghost Report</h1><hr size=2><br><h3> Generated on: $Date </h3><br>';
  • 内嵌的 CSS 定义了#body#left#right#center四个区块的布局(浮动分栏、灰色背景、滚动容器),让最终 HTML 具备可读性;
  • ConvertTo-Html -Title 'Recon Report'生成带 HTML 头与<body>骨架的初始内容并写入ComputerInfo-68597243.html
  • 随后追加报告标题 "Walkuer Ghost Report" 与生成时间。注意这里的时间是通过$Report = $Report + '... $Date ...'单引号字符串拼接的,从实现细节看$Date在单引号内不会被展开,最终 HTML 中这一处显示的是字面量$Date而非实际时间(属于脚本作者遗留的小瑕疵)。

第 3 步:枚举 USB 卷并循环写入表格

这是脚本的数据采集主体,通过后续多条STRING指令逐行注入:

$u = 0; $allUsb = @(get-wmiobject win32_volume | select Name, Label, FreeSpace);

Get-WmiObject win32_volume会枚举系统中的所有卷(Win32_Volume 实例),包括本地硬盘卷、U 盘、SD 卡等,并筛选出Name(挂载路径/驱动器号)、Label(卷标)与FreeSpace(剩余字节数)三个属性。

随后的do { ... } while ($u -lt $allUsb.Count)循环对每个卷生成一行 HTML 表格记录:

do { $gbUSB = [math]::truncate($allUsb[$u].FreeSpace / 1GB); $Report = $Report + '<tr><td>Drive Name: </td><td>' + $allUsb[$u].Name + $allUsb[$u].Label + '</td><td>Free Space: </td><td>' + $gbUSB + 'GB</td></tr>'; Write-Output $fullUSB; $u ++; } while ($u -lt $allUsb.Count); $Report = $Report + '</table></div>';
  • [math]::truncate($allUsb[$u].FreeSpace / 1GB)把字节数换算成整数 GB 显示;
  • 每个卷输出一行:驱动器名 + 卷标 + 剩余空间;
  • 循环结束后追加</table></div>收尾;
  • 两处实现细节值得注意:一是Write-Output $fullUSB引用了脚本中从未赋值的变量$fullUSB,从代码逻辑看这行仅输出空值、不影响结果,属于冗余代码;二是从数据源看,win32_volume并不区分"当前插入的 USB"与"曾经连接过的硬盘"——它返回的是系统当前可见的所有卷,这与 readme 描述的"USB 和硬盘信息"语义一致,但若想严格过滤出可移动磁盘,还需要额外按DriveType属性(如DriveType=2表示可移动磁盘)做过滤,这是可以自行扩展的方向。

第 4 步:落盘与压缩

$Report >> $fileSaveDir'/ComputerInfo-68597243.html'; Compress-Archive -Path $fileSaveDir -DestinationPath PATH TO SAVE FILE HERE\HEREresults-68597243.zip ; exit
  • 使用>>将累计的$Report内容追加回 HTML 文件,形成完整的报告;
  • Compress-Archive -Path $fileSaveDir把整个带时间戳的报告目录压缩为 ZIP,输出到你修改过的-DestinationPath
  • 命令末尾的; exit关闭管理员 PowerShell,尽量不留痕迹。

输出产物解读

脚本执行成功后会在目标电脑上留下两类产物:

  1. HTML 侦察报告:位于%USERPROFILE%\Walkuer Ghost <时间戳>\ComputerInfo-68597243.html,包含一个标题为 "Walkuer Ghost Report" 的表格,逐行列出了每个卷的驱动器名、卷标和剩余空间(GB);
  2. ZIP 压缩包:位于你配置的-DestinationPath,内容即上述报告目录。

从实战角度看,这份报告的价值在于快速盘点目标主机的存储拓扑:哪些卷存在、卷标是什么(卷标常包含用户对盘符用途的命名习惯)、各卷剩余空间大小,这些信息可以为进一步的侦察决策提供参考。

同系列脚本与扩展阅读

USB_And_Harddrive_Information位于集合的 Exfiltration 分类下,与该分类中的其他侦察脚本共用同一套"DuckyScript 提权 + PowerShell 收集 + HTML 报告 + ZIP 压缩"骨架,可以对照学习:

  • General_PC_Information:收集操作系统、序列号、CPU、内存、显卡、防火墙状态等整机信息;
  • Win_User_Info:收集当前 Windows 用户信息;
  • Document_Exfil/Network_Exfiltration/SAMexfil:文档、网络配置与 SAM 数据的外传。

如果你想深入这套脚本的编写风格,集合 README.md 还提供了重要的方法论:该仓库约 97% 的 DuckyScript 都依赖 PowerShell 完成实际工作;脚本中的REM注释行会解释每一步的用途;遇到 "ERROR: line 5" 之类的报错时,优先检查文本中是否存在多余空行、LOCALE指令或行首空格,并适当增大DELAY数值。

安全与合规边界

  • 该脚本会触发UAC 管理员提权弹窗,并创建/压缩文件、修改系统目录,属于高权限操作;
  • 集合 README.md 与 readme 均强调:仅供教育目的,必须先获得目标系统所有者授权,作者不对使用后果负责;
  • 强烈建议在隔离的虚拟机中先跑通流程、验证你修改的-DestinationPath是否正确,再考虑其他场景;
  • 在未授权的机器上运行此类脚本,可能违反当地法律法规,请在合法合规的测试环境中使用本文涉及的全部技术。

【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 16:38:49

工业监控上位机开发:MVP架构与Modbus TCP优化实践

1. 工业监控上位机开发背景与需求 在自动化生产线中&#xff0c;力位移曲线监控是质量检测的核心环节。以汽车零部件压装工艺为例&#xff0c;每秒钟需要采集上百个压力传感器和位移传感器的数据点&#xff0c;通过实时曲线比对确保装配质量。传统方式依赖专用仪器&#xff0c;…

作者头像 李华
网站建设 2026/9/14 16:38:35

Flutter与鸿蒙结合:pro_mpack二进制序列化优化实践

1. 项目背景与核心价值 在鸿蒙生态快速发展的当下&#xff0c;Flutter作为跨平台开发框架与鸿蒙系统的结合越来越紧密。pro_mpack作为Flutter生态中的高性能二进制序列化库&#xff0c;其鸿蒙化适配对于提升分布式场景下的数据传输效率具有关键意义。MessagePack协议相比传统JS…

作者头像 李华
网站建设 2026/9/14 16:35:29

PyTorch Tensor 完全指南:从创建、广播到自动求导的踩坑总结

学深度学习绕不开的第一个基础概念&#xff0c;就是 Tensor。我当初翻《动手学深度学习》&#xff08;D2L&#xff09;的时候&#xff0c;前面数据操作和自动微分这几章看着简单&#xff0c;实际动手敲却踩了不少坑。后来把 Tensor 这部分彻底吃透&#xff0c;再回头看模型训练…

作者头像 李华
网站建设 2026/9/14 16:33:25

用户画像与协同过滤双路音乐推荐系统实战

简介&#xff1a;本资源是一个面向人工智能初学者与项目实践者的音乐推荐系统完整工程&#xff0c;聚焦用户画像构建与协同过滤算法融合应用&#xff0c;解决个性化音乐推荐中的冷启动与精度提升问题。压缩包共74个文件&#xff0c;含30个Python核心模块&#xff08;如recommen…

作者头像 李华