// INFORME: Análisis de Compatibilidad CLI

// PROYECTO: Proxmark3 Easy vs Chameleon Ultra

// EQUIPAMIENTO: Dos Mundos, Una Ilusión

// ESTADO: Expectativas vs Realidad

0x01: La Trampa de la Compatibilidad

Cuando adquirí el Chameleon Ultra, asumí que los comandos del Proxmark3 serían compatibles. 

Después de todo, ambos trabajan con RFID/NFC  y usan CLI, ambos operan en las mismas frecuencias.

Spoiler: Completamente diferente.

Este post documenta mi frustrante descubrimiento: los comandos de Proxmark3 -> NO funcionan en Chameleon Ultra

Es una arquitectura completamente diferente que rompe el flujo de curro si estas acostumbrado a Proxmark3.

ADVERTENCIA CRÍTICA

Si vienes del ecosistema Proxmark3 y esperas que tus comandos funcionen en Chameleon, prepárate para reaprender todo desde cero. 

0x02: Especificaciones 

Antes de entrar en los fallos, entendamos las diferencias fundamentales de hardware que explican por qué estos dispositivos NO pueden ser compatibles.

EspecificaciónProxmark3 Easy 512KBChameleon Ultra
ProcesadorAT91SAM7S512 ARM Cortex-M3nRF52840 ARM Cortex-M4
Flash512 KB1 MB
RAM64 KB256 KB
FPGASpartan-6 (limitado)No (ARM nativo)
BateríaNo (USB solo)90 mAh LiPo (6 meses)
ConectividadMicro-USBUSB-C + BLE 5.0
PropósitoAnálisis profundo / InvestigaciónEmulación portátil / Red Team

Como ves, son diferentes.

  • El Proxmark3 es un laboratorio completo con FPGA para análisis de señal en tiempo real. 
  • El Chameleon es un emulador compacto con batería. Diferentes arquitecturas = Diferentes comandos.

0x03: El Shock NPC Version - hw version & hw status

Mi primera decepción llegó con los comandos más básicos: hw version y hw status.

>> Comando: hw version


// PROXMARK3 - SALIDA DETALLADA


Client: Iceman Fork v4.20728

Plataforma: Windows (64b) MinGW-w64

Soporte: Python v3.14.3, Lua v5.4.8

ARM Bootrom: Iceman/master/v4.20728...

FPGA: fpga_pm3_hf.ncd, fpga_pm3_lf.ncd

uC: AT91SAM7S512 Rev A

Flash: 512 KB (80% usado)

// CHAMELEON ULTRA - SALIDA MINIMALISTA


[USB] chameleon --> hw version

Chameleon Ultra, Version: v2.1

Observación: El Proxmark3 te inunda con información técnica (compilador, FPGA, memoria, scripting).

El Chameleon te da una línea.

>> Comando: hw status

// PROXMARK3 - ESTADO REAL DEL HARDWARE


Memory: BigBuf_size 37184 bytes

FPGA image: fpga_pm3_hf.ncd

Flash memory: 2048 Kb, Baudrate 24 MHz

Smart card module: ( fail )

LF Sampling: 125.00 kHz

HF 14a config: Anticol override, BCC override

// CHAMELEON ULTRA - MENÚ DE ¿AYUDA? 


[USB] chameleon --> hw status


// Muestra lista de subcomandos disponibles:

slot, settings, connect, disconnect, mode

chipid, version, battery, factory_reset

MOMENTO WTF 

  • En Proxmark3, hw status te muestra el estado del hardware
  • En Chameleon, te muestra un menú de ayuda
  • El mismo comando, funciones completamente opuestas. 
  • Bienvenido al infierno de la incompatibilidad.

Este fue el comando que me hizo perder la paciencia. 

En Proxmark3, hf search es tu mejor amigo. 

En Chameleon, es una broma cruel...

>> Proxmark3: Búsqueda Activa


[usb] pm3 --> hf search

Searching for ISO14443-A tag...
Valid ISO 14443-A tag found

UID: 72 56 E0 E2
ATQA: 00 04
SAK: 08 [2]
Possible types: MIFARE Classic 1K
Magic capabilities: Gen 1a
Prng detection: weak
Static nonce: yes

Hint: Try 'hf mf info'

Resultado: Detecta la tarjeta, identifica el tipo (MIFARE Classic 1K), detecta que es Gen1a (Magic Card), analiza el PRNG (vulnerable), detecta nonce estático (Fudan), y te sugiere el siguiente comando. 

>> Chameleon Ultra: Búsqueda... ¿De Qué?

[USB] chameleon --> hf search

// No busca nada. Muestra menú:

14a (ISO14443-A)
mf (MIFARE)
mfu (MIFARE Ultralight)
[USB] chameleon --> hf search 14a

// Añado parámetro "14a"... misma salida:

14a (ISO14443-A)
mf (MIFARE)
mfu (MIFARE Ultralight)

Resultado: Nada intuitivo -> Solo muestra un menú de categorías. 

El parámetro 14a es ignorado completamente.

MOMENTO WTF 

  • Un comando llamado search que NO BUSCA NADA. 
  • Esto viola el principio más básico del diseño de interfaces: el nombre debe reflejar la acción
  • En Chameleon, hf search es un menú jerárquico disfrazado de comando.

0x05: Lectura de Bloques y Sectores 

Aquí es donde todo se derrumba. 

Los comandos de lectura de Proxmark3 simplemente NO EXISTEN en Chameleon.

>> Lectura de Sector - hf mf rdsc


[usb] pm3 --> hf mf rdsc -s 0 -k FFFFFFFFFFFF

Reading sector 0

| sec | blk | data |
| 0 | 0 | 72 56 E0 E2 26 08 04 00 62 63 64... |
| 0 | 1 | 00 00 00 00 00 00 00 00 00 00 00... |
| 0 | 2 | 00 00 00 00 00 00 00 00 00 00 00... |
| 0 | 3 | FF FF FF FF FF FF 07 80 69 FF FF... |

Dumped 4 blocks ( 64 bytes ) from sector 0

Resultado Proxmark3: Lee el sector 0 completo (4 bloques) en una sola operación. 

Muestra el UID en bloque 0, datos en bloques 1-2, y el sector trailer con las claves en bloque 3. 

[USB] chameleon --> hf mf rdsc -s 0 -k FFFFFFFFFFFF

Please enter correct parameters

// Muestra lista de comandos disponibles:
nested, darkside, clone, dump
rdbl (Read Block), wrbl (Write Block)
info, wipe, sim, ...

Comando 'rdsc' NO EXISTE

Resultado Chameleon: El comando rdsc NO EXISTE? ¿really? 

Chameleon solo tiene rdbl (read block), lo que significa que para leer un sector completo necesitas ejecutar el comando 4 veces manualmente.

>> Lectura de Bloque - Sintaxis Incompatible


[USB] chameleon --> hf mf rdbl -b 0 -k FFFFFFFFFFFF

hf mf rdbl: error: the following arguments are required:
--blk/--block

!!!Sintaxis incorrecta!!!

Intenté usar -b 0 para especificar el bloque (como en Proxmark3) pero Chameleon espera --blk 0 o --block 0

Además, -b en Chameleon NO es el número de bloque, sino un flag que indica "usar clave B".

// SINTAXIS CORRECTA EN CHAMELEON


hf mf rdbl --blk 0 -b -k FFFFFFFFFFFF


// Desglose:

--blk 0 = número de bloque

-b = usar clave B (sin valor)

-k FFFF... = valor de la clave

MOMENTO WTF 

  • En Proxmark3, -b es el número de bloque. 
  • En Chameleon, -b es un flag booleano para usar clave B. 
  • El mismo parámetro tiene significados opuestos. 
  • Esto no es incompatibilidad, es sabotaje cognitivo.

0x06: Información de Tarjeta - hf mf info

Otro comando crítico con comportamiento completamente diferente.


[usb] pm3 --> hf mf info

ISO14443-A Information
UID: 72 56 E0 E2
ATQA: 00 04
SAK: 08 [2]
Possible types: MIFARE Classic 1K
Fingerprint: Fudan based card
Magic capabilities: Gen 1a
Prng detection: weak
Static nonce: yes

Hint: Use 'hf mf c*' magic commands

Proxmark3: Analiza la tarjeta y te da información detallada (UID, tipo, fabricante Fudan, capacidades mágicas Gen1a, PRNG débil, nonce estático). 

Te guía con ALGO.

[USB] chameleon --> hf mf info

// No muestra info de la tarjeta
// Muestra menú de comandos disponibles

nested, darkside, clone, dump, rdbl, wrbl
info, wipe, sim, econfig, elog, decrypt...

Chameleon: No muestra información de ninguna tarjeta. 

Muestra otro menú de ayuda listando comandos disponibles.

PATRÓN DETECTADO

En Chameleon, los comandos no son acciones, son navegación por menús jerárquicos. hfmfinfo no ejecuta "info", sino que muestra el submenú de "info". 

Para ejecutar la acción real, necesitas añadir más parámetros.

0x07: Matriz de Compatibilidad 

Aquí está la tabla que resume mi dolor. Comandos esenciales de Proxmark3 y su estado en Chameleon:

Comando Proxmark3¿Funciona en Chameleon?Comportamiento en Chameleon
hw versionParcialSalida minimalista (solo versión)
hw statusNoMuestra menú de ayuda (no estado)
hw tuneNoComando no existe
hf searchNoNo busca, muestra menú de categorías
hf mf infoNoMuestra menú de subcomandos (no info)
hf mf rdscNoComando no existe (solo rdbl)
hf mf rdbl -b NNoSintaxis incorrecta (necesita --blk)
hf mf dumpFunciona (uno de los pocos)
hf mf chkFunciona
hf mf csetuidNoComando no existe
hf mf simFunciona (sintaxis diferente)
lf searchParcialComportamiento diferente
lf em readFunciona

Veredicto: De 13 comandos esenciales probados, solo 4 funcionan correctamente, 2 funcionan parcialmente, y 7 fallan completamente

0x08: Diferencias Filosóficas en CLI

Después de un rato de frustración, entendí el problema fundamental: no es solo sintaxis, es filosofía de diseño.

// PROXMARK3: ORIENTADO A LA ACCIÓN


Filosofía: Comandos son verbos que ejecutan acciones directas

search BUSCA activamente

info MUESTRA información de la tarjeta

rdsc LEE un sector completo

status REPORTA el estado del hardware

Ventaja: Intuitivo, predecible, rápido de aprender

Feedback: Resultados inmediatos con sugerencias de próximos pasos

// CHAMELEON ULTRA: NAVEGACIÓN POR MENÚS


Filosofía: Comandos son espacios de nombres jerárquicos

search NO busca, muestra categorías

info NO informa, muestra submenú

rdsc NO EXISTE (usar rdbl x4)

status muestra ayuda, no estado

Desventaja: Nombres engañosos, mayor carga cognitiva

Feedback: Menús genéricos sin contexto de la tarjeta

LECCIÓN APRENDIDA

Chameleon no tiene una CLI "mala", tiene una CLI diferente

El problema es que usa los mismos nombres de comandos que Proxmark3 pero con significados opuestos. 

Esto viola el Principio de Mínima Sorpresa y genera confusión masiva para usuarios que venimos del ecosistema Proxmark3.

0x09: ¿Cuándo Usar Cada Uno?

Después de esta experiencia, aquí está mi recomendación basada en casos de uso reales:

// USA PROXMARK3 CUANDO


  • Necesitas análisis profundo de RF (sintonización de antenas, análisis de señal)
  • Trabajas en laboratorio con PC conectado
  • Requieres versatilidad de protocolos (ISO15693, iClass, etc.)
  • Necesitas comandos intuitivos orientados a la acción
  • Realizas investigación y desarrollo

// USA CHAMELEON ULTRA CUANDO


  • Necesitas portabilidad extrema (batería, tamaño llavero)
  • Quieres emular múltiples tarjetas sin PC (8 slots HF + 8 LF)
  • Trabajo de campo / Red Team / Pentesting móvil
  • Control inalámbrico (BLE 5.0)
  • Enfoque en clonación/emulación rápida

// RECOMENDACIÓN PROFESIONAL


Pillar AMBOS es la solución ideal

Proxmark3 para análisis en laboratorio

Chameleon Ultra para operaciones de campo

0x0A: Conclusiones y Lecciones

Esta experiencia me enseñó varias lecciones dolorosas pero valiosas:

// VERDADES TÉCNICAS INELUDIBLES


1. La Compatibilidad es una Ilusión

No asumas que comandos con el mismo nombre hacen lo mismo en dispositivos diferentes. 


2. Arquitectura Diferente = CLI Diferente

  • Proxmark3 tiene FPGA, Chameleon no. 
  • Esto explica por qué comandos como hw tune (sintonización de antenas) simplemente no pueden existir en Chameleon.

3. Los Nombres Importan

  • Un comando llamado search que no busca nada es diseño hostil. 
  • Los desarrolladores de Chameleon deberían renombrar estos comandos para evitar confusión.

4. Documentación > Suposiciones

  • Pasé un buen rato intentando que comandos de Proxmark3 funcionaran en Chameleon. 
  • 10 minutos leyendo la documentación de Chameleon me habrían ahorrado time pero es que odio leer docu de Github.

5. Son Herramientas Complementarias

  • Proxmark3 y Chameleon no compiten. 
  • Resuelven problemas diferentes en contextos diferentes. 
  • Dejar de buscar compatibilidad y aprovechar las fortalezas de cada uno.

Tengo ambos dispositivos en mi arsenal. 

Uso Proxmark3 para análisis en mi laboratorio y Chameleon para operaciones de campo (te vas al Metro y la lias)

Cada uno con su propia sintaxis, su propia filosofía, y su propio propósito.

Bajo mi opinión ya que son perfectamente amoldables y ambos se complementan podrían hablar el mismo idioma, normal que pase igual con el amor en pareja


"Two devices, one mission, zero compatibility."

[ EOF ] 2DevNullPoisonXploit