Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
P4wnP1_aloa — MaMe82 开发的 P4wnP1 A.L.O.A. 是一个框架,它可以将 Rapsberry Pi Zero W 转变为一个灵活、低成本的平台,用于渗透测试、红队行动和物理安全测试……或者说,变成一台"小型攻击设备"。 | Kitploit
工具/GitHubGitHub/rogandawes/p4wnp1_aloa
Wi-Fi审计蓝牙安全漏洞利用框架网络映射硬件黑客渗透测试红队Payload 开发
GitHubrogandawes/p4wnp1_aloa

P4wnP1_aloa

MaMe82 开发的 P4wnP1 A.L.O.A. 是一个框架,它可以将 Rapsberry Pi Zero W 转变为一个灵活、低成本的平台,用于渗透测试、红队行动和物理安全测试……或者说,变成一台"小型攻击设备"。

查看仓库
4.4k580292年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

P4wnP1 A.L.O.A.

P4wnP1 A.L.O.A. 由 MaMe82 开发,是一个将树莓派 Zero W 转变为灵活、低成本的渗透测试、红队和物理接触平台的框架……或者说是一个“小型进攻型设备”。

0. 如何安装

最新镜像可在 Releases 标签下找到。

访问全新 P4wnP1 A.L.O.A. 安装最简单的方式是通过生成的 WiFi 使用 Web 客户端(预共享密钥为 MaMe82-P4wnP1,URL 为 http://172.24.0.1:8000)或 SSH(默认密码 toor)。

1. 功能特性

即插即用 USB 设备仿真

  • USB 功能:
    • USB 以太网(RNDIS 和 CDC ECM)
    • USB 串口
    • USB 大容量存储(U盘或 CD-ROM)
    • HID 键盘
    • HID 鼠标
  • 运行时重新配置 USB 栈(无需重启)
  • 检测连接/断开,使 P4wnP1 A.L.O.A. 能够在外部供电下保持通电,并在仿真 USB 设备连接到新主机时触发操作
  • 无需处理不同的内部以太网接口,因为 CDC ECM 和 RNDIS 连接到虚拟桥接
  • USB 设置配置模板的持久化存储与加载

HIDScript

  • 替代功能有限的 DuckyScript
  • 复杂的脚本语言,用于自动化键盘和鼠标
  • 最多可同时运行 8 个 HIDScript 任务(一个任务持续抖动鼠标,其他任务可按需启动,无缝执行任意鼠标和按键注入)
  • HIDScript 基于 JavaScript,并提供了常用库,支持更复杂的脚本(函数调用、使用 Math 进行鼠标计算等)
  • 键盘
    • 基于 UTF-8,不受 ASCII 字符限制
    • 可通过读取主机键盘的 NUM LOCK、CAPS LOCK 和 SCROLL LOCK 的 LED 状态变化(如果目标操作系统在所有连接的键盘上共享 LED 状态,OSX 不适用)来响应主机真实键盘的反馈
    • 在 HIDScript 中根据 LED 反馈做出分支决策
  • 鼠标
    • 相对移动(快速但不精确)
    • 步进相对移动(较慢但准确……以 1 DPI 步长移动鼠标)
    • 在 Windows 上支持绝对定位(已知目标屏幕尺寸时可实现像素级精确)
  • 键盘和鼠标不仅由同一种脚本语言控制,还可以在同一个脚本中同时使用,从而结合两者完成仅靠键盘或鼠标无法实现的目标
  • 当前支持的语言布局:br、de、es、fr、gb、it、ru 和 us

蓝牙

  • 完整接口对接 Bluez 栈(目前不支持远程设备发现/连接)
  • 可运行蓝牙网络接入点(NAP)
  • 可自定义配对(PIN 码传统模式或 SSP)
  • 支持高速模式(利用 802.11 帧实现接近 WiFi 的传输速率)
  • 运行时重新配置蓝牙栈
  • 注意:PANU 也支持,但当前未启用(不支持远程设备连接)
  • 蓝牙设置配置模板的持久化存储与加载

WiFi

  • 修改后的固件(使用 Nexmon 框架构建)
    • 支持 KARMA(对远程设备探测的接入点伪造合法应答并允许关联)
    • 广播额外的信标,仿真多个 SSID
    • WiFi 隐蔽信道
    • 注意:包含 Nexmon 传统监听模式,但 P4wnP1 不直接支持。监听模式仍有缺陷,更改配置时可能导致固件崩溃
  • 简易的接入点配置
  • 简易的站点模式配置(连接到现有 AP)
  • 故障切换模式(如果无法连接目标接入点,则启动自己的接入点)
  • 运行时重新配置 WiFi 栈
  • WiFi 设置配置模板的持久化存储与加载

网络

  • 易于配置各接口的以太网参数:
    • 蓝牙 NAP 接口
    • USB 接口(如果启用 RNDIS/CDC ECM)
    • WiFi 接口
  • 支持每个接口专用的 DHCP 服务器
  • 支持 DHCP 客户端模式
  • 手动配置
  • 每个接口配置模板的持久化存储与加载

工具

这里不多赘述,P4wnP1 A.L.O.A. 基于 KALI Linux,因此一切所需工具都已就绪(或可通过 apt 安装)

通过 CLI(需要时可远程)进行配置与控制

  • 以上所有功能均可通过 CLI 客户端进行配置
  • P4wnP1 核心服务是一个单一二进制文件,作为 systemd 单元运行,保留运行时状态
  • CLI 客户端通过 RPC(具体为 gRPC)与核心服务交互,以改变核心状态
  • 由于 CLI 采用 RPC 方式,因此也可用于远程配置
  • 通过 SSH 访问 P4wnP1 时,CLI 客户端已就绪,等待你的命令(或你的 Tab 补全功夫)
  • CLI 使用 Go 编写(大部分代码也是 Go),因此可在大多数主流平台和架构上编译

因此,如果你想在远程 Windows 主机上使用批处理文件配置 P4wnP1……没问题:

  1. 为 Windows 编译客户端
  2. 确保你能以某种方式连接到 P4wnP1(蓝牙、WiFi、USB)
  3. 在客户端命令中添加 host 参数
  4. ……像本地访问一样使用 CLI 即可

通过 Web 客户端进行配置与控制

尽管最初并未计划,P4wnP1 A.L.O.A. 现在可以通过 Web 客户配置。 即便最初未规划,这个客户端却发展成了一款不错的软件。实际上,它已成为配置 P4wnP1 A.L.O.A. 的主要工具。 Web 客户端具备 CLI 无法访问的功能(模板存储、创建“触发器动作”)。

核心特性:

  • 在大多数主流移动和桌面浏览器上均可使用,具有一致的观感(基于 Quasar 框架)
  • 通过 WebSocket 使用 gRPC(无 RESTful API,无 XHR,与 CLI 采用几乎相同的方式)
  • 借助此接口,Web 客户端不仅依赖请求-响应模式,还能接收来自 P4wnP1 核心的“推送事件”。这意味着:
    • 如果你(或脚本)更改了 P4wnP1 A.L.O.A. 的状态,这些更改会立即反映到 Web 客户端中
    • 如果有多个 Web 客户端在运行,核心状态的更改会从一个客户端同步到所有其他客户端
  • 内置 HIDScript 编辑器,具有:
    • 语法高亮
    • 自动完成(CTRL+SPACE)
    • HIDScript 的持久化存储与加载
    • 按需执行:直接从浏览器运行 HIDScript
    • HIDScript 任务管理器(取消正在运行的任务,查看任务状态和结果)
  • 包含触发器动作的概览与编辑器
  • 以上所有功能均支持完整的模板系统
  • Web 客户端是单页应用,加载后一切在客户端运行,仅交换 gRPC 请求

自动化

旧版 P4wnP1 的自动化方法(静态 bash 脚本)已不再适用。

P4wnP1 A.L.O.A. 的自动化方法需满足以下要求:

  • 易于使用和理解
  • 可从 Web 客户端使用
  • 既要通用又要灵活
  • 旧“bash 脚本”方法能做的,新方法同样能做
  • 能够访问所有子系统(USB、WiFi、蓝牙、以太网接口、HIDScript……)
  • 模块化,组件可复用
  • 无需编写额外代码也能支持(简单的)逻辑任务
  • 通过利用 GPIO 引脚支持物理计算

通过引入所谓的“触发器动作”,并将其与模板系统(所有子系统的持久设置存储)结合,所有需求均得到满足。有关触发器动作的详细信息,请参阅“工作流程”部分。

使用教程

2. 工作流程第1部分 - HIDScript

P4wnP1 A.L.O.A. 不使用静态配置或载荷等概念。实际上,它根本没有静态工作流程。

P4wnP1 A.L.O.A. 旨在尽可能灵活,以便在可能的所有场景中使用(包括我在开发 P4wnP1 A.L.O.A. 时未能想到的场景)。

但本节将讲解一些基本概念。由于很难在不制作完整(视频)文档的情况下解释所有内容,我将通过一些常见用例和示例来解释需要说明的内容。

尽管如此,我不太可能抽出时间提供完整的文档。因此,我鼓励大家提供教程和想法,这些内容可以链接回本 README

现在从最基本的任务开始:

2.1 对通过 USB 连接 P4wnP1 的主机执行按键注入

实现此目标的最低配置要求是:

  • USB 子系统至少配置为仿真一个键盘
  • 有一种方法可以远程访问 P4wnP1,以启动按键注入

P4wnP1(未修改镜像)的默认配置已满足这些要求:

  • USB 设置初始化为提供键盘、鼠标和 USB 以太网(同时支持 RNDIS 和 CDC ECM)
  • P4wnP1 已可通过以下方法之一远程访问:
    • WiFi
      • 接入点名称显而易见
      • 密码为 MaMe82-P4wnP1
      • P4wnP1 的 IP 为 172.24.0.1
    • USB 以太网
      • P4wnP1 的 IP 为 172.16.0.1
    • 蓝牙
      • 设备名 P4wnP1
      • PIN 码 1337
      • IP 为 172.26.0.1
      • 注意:安全简单配对(SSP)处于关闭状态,以强制使用 PIN 配对。这意味着高速模式也同时关闭。因此蓝牙连接速度非常慢,对于 SSH 访问影响不大,但通过 Web 客户端请求可能耗时长达 10 分钟(而启用高速模式仅需几秒)。
  • 可通过上述所有 IP 访问 SSH 服务器
  • KALI Linux 的 SSH 用户为 root,默认密码为 toor
  • 可通过所有三种连接在 8000 端口通过 HTTP 访问 Web 客户端

注意: 部署 HTTPS 连接目前不在项目范围内。因此,如果在 Web 客户端中处理敏感数据(如 WiFi 凭证),请务必注意这一点。整个项目并非以安全为首要目标(而且未来也不太可能将其作为需求)。请采取适当措施(例如,如果接入点配置为开放认证,则使用 iptables 限制对 Web 客户端的访问;在没有 PIN 保护的情况下,不要启用蓝牙可发现和可连接等)

至此,我假设:

  1. 已将 P4wnP1 通过 USB 连接到某个目标主机(使用树莓派最内侧的 micro USB 端口)
  2. USB 主机上运行着一个可以接收按键的应用程序,并且该程序当前拥有键盘输入焦点(例如文本编辑器)
  3. 您已通过 SSH 远程连接到 P4wnP1(最好通过 WiFi),并且 SSH 连接来自另一台主机(而非通过 USB 连接 P4wnP1 A.L.O.A. 的主机)

要从 SSH 会话运行 CLI 客户端,请执行以下命令:``` root@kali:~# P4wnP1_cli The CLI client tool could be used to configure P4wnP1 A.L.O.A. from the command line. The tool relies on RPC so it could be used remotely.

Version: v0.1.0-alpha1

Usage: P4wnP1_cli [command]

Available Commands: db Database backup and restore evt Receive P4wnP1 service events help Help about any command hid Use keyboard or mouse functionality led Set or Get LED state of P4wnP1 net Configure Network settings of ethernet interfaces (including USB ethernet if enabled) system system commands template Deploy and list templates trigger Fire a group send action or wait for a group receive trigger usb USB gadget settings wifi Configure WiFi (spawn Access Point or join WiFi networks)

Flags: -h, --help help for P4wnP1_cli --host string The host with the listening P4wnP1 RPC server (default "localhost") --port string The port on which the P4wnP1 RPC server is listening (default "50051")

Use "P4wnP1_cli [command] --help" for more information about a command.

帮助屏幕已经显示,CLI客户端使用不同的命令来与P4wnP1 A.L.O.A.的各种子系统进行交互。这些命令大多又有自己的子命令。每个命令或子命令的帮助可以通过在CLI命令后附加`-h`来访问:```
root@kali:~# P4wnP1_cli hid run -h
Run script provided from standard input, commandline parameter or by path to script file on P4wnP1

Usage:
  P4wnP1_cli hid run [flags]

Flags:
  -c, --commands string      HIDScript commands to run, given as string
  -h, --help                 help for run
  -r, --server-path string   Load HIDScript from given path on P4wnP1 server
  -t, --timeout uint32       Interrupt HIDScript after this timeout (seconds)

Global Flags:
      --host string   The host with the listening P4wnP1 RPC server (default "localhost")
      --port string   The port on which the P4wnP1 RPC server is listening (default "50051")

现在,为了向USB主机输出"Hello world",可以使用以下CLI命令:

P4wnP1_cli hid run -c 'type("Hello world")'

在SSH会话中的输出结果应该类似于:``` TempFile created: /tmp/HIDscript295065725 Start appending to 'HIDscript295065725' in folder 'TMP' Result: null

在USB主机上,应当在具有键盘焦点的应用程序中输入了"Hello World"。

*如果你的SSH客户端运行在USB主机本身上,那么键入的"Hello world"会出现在CLI命令的输出之间(它不属于输出,而是在中间键入的)。*

**目标达成。我们向目标注入了按键。**

对于一个简单的按键注入任务来说,阅读量很大,但同样,本节旨在解释基本概念。

### 2.2 进一步了解HIDScript的高级语言特性

如果你成功运行了"Hello world"按键注入,那么现在是探索一些额外HIDScript特性的好时机。

我们已经了解了`type`命令,但让我们尝试讨论一些更高级的HIDScript命令:

#### 按下特殊键和组合键

`type`命令支持通过将"换行"字符编码到输入字符串中来按下回车键,如下所示:```
P4wnP1_cli hid run -c 'type("line 1\nline 2\nline 3 followed by pressing RETURN three times\n\n\n")'

但是特殊键或组合键呢?

press 命令来帮忙!

让我们使用 press 向 USB 主机发送 CTRL+ALT+DELETE:``` P4wnP1_cli hid run -c 'press("CTRL ALT DELETE")'

*注意:有两个键是修饰键(CTRL 和 ALT),只有一个键是实际键(DELETE)*

让我们在不使用任何修饰键的情况下按下键 'A':```
P4wnP1_cli hid run -c 'press("A")'

结果输出应该是小写字母 'a',因为 press("A") 将 'A' 解释为按键。而命令 type("A") 则尝试按下按键组合,从而产生大写字母 'A' 输出字符。

让我们组合一个修饰键和一个非修饰键,以产生大写字母 'A' 输出字符(模仿 type("A") 的行为):``` P4wnP1_cli hid run -c 'press("SHIFT A")'

这应该已经产生了一个大写字母A的输出。

重要的是要理解,`press`将其给定的键参数解释为键,而`type`则尝试找到合适的按键组合以产生预期的输出字符。

在最后一个例子中,让我们结合使用`press`和`type`。```
P4wnP1_cli hid run -c 'type("before caps\n"); press("CAPS"); type("after caps\n"); press("CAPS");'

最后一个命令输入了一个字符串,切换了CAPSLOCK,又输入了另一个字符串并再次切换了CAPSLOCK。 结果,CAPSLOCK应该回到初始状态(切换了两次),但其中一个字符串是大写输入,另一个是小写输入,尽管两个字符串都是小写给出的。

关于使用 press 按键的附加说明:

下载工具