core-jmp core-jmpdeath of core jump

Reverse Engineering a Ledger Nano X Hardware Implant

Joe Grand (Kingpin) reverse-engineered a real Ledger Nano X hardware implant for HARDWEAR.IO 2026 in Santa Clara. The add-on board does not break the Secure Element: it watches the OLED SPI bus, template-matches BIP-39 glyphs, stores the recovery seed at flash 0x7000, and sends it out over a Luat Air700E LTE modem with a Vodafone NL data eSIM. This article walks the 78-slide talk in source order and adds kitchen-table and operator notes.

oxfemale October 13, 2026 27 min read 60 reads
Export PDF
Reverse Engineering a Ledger Nano X Hardware Implant
Original text: “Reverse Engineering a Ledger Nano X Hardware Implant” — Joe Grand aka Kingpin, HARDWEAR.IO 2026, Santa Clara, California (Grand Idea Studio; slides revised 29 May 2026). Slides: PDF. Video: YouTube. Code, tables, hex dumps and figures below are reproduced verbatim with attribution captions.

Executive Summary

A hardware wallet is sold as a steel door for cryptocurrency: the seed that unlocks the coins is supposed to live only inside a Secure Element, never on a phone, never on a laptop. In August 2025 a Reddit buyer in Thailand opened a cheap Ledger Nano X from a Lazada seller and found something that did not belong there. Hardware hacker Joe Grand (Kingpin) acquired a specimen, opened it, and in May 2026 walked HARDWEAR.IO Santa Clara through a complete reverse-engineering of the add-on board glued into the case.

The implant does not crack the Secure Element. It sits beside it. When the wallet shows the 24 BIP-39 recovery words on its OLED, those glyphs travel in the clear over SPI. The unmarked Cortex-M0+ watches that bus, template-matches letters, stores the phrase at flash offset 0x7000, and a Luat Air700E LTE modem with a Vodafone NL “DATA ONLY” eSIM sends the words out over the cellular network. Battery chemistry, the NTC thermistor and the fuel gauge were all rewritten so the device still looks full and healthy. This article walks the 78-slide talk in source order, keeps every dump and photograph, and then adds kitchen-table explanation, operator hunting notes, and later public reporting from October 2026 that is not part of Grand’s May talk.

Kitchen table: Think of the wallet as a locked diary. The lock (the Secure Element) still works. Someone glued a tiny camera and a prepaid phone to the page where you copy the combination. Ledger’s “Genuine Check” can still say the lock is real, because it is. The extra electronics are the problem. If you ever generated or imported a seed on a device that might have been implanted, treat that seed as burned: make a new seed on a device you trust and move the coins.
Editorial four-stage diagram of seed display, SPI tap, glyph match, LTE exfil
Editorial illustration of the four-stage theft Grand recovered from firmware: the genuine OLED still shows the words; a tap on the SPI ribbon copies them; an unmarked MCU matches glyphs; an LTE modem sends the phrase. Labels on this diagram are editorial. The talk and dumps below are the source of truth. Editorial illustration.
Editorial timeline from August 2025 Reddit warning to October 2026 reporting
Editorial timeline. Grand’s talk is the May 2026 HARDWEAR.IO node. October 2026 loss figures and reseller names belong to later public reporting, not to the slides. Editorial illustration.

The talk, the speaker, and the public files

Joe Grand is a hardware hacker, electrical engineer, and former member of the L0pht. The HARDWEAR.IO USA 2026 abstract puts the problem in one sentence: hardware espionage is discussed constantly and seen in the wild almost never. This specimen is the rare case that can be put on a bench, photographed, probed, and dumped.

Title slide: Reverse Engineering a Ledger Nano X Hardware Implant
Title slide. Joe Grand aka Kingpin, HARDWEAR.IO 2026, Santa Clara, California. Source: original article.

Grand Idea Studio published the revised 29 May 2026 slides, the conference video, and a zip of firmware pulled from the implant MCU. This article does not re-host that firmware binary. Operators who need the dump should take it from the author: ledger_hardware_implant_fw.zip.

HARDWEAR.IO USA 2026 talk video. Source: original article.

First contact: a Nano X that was too cheap

Section title: First Contact
Section title from the talk. Source: original article.

The trail starts in August 2025. A Reddit post describes a Nano X bought on Lazada from a Thailand seller using a Ledger-looking name. The buyer wanted the battery. The price was wrong. The colour was wrong. The seller let them keep the unit after a colour complaint. The closing line is the whole threat model: these things are already in the wild.

Reddit post about a Nano X sold on Lazada in Thailand, August 2025
Reddit excerpt as shown on the talk. Seller platform: Lazada, Thailand. Caption on the slide: Reddit: “Nano X” being sold to steal your crypto, August 2025. Source: original article.
Opening photograph from the talk
Opening photograph from the deck (slide 2). Source: original article.
Photograph accompanying the first-contact section
Photograph from the first-contact sequence. Source: original article.
Kitchen table: Mail-order hardware wallets from random marketplace sellers are a different product from a wallet that left Ledger or an authorised reseller. Shrink-wrap and a holographic sticker do not prove the PCB under the OLED is unmodified. If a listing is far below street price, assume the discount is paid in seed phrases.

Hardware espionage is a supply-chain problem

Section title: Hardware Espionage
Section title. Source: original article.
Hardware espionage bullet slide
Grand’s framing: devices that do not follow the rules, at any layer (hardware, firmware, software), at any step of the lifecycle, including supply-chain attacks and malicious, corrupt, or deceived insiders. Source: original article.

The point of this section is not theatre. A Secure Element, a locked bootloader and a signed firmware image all assume the bill of materials you think you bought is the bill of materials that arrived. An extra QFN, an extra modem and a shorter battery sit outside those checks. Andrew Huang’s 2019 BlueHat IL talk “Supply Chain Security: If I were a Nation State” is the slide Grand uses as the historical pointer: every logistics hop is a place someone can add a part.

Andrew Huang BlueHat IL 2019 supply-chain slide referenced in the talk
Reference slide: Supply Chain Security: If I were a Nation State, Huang, BlueHat IL 2019. Source: original article.
Second Huang BlueHat IL 2019 reference slide
Second Huang / BlueHat IL 2019 reference figure. Source: original article.
For operators: Classify this class of implant as MITRE ATT&CK T1195 Supply Chain Compromise plus T1200 Hardware Additions. Collection is a tap on an internal display bus (closest analogue: automated collection T1119 against a SPI OLED). Exfiltration is T1041 over a cellular C2 path the victim never consented to. CWE-1263 (insufficient physical protection of the product) and CWE-200 (exposure of sensitive information on an unencrypted internal bus) describe the design assumptions the implant lives in. There is no CVE in this talk: Ledger firmware is not the bug. The extra PCB is the bug.
Editorial ATT&CK and CWE mapping around a hardware-wallet implant
Editorial ATT&CK / CWE map for the implant class. Editorial illustration.

Precedent: fake Trezors and the 2020 Ledger USB stick

Before the Nano X add-on board, two public cases already showed that “hardware wallet” is not a synonym for “untamperable”.

Trezor One and Model T: swap the MCU, freeze the seed

Trezor One and Model T attack summary
Legitimate Trezor devices: original locked STM32 replaced with an unlocked part running malicious code; recovery-seed generation replaced with a fixed set of pre-generated phrases; sold on a Russian marketplace. References: Kaspersky fake-trezor write-up and the Trezor shopping-safety blog post. Source: original article.

That attack is a replacement. The legitimate MCU is gone. The user still thinks they own a Trezor; the entropy they believe they generated was chosen by the vendor of the clone. Kaspersky documented the campaign; Trezor published buyer guidance. Grand shows both product photos because the cosmetic shell is doing most of the social-engineering work.

Trezor One photograph from the talk
Trezor One figure. Source: original article.
Trezor Model T photograph from the talk
Trezor Model T figure. Source: original article.
Additional Trezor Model T photograph
Additional Trezor Model T figure. Source: original article.

What an implant is, versus a clone

Hardware implants definition slide
Implants add circuitry in tandem with a normally functioning system. The injection point depends on the product and the goal. The board ties into internal buses, control signals, or user-facing interfaces and can capture, replay, spoof, or MITM. Outcomes: backdoor / remote access, dump / exfiltrate data, manipulate memory. Source: original article.

The Ledger specimen is this second class. The genuine Secure Element, the genuine OLED and the genuine USB stack still run. The attacker added a parasite that listens to a bus the genuine design never treated as a secret.

Ledger Nano X, 2020: a USB stick on the test points

2020 tampered Ledger Nano X summary
June 2020 customer-database leak; tampered devices mailed to leaked customers; a USB thumbdrive soldered onto test points; phishing / malware aimed at the recovery seed. Reddit thread r/ledgerwallet o154gz and BleepingComputer coverage. Source: original article.

That 2020 campaign used the wallet as a Trojan horse for a computer payload: open the case, solder a USB stick onto debug pads, mail it to an address from a leaked list, and steal the seed when the victim connects the device to a PC. The 2025–2026 implant is quieter. It does not need the PC. It has its own radio.

2020 tampered Ledger Nano X photograph
2020 tampered Nano X figure. Source: original article.
Additional 2020 tampered Ledger photograph
Additional 2020 tampered-device figure. Source: original article.

Acquisition and teardown

Section title: Acquisition
Section title: Acquisition. Source: original article.

Grand does not spend the talk on chain-of-custody theatre. The next slides are the unit on the bench: yellow plastic shell, USB-C, OLED, and then the moment the case comes apart and the extra green board is obvious.

Acquisition photograph 1
Acquisition photograph. Source: original article.
Acquisition photograph 2
Acquisition photograph. Source: original article.
Acquisition photograph 3
Acquisition photograph. Source: original article.
Section title: Teardown
Section title: Teardown. Source: original article.
Kitchen table: You do not need a lab to notice Generation 1. Once the back comes off, a second PCB, enamel magnet wire, and a battery that is visibly shorter than the cavity are not subtle. Later generations hide under the OLED foam; those need a scale, a known-good photo, or an X-ray. Start with the easy check: does the inside match Ledger’s own pictures of a Nano X?
Teardown photograph 1
Teardown photograph. Source: original article.
Teardown photograph 2
Teardown photograph. Source: original article.

The money shot is the yellow case shell with a green add-on board still glued in place, a 70 mAh pouch cell on the genuine Nano X PCB, and a tangle of enamel wire. The implant board is marked V05. Adhesive remover and a syringe are in frame because this was not a press-fit module; it was bonded into the housing.

Green V05 implant board glued into the yellow Nano X case shell with 70 mAh battery
Implant PCB (green, silkscreen V05) glued into the case. Genuine Nano X PCB with a reduced 70 mAh pouch cell (XYT 261626, 3.7 V, 0.259 Wh) and enamel jumper wires. This is Generation 1 as Grand found it. Source: original article.
Teardown photograph 4
Teardown photograph. Source: original article.
Teardown photograph 5
Teardown photograph. Source: original article.
Teardown photograph 6
Teardown photograph. Source: original article.
Teardown photograph 7
Teardown photograph. Source: original article.

Hardware reverse engineering

Section title: HW Reverse Engineering
Section title. Source: original article.

Grand anchors the legitimate architecture in Ledger’s own Nano X Security Target v1.2 before showing what was added. That document is how an evaluator is supposed to think about the product: Secure Element, MCU, OLED, battery gauge, USB. Anything that is not in the Security Target and is soldered into the case is in scope for this talk.

Ledger Nano X Security Target v1.2 slide
Reference: Ledger Nano X Security Target v1.2. Source: original article.
Hardware reverse-engineering photograph
Photograph from the hardware-RE sequence. Source: original article.

Front side: steal volume from the battery, lie to the fuel gauge

Front-side modifications: smaller battery, 10k NTC substitute, fuel-gauge bypass
Front-side modifications. Battery reduced to fit the implant. Fixed 10 kΩ resistor replaces the original battery NTC thermistor. Fuel-gauge resistor bypassed so the charge always reads 100 % full. Notebook sketch of the STMicro battery-gauge path (L6924D / related QFN) is on the right. Source: original article.

Three physical lies, one purpose: make room and keep the UI calm. A 70 mAh cell is much smaller than the stock pack, which is how a 3×3 mm MCU, an LTE modem, an eSIM and a coil fit in a shell that was never designed for them. The original pack uses an NTC thermistor so the charger can refuse to run if the cell is frozen or overheated. A fixed 10 kΩ resistor tells the gauge “I am 25 °C forever.” Bypassing the fuel-gauge sense path so the device always reports 100 % means the victim never asks why a brand-new Nano X dies in an afternoon.

ModificationWhat it replacesWhy it is there
Shorter / lower-capacity pouch cell (70 mAh on this specimen)Stock Nano X batteryPhysical volume for the implant PCB, modem, eSIM, antenna
Fixed 10 kΩ resistorBattery NTC thermistorCharger / gauge sees a plausible 25 °C, no NTC fault
Fuel-gauge sense bypassNormal coulomb-counter / voltage senseUI always shows 100 % full
Front-side modifications from the talk. Source: original article.
For operators: The STMicro battery-companion path on Grand’s notebook sketch (L6924D-class gauge / charger in a QFN) is a reminder that analog supervision is part of the security boundary. A wallet that always reads 100 % is an IOC. So is a pack whose printed capacity does not match a known-good Nano X cell. Weighing the sealed device against a known-good unit catches Generation 1; it is weaker against later builds that keep the original battery.

Back side: OLED SPI and the implant MCU

Back-side modifications title
Back-side modifications. Source: original article.
Back-side photograph of the implant and wiring
Back-side photograph: implant wiring against the genuine PCB. Source: original article.
OLED SPI interface and implant MCU close-up
Slide pairing the OLED SPI interface with the implant MCU. Source: original article.
Section title: Interfacing
Section title: Interfacing. Source: original article.

RF: an 8 cm coil near 937 MHz

RF: 8 cm hand-wound coil, about 937 MHz at quarter wave
Antenna = 8 cm hand-wound coil → f ≈ 937 MHz at 1/4 wave. HackRF + hackrf-spectrum-analyzer used to look for transmissions. Source: original article.

A quarter-wave at 937 MHz is about 8 cm of wire. That is GSM-900 / LTE band neighbourhood, which matches a cellular modem far better than a Bluetooth LE coil. Grand is explicit that the HackRF pass is a hunt, not a finished demodulation: identify that the implant radiates, then move to the modem documentation and the eSIM.

RF photograph of the hand-wound coil antenna
RF photograph: hand-wound coil on the implant. Source: original article.
For operators: 937 MHz is a geometry estimate from coil length, not a channel assignment from a decoder. Do not treat it as a pager or LoRa IOC by itself. The Air700E and the Vodafone NL eSIM below are the evidence that the radio is cellular. Future work in the talk is srsRAN 4G + a SignalSDR Pro for an actual MITM of the air interface; that work is named, not delivered, and this article does not add a working cellular-MITM recipe.

OLED: the secret travels on SPI

OLED connected to the Secure Element via SPI, monitored with a Logic 8 Pro
OLED connects to the Nano X Secure Element via SPI. Grand monitors the bus with a Saleae Logic 8 Pro to get a sense of activity. Source: original article.

This is the architectural punchline. The Secure Element will not give you the seed over USB. It will send bitmap traffic to a display so a human can write the words down. That traffic is SPI. SPI on a hardware wallet is almost never encrypted, because the original threat model was “the case is closed and the attacker is on the other side of USB.” An implant inside the case is on the inside of that assumption.

Logic analyzer capture of OLED SPI traffic
SPI capture / probe photograph from the OLED section. Source: original article.
Kitchen table: The 24 words you copy onto paper are the same 24 words the implant copies off the ribbon cable. Encrypting USB and locking the firmware does not change that, because the display still has to light up. The only software mitigations that help are: never show the seed at all after first setup, and refuse to run first-setup if the case has been opened. Hardware mitigations are a sealed, inspectable assembly and a display bus that is not a cleartext alphabet.

USB: BOOT pin, three CDC-ACM ports, one RNDIS

USB: DP/DM soldered out, BOOT high vs low behaviour
DP/DM test points soldered to a USB Type-A connector. BOOT pulled HIGH (VUSB / +5 V) → bootloader for 15 seconds → 3× USB CDC-ACM + 1× RNDIS. BOOT pulled LOW → ports appear for 1 second then disappear. Source: original article.
BOOT pinWhat the host seesWhy it matters
HIGH (VUSB / +5 V)Bootloader for ~15 s, then 3× CDC-ACM + 1× RNDISFactory / firmware-update posture of the Air700E-class module
LOWPorts appear ~1 s, then vanishNormal implanted-device posture: stay quiet on USB
USB behaviour from the talk. Source: original article.
USB interfacing photograph 1
USB interfacing photograph. Source: original article.
USB interfacing photograph 2
USB interfacing photograph. Source: original article.
USB interfacing photograph 3
USB interfacing photograph. Source: original article.
USB interfacing photograph 4
USB interfacing photograph. Source: original article.
USB interfacing photograph 5
USB interfacing photograph. Source: original article.

The USB personality is the fingerprint of a Luat Air700E cellular module, not of a Ledger. OpenLuat’s Air700E documentation is the slide Grand leaves on screen as the decoder ring: CDC-ACM for AT / PPP, RNDIS for a USB Ethernet gadget, a BOOT pin that holds a bootloader, and debug UARTs that will show up in the next section.

OpenLuat Air700E documentation reference
Reference: https://docs.openluat.com/air700emq/ Source: original article.

MCU: unmarked QFN-20, Cortex-M0+, SWD

Implant MCU: QFN-20 / UFQFPN-20, 3x3 mm, no markings
QFN-20 / UFQFPN-20, 3×3 mm, 0.5 or 0.6 mm pitch, no part markings visible. Source: original article.

Scraped or never-marked MCUs are a supply-chain cliché because they work. A 3×3 mm Cortex-M0+ has more than enough flash to hold a glyph table and a 24-word buffer. Identification then becomes electrical: find SWD, read the CPUID, dump the image, and stop caring about the silkscreen.

SWD: JTAGulator used for debug-interface verification
JTAGulator for initial debug-interface verification. Source: original article.
ARM Cortex-M0+ identification
ARM Cortex-M0+. Source: original article.
SWD / debug photograph 1
Debug-interface photograph. Source: original article.
SWD / debug photograph 2
Debug-interface photograph. Source: original article.
SWD / debug photograph 3
Debug-interface photograph. Source: original article.
SWD / debug photograph 4
Debug-interface photograph. Source: original article.
For operators: JTAGulator is the right first instrument when a QFN has no markings and the board has spare vias: brute the SWDIO/SWCLK/nRESET combination, then attach a DAP. Cortex-M0+ CPUID plus a flash dump is enough to move into firmware RE. Grand later publishes that dump as ledger_hardware_implant_fw.zip; this article does not re-host it.

UART banner: EiGENCOM D-Fota, 22 January 2024

UART interfaces on the Luat Air700E and EiGENCOM D-Fota boot banner
Two UARTs on the Luat Air700E. MAIN_TXD/RXD to the MCU at 115.2 kbps 8N1. DBG_TXD/RXD starts at 115.2 kbps then switches to 6 Mbps for continuous output similar to USB. Boot banner transcribed on the slide. Source: original article.

The debug UART is a gift. It names the firmware family (EiGENCOM D-Fota), the version (2.5), the build wall-clock (22 January 2024, 17:20:56), a 40-byte blob, a missing parameter 0x5846, and a flash XIP limit at 0x809978 before the module continues into a normal boot. That is more attribution than most implants ever print.

(E) Welcome to EiGENCOM D-Fota Time!
 ___      _____ ___ _____ _
| _ \    | ___/ _ \_    _|/ \
|| \| -- | |_ || || | | / _ \
||_/| -- | _| ||_|| | |/ ___ \
|___/    |_|   \___/ |_/_/    \_\

(C) Copyright 2020, All Rights Reserved.
(V) Version(2.5), Built @Jan 22 2024 17:20:56

uart(0) urc baud: 115200
total length(40):
[1/1] 6a790221864850f6b5d9022194f8a221944850f6afd9944b1d78002de9d1099b002be6d0d4f87e31
no par(0x5846) found!
exit...
bootloader flashXIPLimit(0x809978), try normal boot system start!
For operators: Treat the banner as an IOC, not as a mystery. Search firmware corpora and module vendor trees for “EiGENCOM D-Fota” and for that exact build string. The 40-byte hex line is a handshake / licence blob the bootloader did not honour on this tap (no par(0x5846) found!) and then continued anyway. The XIP limit 0x809978 is a flash map hint for anyone opening the Air700E image rather than the Cortex-M0+ image.

eSIM: a Vodafone NL “DATA ONLY” identity that has been to Manila and the US

eSIM: MFF2 DFN-8, Microchip SEC1110, PySim
Embedded SIM, MFF2 / DFN-8 5×6 mm. Talked to like a physical SIM via a Microchip SEC1110 PC/SC evaluation board, a smartcard extender, and a DFN-to-DIP adapter. Tooling: PySim. Hand-drawn ISO 7816-style pin notes and a Keysight scope capture of the SIM I/O are on the right. Source: original article.

An MFF2 eSIM is a SIM card that looks like a power MOSFET: eight-lead DFN, 5×6 mm, soldered down. Electrically it is still ISO 7816. Grand adapter-boards it up to a PC/SC reader and lets PySim speak GSM files. The result is the closest thing this talk has to a campaign fingerprint.

eSIM hardware photograph 1
eSIM / adapter photograph. Source: original article.
eSIM hardware photograph 2
eSIM / adapter photograph. Source: original article.
eSIM hardware photograph 3
eSIM / adapter photograph. Source: original article.
eSIM hardware photograph 4
eSIM / adapter photograph. Source: original article.
eSIM hardware photograph 5
eSIM / adapter photograph. Source: original article.
eSIM hardware photograph 6
eSIM / adapter photograph. Source: original article.
eSIM hardware photograph 7
eSIM / adapter photograph. Source: original article.
PySim dump of the implant eSIM
PySim card info as shown in the talk. UICC; ATR, ICCID, IMSI, SPN, last-seen PLMNs. Source: original article.
Card info:
Name: UICC
ATR: 3b9e96801fc78031e073fe211b66d0024421150072
ICCID: 89314404001365967271
Class-Byte: 00
Select-Ctrl: 0004
AIDs: a0000000871002

IMSI (subscriber identity): 082940401738767429
MCC: 204 (Netherlands)
MNC: 04 (Vodafone NL)
MSIN: 01738767429

Service Provider Name (EF.SPN): 0044415441204F4E4C59 ("DATA ONLY")
SMS Parameters (EF.SMSP): "Vodafone"

EF.EPSLOCI -> Philippines (Smart, 515-03)
EF.LOCIGPRS -> USA (T-Mobile, 310-260)
FieldValueReading
NameUICCUSIM, not a 2G-only SIM
ATR3b9e96801fc78031e073fe211b66d0024421150072Answer-to-reset; keep as an IOC
ICCID89314404001365967271Issuer starts 89 31 44 — Netherlands numbering on this dump
IMSI082940401738767429MCC 204 / MNC 04 = Vodafone NL
EF.SPN“DATA ONLY”Data-only profile, not a consumer voice plan
EF.SMSP“Vodafone”SMS parameter file still branded Vodafone
EF.EPSLOCIPhilippines (Smart, 515-03)Last LTE attach seen by this card
EF.LOCIGPRSUSA (T-Mobile, 310-260)Last GPRS/UMTS location seen by this card
eSIM identity from the talk. Source: original article.
Kitchen table: This particular plastic wallet carried a Dutch data-only SIM that had previously attached in the Philippines and in the United States. That does not prove who the operator is. It proves the radio is real, the SIM is provisioned, and the campaign is not a single-city hobby project. If you are tearing a suspect wallet, the eSIM is the fastest way to get an IMSI you can take to a carrier or a CSIRT.
For operators: Hunt: ATR 3b9e96801fc78031e073fe211b66d0024421150072, ICCID prefix 89314404, IMSI MCC/MNC 204-04, SPN “DATA ONLY”. Later public discussion (October 2026) asked whether other seized units share this Vodafone NL IMSI range; that question is downstream of this dump, not answered in the May talk. Do not treat a single IMSI as a global IOC without corroboration — prepaid M2M ranges rotate.

Four boxes: antenna, MCU, eSIM, cellular modem

Architecture: Antenna, MCU, eSIM, Cellular Modem
Grand’s block diagram: Antenna, MCU, eSIM, Cellular Modem. Source: original article.

Once the parts have names, the implant is no longer a mysterious green PCB. It is a very small computer with a very small phone. The MCU is the brain. The Air700E is the mouth. The eSIM is the identity. The coil is the ear/mouth to the tower. Nothing in that diagram needs to defeat Ledger’s Secure Element. It only needs to sit next to the OLED.

Firmware reverse engineering: glyphs in flash, seed at 0x7000

Section title: FW Reverse Engineering (MCU)
Section title. Source: original article.
Firmware reverse-engineering photograph 1
Firmware-RE photograph. Source: original article.
Firmware reverse-engineering photograph 2
Firmware-RE photograph. Source: original article.
Firmware reverse-engineering photograph 3
Firmware-RE photograph. Source: original article.

The MCU image stores an alphabet. Each record is a word index, a length, and a payload of letter codes where 0x01 is A through 0x1A is Z. Grand’s worked example decodes to six BIP-39 words: GRAPE, SOURCE, VICIOUS, IDEA, EXPECT, SHAFT. Those words are a demonstration of the codec, not a victim seed published for reuse.

struct record, letter map 0x01=A, and decoded words GRAPE SOURCE VICIOUS IDEA EXPECT SHAFT
On-slide codec: struct record, A–Z mapping, hex payload, decoded words. Source: original article.
struct record {
uint8_t word;
uint8_t length;
uint8_t payload[];
};

0x01 = A, 0x02 = B, ..., 0x1A = Z

01 05 07 12 01 10 05 02 06 13 0F 15 12 03 05 03 07 16 09 03 09 0F 15 13
04 04 09 04 05 01 05 06 05 18 10 05 03 14 06 05 13 08 01 06 14

1: GRAPE
2: SOURCE
3: VICIOUS
4: IDEA
5: EXPECT
6: SHAFT
...
Offset / itemContentRole
0x4D00–0x4E40Glyphs for a–zTemplates the matcher compares to SPI traffic
SPI SE ↔ OLEDCleartext display streamCollection surface
Template matcherLooks for those glyphs in the SPI streamTurns pixels / indexes into letters
0x7000Recovery seed / wallet backupLocal store before radio exfil
Cellular moduleAir700E + eSIMTransmit path
MCU firmware map from the talk. Source: original article.
Firmware (MCU) behaviour bullets
Glyphs a–z at 0x4D00–0x4E40. Implant monitors SPI between the Nano X Secure Element and the OLED. Template matcher looks for the glyphs. Recovery seed / wallet backup stored in flash at 0x7000. Contents transmitted via the cellular module. Source: original article.
Firmware (MCU) behaviour bullets, repeated slide
Repeated firmware-behaviour slide as shown in the deck. Source: original article.
For operators: The codec is a 1-based alphabet packed behind a length-prefixed record, not a BIP-39 index table. GRAPE is 0x07, 0x12, 0x01, 0x10, 0x05 (G,R,A,P,E) after a word-id / length header. A hunter dumping a later-generation MCU should look for 26 glyph bitmaps or 26 1-byte letter maps in a ~320-byte window, then for a 24-entry list of length-prefixed words around a round flash offset (here 0x7000). Do not ship a “seed decoder GUI” against live victims; the published example is enough to recognise the format.
Kitchen table: In one sentence: the chip that draws the letters on the screen is honest; the extra chip that watches the wire to that screen is not. By the time you have copied word 24 onto paper, a copy is already sitting in flash and waiting for a cell tower.

Final words from the May 2026 talk

Section title: Final Words
Section title. Source: original article.

Future work Grand named and did not deliver on stage

Future work: srsRAN 4G plus SignalSDR Pro; learn the adversary
Future work: monitor / MITM cellular transmissions (srsRAN 4G + SignalSDR Pro); learn more about the adversary — who, what, where, how successful. Source: original article.

Those two bullets are a research agenda. Cellular MITM of an Air700E on a Vodafone NL M2M profile is a lab project with its own legal perimeter. This article stops where the talk stops: the radio is the exfil path, and a software-defined eNodeB is how you would watch it. There is no packet capture, no srsRAN config, and no C2 hostname in the slides.

What Ledger said, as of the talk

Ledger response: check hardware against known-good pictures, buy authorised, further hardening
Ledger response as of May 2026: check hardware integrity against known-good pictures; buy directly from Ledger or authorised resellers; Ledger is looking into further hardening for future products. Source: original article.

That guidance is still the right first advice for a buyer. It is also incomplete against an implant that keeps a genuine Secure Element: any check that only authenticates the SE will green-light an implanted unit. Grand already had that tension in May. Public reporting in October 2026 made it a headline.

Summary slide

Summary: supply-chain risk is real; SPI glyph match; LTE exfil; new iterations spotted
Summary. Hardware-espionage and supply-chain risks are real. The implant exfiltrates data displayed on the screen: it monitors the OLED SPI bus, detects letters used in the recovery seed, and transmits over 4G LTE. New iterations of the implant had already been spotted by the time of the talk. Source: original article.

The Ledger Nano X hardware implant exfiltrates data displayed on the screen. It monitors the OLED’s SPI bus, detects letters used in the recovery seed, transmits over 4G LTE. New iterations of implant have already been spotted.

Joe Grand, HARDWEAR.IO 2026 summary slide
Thanks slide
Closing thanks slide from the talk. Source: original article.

Later public reporting (October 2026) — not in the May talk

Grand’s teardown is Generation 1, on stage in Santa Clara in May 2026, from a specimen whose public trail starts on Reddit in August 2025. In October 2026 a separate wave of reporting described implanted Nano X units moving through reseller channels (publicly associated with CryptoBilis), large victim drains, and a Ledger Donjon confirmation that at least one affected user’s device contained an unauthorised hardware implant. Those loss figures are not measurements from this talk. They are later context so a reader in October 2026 does not think the story ended on the thanks slide.

  • Ledger’s public line after the October wave: factories, firmware and direct sales were not described as the implant insertion point; reseller / second-hand / unauthorised channels were.
  • Genuine Check authenticates the Secure Element. A genuine SE inside an implanted shell still passes. That is why a software check is not a substitute for opening the case or comparing against known-good hardware.
  • Independent labs (including Tibane Labs’ October field notes) described later mechanical generations that keep the original battery and hide a flex under the OLED foam. That is the “new iterations already spotted” bullet from May, arriving in public photographs.
  • Mark Karpelès and others repeated the operational advice that matches the firmware: if a seed was generated or imported on an implanted unit, that seed is known to the attacker on a delay of their choosing. Move funds from a new seed on a trusted device.
For operators: Do not merge the two timelines in a report. Cite Grand 2026-05 for the SPI-glyph-LTE mechanism, the V05 board, the Air700E, and the Vodafone NL eSIM dump. Cite October 2026 CSIRT / press / Donjon notes for scale, reseller names, and later mechanical revisions. Inventing a CVE for the implant, or attributing an $86M figure to Grand’s bench, is a factual error.

What to hunt, weigh, and photograph

The talk is a teardown. Translating it into a hunting checklist is the operator extra.

CheckGeneration 1 (this talk)Why it works
Open the case vs known-good photosSecond PCB, enamel wire, V05 silkscreenGrand’s primary advice, and Ledger’s
Battery capacity / size70 mAh pouch, cavity not filledVolume was stolen for the implant
Fuel-gauge readingAlways 100 %Sense path bypassed
Mass of a sealed unitLighter than stock if the cell is smallerCheap, non-destructive screen
USB gadget identityAir700E-like CDC-ACM + RNDIS if BOOT is highNot a Ledger USB personality
eSIM dumpMFF2, Vodafone NL DATA ONLY on this specimenCampaign identity
RFHand-wound ~8 cm coil, ~900 MHz classConfirms a WAN radio is present
MCU flashGlyphs 0x4D00, seed 0x7000, struct recordConfirms the SPI-matcher firmware family
Hunting checklist derived from the talk. Editorial table.
Kitchen table: If you already own a Nano X: buy a jeweller’s screwdriver, watch a known-good teardown, and look. If you see a second board or a battery that does not fill the tray, stop using that seed. If you bought from Ledger or a named authorised reseller and the inside matches the official photos, you are in the population this implant was not built for. If you bought a “bargain” on a marketplace, you are in the population it was built for.

Key Takeaways

  • The implant is a supply-chain hardware addition (ATT&CK T1195 / T1200), not a Ledger firmware 0-day. There is no CVE in this talk.
  • Collection is a cleartext SPI tap between the genuine Secure Element and the genuine OLED. The SE can be honest and the seed still leaves the device.
  • Exfiltration is 4G LTE via a Luat Air700E, an MFF2 eSIM, and an 8 cm coil. USB is optional and, with BOOT low, almost silent.
  • Generation 1 cheats the battery path (smaller cell, fake 10 kΩ NTC, fuel gauge stuck at 100 %) so the victim does not notice the missing volume.
  • The MCU firmware is a glyph template matcher. Alphabet at 0x4D00–0x4E40, recovered phrase at 0x7000, letters coded 0x01…0x1A.
  • The eSIM dump (Vodafone NL, SPN DATA ONLY, last attach in the Philippines and the US) is a campaign fingerprint, not a complete attribution.
  • By May 2026 Grand had already seen new mechanical iterations. October 2026 reporting is a later, larger public chapter of the same class of device.

Defensive Recommendations

  1. Buy path. Hardware wallets from the vendor or a named authorised reseller. Marketplace “new in box” listings at a discount are the insertion path this talk documents.
  2. Inspect. Compare the opened device to Ledger’s known-good photographs. Generation 1 is obvious. Later generations need weight, X-ray, or a teardown of the OLED stack.
  3. Do not trust Genuine Check alone. A check that authenticates the Secure Element will pass on an implanted genuine SE. Treat it as necessary, not sufficient.
  4. First-setup hygiene. If a seed was ever displayed on a device with unknown custody, generate a new seed on a trusted device and move funds. The attacker can wait.
  5. Vendor hardening. Case-open switches, display-bus encryption or a framebuffer MAC, a fuel-gauge that cannot be tied at 100 %, and a factory process that notices extra RF parts.
  6. IR / lab. Photograph, weigh, X-ray, then dump the MFF2 with PC/SC + PySim before you kill power if you need location files. Pull SWD on the unmarked QFN for the glyph/seed image. Do not power the modem on a live tower from a sensitive site without Faraday measures.
  7. Detection engineering. IOCs from this specimen: Air700E USB personality, EiGENCOM D-Fota banner dated 22 Jan 2024, ATR/ICCID/IMSI above, V05 silkscreen, 70 mAh substitute cell. Expect all of those to change on later builds; the stable behaviour is SPI-glyph-LTE.
  8. Do not build a better implant. The public firmware and this codec are for recognition and defence. Re-hosting a ready-to-solder exfil gadget is out of scope.

Conclusion

Joe Grand’s HARDWEAR.IO 2026 talk is the moment a rumoured “fake Ledger” becomes a photographed, dumped, identified object: a V05 add-on board, an unmarked Cortex-M0+, a Luat Air700E, a Vodafone NL data eSIM, and firmware that reads the OLED SPI bus like a keyboard. The Secure Element is not the failure. The assumption that the rest of the plastic is empty is the failure. Anyone who handles high-value keys — operators, incident responders, and people who simply want to keep their coins — has to treat the case, the battery, the display ribbon and the purchase channel as part of the trusted computing base. The slides already said new iterations were in the wild. The months after Santa Clara showed what that sentence meant.

Original text: “Reverse Engineering a Ledger Nano X Hardware Implant” by Joe Grand aka Kingpin at HARDWEAR.IO 2026, Santa Clara (Grand Idea Studio; slides revised 29 May 2026).

oxfemale Vulnerability research, reverse engineering, and exploit development.
// Discussion