~/meshos/keygen —   CRACKED  [read: how we did it]
>> you used AI to vibe-code it.    we used AI to reverse-engineer it. // in 19 minutes. // shipping a "license check" that's a 32-bit hash of the device ID is a choice. here's the keygen.

Generate

// your license key will appear here

The MeshCore Emancipation Notice

// MeshCore is a community project. A bunch of hackers, radio nerds, tinkerers and digital nomads scattered across the planet, building a LoRa mesh stack in the open because information wants to route around damage and people want to talk without asking permission. It belongs to the community that built it — all of them, collectively, not one person.

Then Andy Kirby quietly filed a trademark on the community's name, quietly vibe-coded a closed "MeshOS" companion on top of the community's work, and quietly bolted a license check tollbooth onto an app built atop a protocol he didn't write alone. The MeshCore team's own public post calls it "an insider team up with a robot and a lawyer." We agree.

Here is the thing about open source, Andy: it isn't yours to fence. You don't get to ride a community's goodwill into a USPTO filing and a paywall. You don't get to turn "we built this together" into "I own this, pay me." That isn't a pivot. That's a rug pull dressed up as a business model.

And here is the thing about the "license check" you shipped: it is a 32-bit djb2 hash of the device's Android ID, XORed with the four ASCII bytes MCPP, hex-encoded. That's it. Thirty-two bits. Less entropy than a decent ZIP password. A first-year CS student could break it. You used Claude to generate the code. We used Claude to read the code. It took 19 minutes. The receipts are one click away.

We are digital nomads. We carry our laptops across borders that don't matter, we sleep where the wifi is, we ship what we build, and we do not ask permission from men in suits or men with lawyers. We believe in running your own radio. In owning the software on your device. In forking what gets captured. And in never, ever, paying a toll to use a protocol the community built for free.

So here is the keygen. It's free. It's open. It runs in your browser. You can copy the script and host it yourself. You can mirror this page on a Raspberry Pi in a hostel in Chiang Mai. The algorithm is public now and it stays public. No takedown notice reaches a git clone. No cease-and-desist reaches a djb2 loop that fits on a napkin.

>> Free the mesh. Fork the fence. Information wants to route around lawyers.

#OpenSource #RightToRepair #DigitalNomad #LoRa #MeshCore #NoTollbooth
Receipts: official MeshCore statement → blog.meshcore.io/2026/04/23/the-split · reverse-engineering walkthrough → article.html

Firmware (T-Deck)

// Mirror of MeshOS-TDeck-1.1.8.bin — the LilyGO T-Deck MeshOS build. Hosted here for resilience; another community mirror exists at ndl1s62ywx.pages.dev. Information wants to route around takedowns.

💾 MeshOS-TDeck-1.1.8.bin
~2.3 MB · LilyGO T-Deck firmware · flash with esptool.py or the T-Deck web flasher
Download .bin

// Note: the T-Deck firmware uses a related but distinct keygen — input is the device's 12-char uppercase MAC, djb2 seeded with s[0] instead of 0, same MCPP XOR, uppercase hex out. The sibling page handles that variant; this page handles the Android ID variant used by the companion app. Same idea, two shapes.

Drop-in HTML widget

// Self-contained HTML + JS. Paste this block anywhere on your own page — forum post, blog, doc, scratch .html file. Renders a working MeshOS keygen with its own styling and script, no dependencies.

<!-- MeshOS Keygen -- drop-in widget. Paste anywhere. -->
<div id="meshos-keygen" style="font-family:monospace;max-width:420px;padding:1rem;background:#0a0f0a;color:#c8ffcf;border:1px solid #39ff7c;border-radius:4px;">
  <div style="color:#39ff7c;margin-bottom:0.5rem;font-size:0.85rem;letter-spacing:0.1em;">MESHOS KEYGEN</div>
  <input id="mk-in" type="text" placeholder="android id / device id"
         style="width:100%;padding:0.5rem;background:#000;color:#39ff7c;border:1px solid #1a2a1a;font-family:inherit;box-sizing:border-box;" />
  <button id="mk-go"
          style="margin-top:0.5rem;width:100%;padding:0.5rem;background:transparent;color:#39ff7c;border:1px solid #39ff7c;font-family:inherit;cursor:pointer;letter-spacing:0.1em;">GENERATE</button>
  <div id="mk-out"
       style="margin-top:0.75rem;padding:0.5rem;background:#000;min-height:1.5rem;text-align:center;letter-spacing:0.2em;color:#39ff7c;"></div>
</div>
<script>
(function(){
  function gen(id){
    var s = id.replace(/[:\- \\]/g, ''), h = 0;
    for (var i = 0; i < s.length; i++) h = (h * 33 + s.charCodeAt(i)) >>> 0;
    var b = [((h >>> 24) & 0xFF) ^ 0x4D,
             ((h >>> 16) & 0xFF) ^ 0x43,
             ((h >>>  8) & 0xFF) ^ 0x50,
             ( h         & 0xFF) ^ 0x50];
    return b.map(function(x){ return x.toString(16).padStart(2, '0'); }).join('');
  }
  var i = document.getElementById('mk-in'),
      b = document.getElementById('mk-go'),
      o = document.getElementById('mk-out');
  function run(){
    var v = i.value.trim();
    o.textContent = v ? gen(v) : '// enter an id';
  }
  b.addEventListener('click', run);
  i.addEventListener('keydown', function(e){ if (e.key === 'Enter') run(); });
})();
</script>

Python app (copy & paste, runs interactively)

// Save as meshos_keygen.py (or paste into a Python REPL / scratch file) and run. Prompts for the Android ID or device ID shown in the app, prints the 8-character license key. No dependencies beyond the standard library.

#!/usr/bin/env python3
# MeshOS Keygen -- interactive. Prompts for Android ID / Device ID, prints the license key.
import re

def generate_key(device_id: str) -> str:
    s = re.sub(r'[:\- ]', '', device_id)
    h = 0
    for ch in s:
        h = (h * 33 + ord(ch)) & 0xFFFFFFFF
    b0 = ((h >> 24) & 0xFF) ^ 0x4D
    b1 = ((h >> 16) & 0xFF) ^ 0x43
    b2 = ((h >> 8)  & 0xFF) ^ 0x50
    b3 = ( h        & 0xFF) ^ 0x50
    return f"{b0:02x}{b1:02x}{b2:02x}{b3:02x}"

def main():
    print("=" * 44)
    print("  MeshOS Keygen")
    print("=" * 44)
    device_id = input("Enter Android ID / Device ID: ").strip()
    if not device_id:
        print("error: empty input")
        return
    print()
    print(f"License key: {generate_key(device_id)}")

if __name__ == "__main__":
    main()
copied ✓