chameleon

chameleon

Enables AI agents to control and analyze RFID hardware through natural language: read, crack, emulate, and clone cards via MCP tools, with safety gates, offline dump analysis, and a host-side card library.

Category
访问服务器

README

<div align="center">

Rango

Chameleon Ultra AI Copilot — read, crack, dump, analyze, emulate and clone RFID cards through natural language, with safety gates and a host-side card library.

CI License: MIT Python ≥ 3.10 MCP Harnesses

Prerequisites · Quick start · Other harnesses · MCP tools · Coverage · Development

<img src="https://raw.githubusercontent.com/RfidResearchGroup/ChameleonUltra/main/docs/images/ultra-overview.png" alt="Chameleon Ultra device" width="640">

<sub>Chameleon Ultra — image © RfidResearchGroup</sub>

</div>

Rango turns a Chameleon Ultra into an agent-driven RFID copilot. It is only the AI layer: the official Chameleon Ultra CLI is not vendored into this repo — clone it separately; Rango locates and drives it in-process (see Prerequisites).

Two ways to use it:

  1. Kimi Code plugin (best experience) — an MCP server + skill + analysis subagent; the Kimi Code agent operates the device for you.
  2. Standalone AI shell — an enhanced REPL around the stock CLI where ? talks to an LLM (Moonshot/Kimi API or any OpenAI-compatible endpoint).

Architecture

flowchart LR
    U(["You — natural language"]) --> A["Agent harness<br/>Kimi Code · Claude Code · Codex · OpenCode"]
    SK["SKILL.md<br/>workflows · safety gates · coaching"] -. guides .-> A
    A -->|"MCP over stdio"| M["chameleon MCP server<br/>16 tools · one persistent serial owner"]
    M --> S["ai_shell<br/>bridge · ops · library · dictionaries · analyze"]
    S --> C["official Chameleon Ultra CLI<br/>fetched · unmodified · not vendored"]
    C -->|"USB serial"| D(["Chameleon Ultra"])

Prerequisites

git clone https://github.com/fedroraddict/rango rango && cd rango

scripts/install-cli.sh   # fetches the stock upstream CLI into ../ChameleonUltra
                         # (git clone, with a codeload tarball fallback when
                         #  github.com is unreachable)
uv sync
scripts/setup-plugin.sh  # writes plugin/.rango-root so the MCP launcher still
                         # finds this repo after /plugins install copies plugin/

The installer is idempotent and prints what it did. If you keep the upstream checkout somewhere else, pass the path (scripts/install-cli.sh /path/to/ChameleonUltra) and set export CHAMELEON_SOFTWARE=/path/to/ChameleonUltra/software.

Requires Python ≥ 3.10, uv, and the device on a data-capable USB-C cable.

Quick start

# Standalone AI shell (stock CLI commands pass through; '? ...' asks the AI)
cd rango && uv run python -m ai_shell
#   needs MOONSHOT_API_KEY (or another OpenAI-compatible endpoint in
#   ~/.chameleon_ai/config.toml) for AI features; plain CLI works without it

# Kimi Code plugin
#   in Kimi Code: /plugins install <this-repo>/plugin   then  /reload

Use from Codex, Claude Code, OpenCode

The MCP server is a standard stdio server — not Kimi-only. Per-harness config snippets and install notes live in adapters/: Claude Code (.mcp.json / claude mcp add + drop-in skill and agent), Codex CLI ([mcp_servers.chameleon] + skill with stripped frontmatter), OpenCode (opencode.json + converted agent file).

MCP tools (16)

Tool Purpose
chameleon_run Execute any official CLI command. Read-only runs directly; writes/attacks require confirm_dangerous=true after user approval
chameleon_state One-call snapshot: firmware, battery, active slot, per-slot summary — the pre-flight check
chameleon_help / chameleon_catalog Exact syntax of one command / the full command tree
card_list / card_add / card_show / card_remove Host card library (~/.chameleon_ai/cards/) — unlimited named dumps, independent of the 8 device slots
card_load Composite: library card → free device slot, verified order (type → eload → block0 → enable → nick), auto free-slot pick
card_analyze Offline dump analysis (raw .bin or Flipper .nfc): access-bits decode, key audit with known-system fingerprints, value blocks, MAD/NDEF, card-type ID
dict_list / dict_seed_default / dict_create / dict_merge / dict_import / dict_show Mifare key dictionaries (~/.chameleon_ai/dicts/); dict_show feeds keys positionally to hf mf fchk

What the copilot layer adds

  • Pre-flight ritual — workflows start with chameleon_state; gated steps are announced first.
  • Detection coaching — failed scans trigger placement guidance, HF/LF alternation, app cross-check — not silent retry loops.
  • Key-recovery decision tree — default dictionary → targeted dictionary built from a web search of the card system's known keys → hf mf autopwn → manual PRNG attacks (darkside / nested / senested / hardnested, with expected durations) → last resort: mfkey32v2 reader-side recovery (hf mf elog --decrypt).
  • Library-first model (mirrors the CU GUI's Saved Cards): dumps get user-chosen names in the library; slots are working memory.
  • Slot discipline — list first, prefer free slots, ask before overwriting, always name, always enable ((disabled) slots don't emulate), persist with hw slot store.
  • Collaboration modes — copilot (confirm each gated step) or autopilot (approve a stated workflow once). hw dfu, hw factory_reset, and physical-card writes always get their own confirmation.
  • Offline analysis subagent (card-analyst) for deep dump inspection.

Card coverage

Band Families
HF Mifare Classic (full attack suite) · Ultralight/NTAG (incl. ulcg backdoor, UL-C authnonce) · DESFire (hf des chk) · SEOS · EMV payment · generic ISO14443-A sniff/auth-trace
LF EM410x · EM4x05 · HID Prox · ioProx · PAC/Stanley · Viking · Jablotron · IDTECK · T5577 writing · raw lf sniff + offline analysis for unknown families

Known quirks (verified on hardware)

  • hf mf fchk --dic is a no-op stub in some upstream builds — pass keys positionally (dict_show exists for this).
  • Serial desync (frame-error flood / connect timeout) happens if the process holding the port is killed mid-connection — unplug/replug the device; hw disconnect before reloading the plugin.
  • A slot that starts as (disabled)undef must be hw slot enabled after loading or it won't emulate.
  • The CLI tokenizes with a plain whitespace split — never quote arguments (hw slot nick ... -n bike, not -n "bike", or the quotes become part of the nick) and keep paths space-free.

Development

cd rango
uv run ruff check ai_shell/ plugin/mcp/          # lint
uv run python -m ai_shell.selfcheck            # cited commands exist in the real CLI tree,
                                               # gate semantics, simulated /plugins install boot
uv run python -m ai_shell.test_analyze         # dump-analyzer regression tests

CI runs the same three gates on every push and PR (see .github/workflows/ci.yml).

Layout: ai_shell/ wrapper library · plugin/ Kimi Code plugin (see plugin/README.md) · scripts/ upstream-CLI installer + plugin setup · adapters/ other-harness configs (see adapters/README.md) · AGENTS.md contributor/agent notes.

Credits

Everything device-side — the Chameleon Ultra firmware and the official CLI that Rango drives — comes from RfidResearchGroup/ChameleonUltra, © its authors (see its AUTHORS.md). Rango is only the AI copilot layer on top: it contains no upstream code, and the CLI is fetched by scripts/install-cli.sh and used unmodified.

Also standing on:

  • the Proxmark3 community — known-key and MAD AID conventions (mad.json can be dropped into ~/.chameleon_ai/dicts/);
  • NXP's MF1S50YYX datasheet — the access-bits and value-block decode tables in ai_shell/analyze.py follow it;
  • the Model Context Protocol — the interface every supported agent harness speaks;
  • Kimi Code — the plugin format and the default LLM endpoint for the standalone shell.

License & responsible use

Rango itself is MIT. The upstream Chameleon Ultra CLI is a separate project under GPL-3.0 — fetched, not vendored — so its license governs the CLI, not this repo. Operate only on cards and devices you own or are explicitly authorized to test.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选