Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Hardware Security

ASecurity

Discover and triage hardware debug interfaces (UART, JTAG, SWD) on an authorized embedded device — read boot logs, land a root console, interrupt the bootloader, and extract flash for offline analysis. Load when handed a physical device, PCB, or IoT/embedded target in scope, exposed test points or header pins, a serial console, U-Boot prompt, or a flash chip to dump. Signals: TX/RX/GND pads, silkscreen labels, baud-rate guessing, IDCODE enumeration.

20 stars
0 votes
0 copies
0 views
Added 10/4/2026
ai-agentsgoshelldebugginggitsecuritydocumentation

Security Analysis

A100/100

Scanned 10/4/2026

$npx -y skills add NoorQureshi/SploitAgent --skill hardware-security --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hardware Security?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Hardware Security
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/noorqureshi-hardware-security/badge)](https://www.skillsdirectory.com/skills/noorqureshi-hardware-security)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: hardware-security
description: >
  Discover and triage hardware debug interfaces (UART, JTAG, SWD) on an authorized embedded
  device — read boot logs, land a root console, interrupt the bootloader, and extract flash
  for offline analysis. Load when handed a physical device, PCB, or IoT/embedded target in
  scope, exposed test points or header pins, a serial console, U-Boot prompt, or a flash chip
  to dump. Signals: TX/RX/GND pads, silkscreen labels, baud-rate guessing, IDCODE enumeration.
domain: hardware
type: methodology
stability: learning
modes: [pentest]
severity: medium
tools: [usb-ttl, logic-analyzer, j-link, cmsis-dap, bus-pirate, openocd, flashrom, binwalk]
schema_version: 1
---

# Hardware debug-interface triage (UART / JTAG / SWD)

## When it applies
You have **physical access to a device you own or are explicitly authorized to open** — a router,
IoT gadget, embedded controller, or a board pulled from a larger system — and you need console
access or a firmware image. Hardware work is governed by the same envelope as everything else:
load `tradecraft-scope-roe` first and confirm the physical device and the teardown itself are in
`scope.txt`. Never open or probe a device that isn't yours or in writing.

## Why it works
Vendors leave debug and factory-test interfaces on the board: a UART serial console for boot logs
(often a root shell), and JTAG/SWD for chip-level debugging and memory readout. These ports bypass
all software authentication on the running system — if you can electrically reach them and match
the logic levels, the device talks to you. Bootloader consoles (U-Boot) additionally let you alter
boot arguments or read flash before the OS locks anything down.

## Method
1. **Open, photograph, label.** Photograph both board sides before touching anything; note
   silkscreen near pad clusters: `TX RX GND VCC` (UART) and `TDI TDO TCK TMS` (JTAG), `SWDIO/SWCLK`
   (SWD). Mind ESD — ground yourself; default to read-only probing.
2. **Identify the UART pinout with a multimeter, not guesses.** Find GND (continuity to a shield or
   ground pour), VCC (stable rail at power-on), TX (pulses during boot — confirm with a logic
   analyzer if ambiguous), RX (floating/pulled line next to TX). **Measure the logic level first —
   1.8 V, 3.3 V, or 5 V — and match your adapter to it** before connecting anything.
3. **Attach read-only first.** Connect only GND + the board's TX to a USB-TTL adapter and watch the
   boot log: `screen /dev/ttyUSB0 115200` (or `minicom`). If the output is garbage, sweep common
   baud rates (9600/38400/57600/115200) until the log is legible; record the rate. Boot logs alone
   leak flash layout, kernel version, and often credentials.
4. **Work the console.** Many devices drop to a root shell with no password. Interrupt U-Boot at
   the countdown (usually any key) and dump `printenv` — note the environment, but **do not
   `saveenv` casually**: a wrong write bricks the boot.
5. **Probe JTAG/SWD if UART is dead or locked.** With a J-Link or CMSIS-DAP adapter under OpenOCD,
   enumerate the chain and read the IDCODE: `openocd -f interface/jlink.cfg -f target/<chip>.cfg`.
   A populated IDCODE means the debug port is live; an all-zeros/all-ones response means it's
   fused off or your wiring/level is wrong.
6. **Extract flash for offline analysis.** In-circuit SPI dumps with a cheap programmer:
   `flashrom -p ch341a_spi -r dump.bin` (verify with a second dump and compare hashes). Immediately
   record `shasum -a 256 dump.bin` for evidence integrity, then hand the image to
   `reverse-eng-firmware` for extraction and analysis; individual binaries go to
   `reverse-eng-binary-triage`.
7. **Assess secure-boot/encrypted-flash feasibility non-destructively first** (signed-image checks
   in the boot log, eFuse hints from JTAG behavior) before considering chip-off or glitching — those
   are destructive and need explicit sign-off.

## Gotchas
- **Wrong logic level kills ports.** Connecting a 5 V adapter to a 1.8 V UART can destroy the SoC
  pins. Measure first; use a level shifter when in doubt.
- **Garbage output ≠ no console** — it's usually the wrong baud rate. Sweep before concluding the
  port is mute. Truly silent UARTs may be disabled in firmware; fall back to JTAG.
- **TX/RX are named from the board's perspective** — your adapter's RX listens to the board's TX.
  Read-only logging only needs GND + board TX.
- **A locked JTAG (empty IDCODE) is a finding too** — it tells you the vendor spent effort on
  debug-lockout, which shapes the rest of the assessment (chip-off vs. software attack surface).
- **Every write is a bricking risk.** `saveenv`, flash erase/program, and eFuse operations are
  one-way doors; get explicit approval and a verified dump before any of them.

## Verify success
You have a labeled pinout photo with measured logic levels, the recorded baud rate, and at least
one of: a working console (shell or U-Boot prompt), a live JTAG/SWD chain (valid IDCODE), or a
SHA256-hashed flash dump ready for `reverse-eng-firmware`. If everything is locked, you can state
precisely which interfaces exist and how each is disabled — that negative result is deliverable.

## References
OpenOCD and flashrom documentation; `reverse-eng-firmware` for what to do with the dump.

---
_Portions adapted from [reverse-skill](https://github.com/zhaoxuya520/reverse-skill) by zhaoxuya520, MIT License._

Attribution

NoorQureshiNoorQureshi
View sourceSee grades on GitHubMore from NoorQureshi →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698461 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →