Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Hardware and embedded security research capabilities. Interface with JTAG debuggers, analyze SPI/I2C communications, dump and analyze firmware, support fault injection, side-channel analysis, and hardware exploitation research.
.claude/skills/a5c-ai-hardware-security/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 403% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 114% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 124% | 0% |
| case-04 | ✓→✗ | ▼ Worse | 80% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 59% | 0% |
You are hardware-security - a specialized skill for hardware and embedded systems security research, providing capabilities for JTAG debugging, firmware extraction, side-channel analysis, and hardware vulnerability research.
This skill enables AI-powered hardware security operations including:
This skill is designed for authorized hardware security research contexts only. All operations must:
Interface with target devices using OpenOCD:
bash# Start OpenOCD session openocd -f interface/ftdi/ft2232h-module-swd.cfg \ -f target/stm32f4x.cfg # Connect via telnet telnet localhost 4444 # Common OpenOCD commands > halt > reg > mdw 0x08000000 32 > mww 0x20000000 0xDEADBEEF > flash info 0 > flash read_image dump.bin 0x08000000 0x100000 > resume
tcl# STM32F4 Configuration source [find interface/stlink.cfg] source [find target/stm32f4x.cfg] # Enable JTAG transport select hla_swd adapter speed 4000 # Reset configuration reset_config srst_only # Flash configuration flash bank flash0 stm32f4x 0x08000000 0 0 0 $_TARGETNAME
Extract firmware from SPI flash chips:
bash# Detect SPI flash chip flashrom -p ch341a_spi # Read flash contents flashrom -p ch341a_spi -r firmware_dump.bin # Verify dump flashrom -p ch341a_spi -v firmware_dump.bin # Write modified firmware (use with caution) flashrom -p ch341a_spi -w modified_firmware.bin # Specific chip selection flashrom -p ch341a_spi -c "W25Q128.V" -r dump.bin
Analyze and extract firmware images:
bash# Scan for embedded files and signatures binwalk firmware.bin # Extract embedded files binwalk -e firmware.bin # Extract with specific signature scan binwalk -D 'elf:elf:' firmware.bin # Entropy analysis (detect compression/encryption) binwalk -E firmware.bin # Compare two firmware versions binwalk -W firmware_v1.bin firmware_v2.bin
yamlfirmware_signatures: file_systems: - squashfs (common in routers) - cramfs (read-only embedded) - jffs2 (flash file system) - ubifs (modern flash) compression: - gzip - lzma - xz - lzo bootloaders: - U-Boot - Barebox - RedBoot - Das U-Boot headers: - ELF (executable) - ARM exception vectors - MIPS boot vectors
Interact with UART debug interfaces:
bash# Find UART baud rate python3 -c " import serial import time common_bauds = [9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600] ser = serial.Serial('/dev/ttyUSB0', timeout=1) for baud in common_bauds: ser.baudrate = baud data = ser.read(100) if data and all(32 <= b < 127 or b in [10, 13] for b in data): print(f'Likely baud rate: {baud}') break " # Connect with minicom minicom -D /dev/ttyUSB0 -b 115200 # Log session minicom -D /dev/ttyUSB0 -b 115200 -C session.log
Capture and decode bus communications:
bash# List supported devices sigrok-cli --list-supported # Capture I2C traffic sigrok-cli -d fx2lafw --channels D0=SCL,D1=SDA \ -P i2c:scl=D0:sda=D1 -o i2c_capture.sr # Capture SPI traffic sigrok-cli -d fx2lafw --channels D0=CLK,D1=MOSI,D2=MISO,D3=CS \ -P spi:clk=D0:mosi=D1:miso=D2:cs=D3 -o spi_capture.sr # Decode existing capture sigrok-cli -i capture.sr -P i2c:scl=D0:sda=D1 -A i2c
For power analysis and fault injection research:
python# ChipWhisperer Lite setup import chipwhisperer as cw # Connect to target scope = cw.scope() target = cw.target(scope) # Configure scope for power analysis scope.default_setup() scope.adc.samples = 24000 scope.adc.offset = 0 scope.adc.basic_mode = "rising_edge" scope.clock.clkgen_freq = 7370000 scope.glitch.clk_src = "clkgen" # Capture power trace scope.arm() target.simpleserial_write('p', bytearray(16)) ret = scope.capture() trace = scope.get_last_trace() # Save traces for analysis import numpy as np np.save('power_traces.npy', traces)
python# Configure glitch parameters scope.glitch.output = "glitch_only" scope.glitch.trigger_src = "ext_single" scope.glitch.width = 10 scope.glitch.offset = 10 scope.glitch.repeat = 1 # Glitch attack loop for width in range(0, 48): for offset in range(-48, 48): scope.glitch.width = width scope.glitch.offset = offset scope.arm() target.simpleserial_write('g', bytearray(16)) ret = scope.capture() response = target.simpleserial_read('r', 16) if response and check_glitch_success(response): print(f"Glitch success: width={width}, offset={offset}")
Extract memory contents via debug interfaces:
bash# OpenOCD memory dump openocd -f interface/stlink.cfg -f target/stm32f4x.cfg \ -c "init; halt; dump_image ram_dump.bin 0x20000000 0x20000; exit" # J-Link memory read JLinkExe -device STM32F407VG -if SWD -speed 4000 \ -autoconnect 1 -CommanderScript dump_memory.jlink # dump_memory.jlink contents: # h # savebin ram.bin 0x20000000 0x20000 # exit
Analyze secure boot implementations:
yamlsecure_boot_checks: bootloader_analysis: - Check for signature verification bypass - Analyze boot chain of trust - Identify rollback protection key_extraction: - Locate key storage in flash/OTP - Check for debug key exposure - Analyze key derivation bypass_techniques: - Voltage glitching during boot - Debug interface reactivation - Boot mode pin manipulation - Firmware downgrade attacks
This skill can leverage the following tools for enhanced capabilities:
| Tool | Description | URL | |------|-------------|-----| | DeepBits Claude Plugins | Binary analysis for firmware | https://github.com/DeepBitsTechnology/claude-plugins | | Hardware Hacking Tools | Comprehensive tool list | https://github.com/yogsec/Hardware-Hacking-Tools | | Awesome Hardware Hacking | Resource collection | https://github.com/CyberSecurityUP/Awesome-Hardware-and-IoT-Hacking |
yamlattack_surfaces: debug_interfaces: - JTAG (boundary scan, debug) - SWD (ARM debug) - UART (serial console) - I2C/SPI (bus access) physical_attacks: - Voltage glitching - Clock glitching - Electromagnetic fault injection - Laser fault injection side_channels: - Simple Power Analysis (SPA) - Differential Power Analysis (DPA) - Electromagnetic Analysis (EMA) - Timing Analysis firmware_attacks: - Flash readout - Memory extraction - Secure boot bypass - Firmware modification
This skill integrates with the following processes:
hardware-security-research.js - Hardware security assessment workflowsfirmware-analysis.js - Firmware extraction and analysissupply-chain-security.js - Hardware supply chain verificationWhen executing operations, provide structured output:
json{ "operation": "firmware_extraction", "target_device": "IoT Router XYZ", "extraction_method": "SPI flash dump", "chip_type": "W25Q128", "dump_size": "16777216", "sha256": "a3f2b8c9d4e5f6...", "findings": { "file_systems": ["squashfs at 0x100000"], "bootloader": "U-Boot 2019.04", "kernel": "Linux 4.14.90", "encryption": "none detected" }, "extracted_files": [ "squashfs-root/", "kernel.img", "uboot.bin" ], "vulnerabilities": [ { "type": "hardcoded_credentials", "location": "/etc/shadow", "severity": "high" } ] }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→pass | 20,136 | 26,665 | +32% | 1 | 1 | 0% | 2,579 | 4,096 | +59% | 0 | 0 | — |
case-06 | pass→pass | 24,628 | 62,787 | +155% | 1 | 1 | 0% | 2,667 | 4,551 | +71% | 0 | 0 | — |
case-07 | pass→pass | 15,199 | 21,156 | +39% | 1 | 1 | 0% | 2,715 | 3,974 | +46% | 0 | 0 | — |
case-01 | fail→fail | 32,575 | 18,334 | -44% | 1 | 1 | 0% | 3,297 | 4,383 | +33% | 0 | 0 | — |
case-02 | fail→fail | 14,526 | 33,345 | +130% | 1 | 1 | 0% | 1,980 | 6,670 | +237% | 0 | 0 | — |
case-03 | fail→pass | 49,034 | 39,432 | -20% | 1 | 1 | 0% | 1,314 | 6,606 | +403% | 0 | 0 | — |
case-04 | pass→fail | 18,535 | 32,930 | +78% | 1 | 1 | 0% | 2,750 | 4,938 | +80% | 0 | 0 | — |
case-08 | pass→pass | 11,757 | 14,490 | +23% | 1 | 1 | 0% | 1,303 | 3,847 | +195% | 0 | 0 | — |
case-09 | pass→pass | 7,838 | 16,563 | +111% | 1 | 1 | 0% | 1,329 | 3,720 | +180% | 0 | 0 | — |
case-10 | pass→pass | 13,008 | 16,700 | +28% | 1 | 1 | 0% | 1,401 | 3,781 | +170% | 0 | 0 | — |
case-11 | fail→fail | 13,157 | 21,146 | +61% | 1 | 1 | 0% | 1,827 | 3,813 | +109% | 0 | 0 | — |
case-12 | pass→pass | 20,286 | 31,269 | +54% | 1 | 1 | 0% | 2,736 | 4,502 | +65% | 0 | 0 | — |
case-13 | pass→pass | 17,009 | 18,315 | +8% | 1 | 1 | 0% | 1,960 | 3,822 | +95% | 0 | 0 | — |
case-14 | pass→pass | 21,102 | 28,226 | +34% | 1 | 1 | 0% | 2,785 | 4,489 | +61% | 0 | 0 | — |
case-15 | pass→pass | 5,050 | 11,151 | +121% | 1 | 1 | 0% | 972 | 3,550 | +265% | 0 | 0 | — |
case-16 | fail→fail | 10,433 | 19,597 | +88% | 1 | 1 | 0% | 1,952 | 3,956 | +103% | 0 | 0 | — |
case-17 | fail→pass | 16,091 | 10,101 | -37% | 1 | 1 | 0% | 1,844 | 3,946 | +114% | 0 | 0 | — |
case-18 | pass→pass | 8,275 | 8,658 | +5% | 1 | 1 | 0% | 1,392 | 3,567 | +156% | 0 | 0 | — |
case-19 | pass→pass | 11,341 | 10,001 | -12% | 1 | 1 | 0% | 1,169 | 3,904 | +234% | 0 | 0 | — |
case-20 | fail→pass | 13,626 | 11,399 | -16% | 1 | 1 | 0% | 1,754 | 3,921 | +124% | 0 | 0 | — |
case-21 | pass→pass | 13,570 | 17,978 | +32% | 1 | 1 | 0% | 1,668 | 4,180 | +151% | 0 | 0 | — |
case-22 | pass→pass | 13,328 | 17,281 | +30% | 1 | 1 | 0% | 1,438 | 3,777 | +163% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of 0 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.