COLDCARD vulnerability what happened, and what to do
Informational only, and this site never asks for your recovery words. details

Informational only. This is independent analysis and an evidence-backed explainer, not financial, security or legal advice, and not a substitute for professional advice about your own situation. It is not affiliated with, endorsed by, or speaking for Coinkite, Block, or any other party named here. Published estimates are attributed, and differing scenarios are kept separate with their assumptions. Act on your own judgement. Editorial standards and corrections.

Do not disclose recovery material to a website, form, message or support account. This site never asks for it. Deliberate recovery on independently verified offline equipment is a separate operation. Seed-word safety.

libngu random.c

libngu-random-c

https://raw.githubusercontent.com/switck/libngu/master/ngu/random.c

Organisation
switck
Evidence role
Repository file
Published
continuously updated
Source changes
0
Detected differences
0
Unreviewed
0
Copies held
1

The #ifndef guard and 32-bit reseed. Still unfixed upstream as of 1 Aug 2026; this tracks whether that changes.

Every check is recorded, including checks that found no text change. A detected edit is therefore bounded between two checks. The publisher's exact save time is not observable from this record. Last checked 2 Aug 2026, 00:58 UTC.

  1. Earliest copy held Current
    seen 1 Aug 2026, 00:23 UTC · Captured here text sha256 51540dd4f956bb520cf0aca3 4,290 chars
    Extracted text as captured
    //
    // random - RNG stuff
    //
    // - common interface to TRNG specific to your chip
    // - whitening
    // - pick new privkeys
    //
    #include "py/runtime.h"
    #include "py/mperrno.h"
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include "my_assert.h"
    // ESP32 code
    #ifdef ESP_PLATFORM
    # include "esp_system.h"
    # define CHIP_TRNG_SETUP()
    # define CHIP_TRNG_32()         esp_random()
    #endif
    #ifdef MICROPY_PY_STM
    // ports/stm32/rng.c
    extern uint32_t rng_get(void);
    # define CHIP_TRNG_SETUP()
    # define CHIP_TRNG_32()         rng_get()
    # ifndef MICROPY_HW_ENABLE_RNG
    # error "get a HW TRNG plz"
    # endif
    #endif
    #if defined(__APPLE__) || defined(__FreeBSD__)
    # define CHIP_TRNG_SETUP()
    # define CHIP_TRNG_32()         arc4random()
    #endif
    #ifdef __linux__
    # define CHIP_TRNG_SETUP()
    # define CHIP_TRNG_32()         random()
    #endif
    #ifndef CHIP_TRNG_SETUP
    # error "need chip TRNG function"
    # define CHIP_TRNG_SETUP()
    # define CHIP_TRNG_32()         0x5a5a5a5a

    Excerpt only. The complete copy is held offline and backs quotations on this site. The original publication remains the canonical public source.

How to check this yourself

Each copy above is identified by the SHA-256 of its extracted text, shown beside it, and the diffs are plain unified diffs. To verify a quotation, compare it against the page itself or against the Internet Archive's copies, which are independent of this project.

Complete captures are held offline rather than mirrored here, so this page shows diffs and excerpts. If a quotation is ever disputed, the full copy can be produced. Ask.