kali linux 中文文档 下载 App

使用树莓派 GPIO 引脚进行硬件安全测试

GPIO 是什么

GPIO(General Purpose Input/Output)是单板电脑上的 40+ 个引脚,可以单独配置为输入或输出模式。树莓派、Rock Pi、ODROID 等都有。

Kali Linux 在这些 ARM 设备上支持完整的 GPIO 控制。以下示例以树莓派 4B/5 为例。

准备

硬件

软件

sudo apt update
sudo apt install -y python3-gpiod python3-rpi.gpio raspi-gpio

基础 GPIO 操作

raspi-gpio 命令行工具

查看所有引脚状态:

raspi-gpio get

设置引脚输出高电平:

raspi-gpio set 17 op dh   # 引脚 17,输出模式,高电平
raspi-gpio set 17 op dl   # 引脚 17,输出模式,低电平

配置输入模式并读取状态:

raspi-gpio set 23 ip      # 引脚 23,输入模式
raspi-gpio get 23         # 读取电平值(0=低,1=高)

Python 控制

from gpiozero import LED, Button
from time import sleep

led = LED(17)          # 引脚 17
button = Button(23)    # 引脚 23

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)
    
    if button.is_pressed:
        print("按钮被按下了!")

硬件安全测试场景

场景一:继电器控制物理开关

用继电器模块可以远程控制物理电路:

import RPi.GPIO as GPIO
import time

# 继电器模块接引脚 17
RELAY_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY_PIN, GPIO.OUT)

# 打开继电器(默认低电平触发)
GPIO.output(RELAY_PIN, GPIO.LOW)
time.sleep(1)
# 关闭继电器
GPIO.output(RELAY_PIN, GPIO.HIGH)

场景二:UART 串口接入设备

很多嵌入式设备(路由器、摄像头、工业控制器)有 UART 调试口。用 USB-TTL 转换器 + GPIO:

# 找到串口设备
ls /dev/ttyUSB*

# 用 minicom 或 screen 连接
screen /dev/ttyUSB0 115200

常用波特率:9600、19200、115200。连接成功后会看到目标设备的 boot log,可以按 Ctrl+C 进入 U-Boot shell,然后破解 U-Boot 命令行注入。

场景三:I2C/SPI 协议分析

# I2C 扫描
i2cdetect -y 1

# SPI flash 读取
flashrom -p linux_spi:dev=/dev/spidev0.0 -r firmware.bin

场景四:CAN 总线分析(汽车测试)

用 MCP2515 CAN 模块(SPI 接口)连接汽车 OBD-II 接口:

# Kali 中配置 CAN 接口
modprobe can
modprobe can-dev
modprobe can-gw
ip link set can0 type can bitrate 500000
ip link set can0 up

# candump 抓取 CAN 帧
candump can0

# cansend 发送 CAN 帧(测试某个功能)
cansend can0 123#DEADBEEF

安全注意事项

Kali NetHunter 与 GPIO

NetHunter 在手机上没有物理 GPIO 引脚,但可以通过 USB OTG 接 GPIO 扩展板,或者配合蓝牙控制 Raspberry Pi 的 GPIO。