Skip to content

Variables y perfiles

Glitchboi edited this page Sep 13, 2026 · 1 revision

Variables y perfiles

Un proyecto es un espacio de trabajo persistente en ~/.local/share/emvy/projects/<nombre>/ (respeta XDG_*):

  • project.json — manifest (nombre, descripción, creado, lector preferido).
  • variables.json — lista de variables de entorno.
  • captures/*.json — volcados de tarjeta.

El proyecto activo se guarda en ~/.config/emvy/state.json.

emvy project new lab --desc "pentest lab"
emvy project list | use <n> | rm <n> | show
emvy project export lab -o ./backups         # empaqueta a .zip
emvy project import lab.zip --name lab2 --use

Tipos de variable

Una variable (project.model.Variable) es de dos clases:

  • terminal — parámetro del perfil de terminal EMV, mapeado a un tag. El conjunto de variables terminal se convierte en un TerminalProfile (dict[tag_hex, bytes]) que alimenta la construcción de DOL (PDOL/CDOL/DDOL) en el GPO.
  • user — par clave-valor libre (objetivos, notas, secretos, plantillas).
emvy var set amount 000000001500      # variable terminal (por alias)
emvy var set merchant_name "ACME"      # tag de texto (an/ans)
emvy var set target "BancoX" --user    # variable libre
emvy var list | get <n> | rm <n>       # (alias del comando: `env`)

Alias amistosos

Puedes usar el alias o el tag hex directamente:

Alias Tag Alias Tag
amount 9F02 ttq 9F66
country 9F1A merchant_name 9F4E
currency 5F2A terminal_caps 9F33
tvr 95 unpredictable_number / un 9F37
txn_date 9A txn_type 9C

Codificación de valores

env.encode_value decide según el tipo del tag:

  • Tags de texto (an/ans, p.ej. merchant_name): el valor es texto ASCII ("ACME").
  • El resto (n/b/cn, p.ej. amount): el valor es hex (000000001500).

env.default_variables() siembra el perfil por defecto desde core.emv.default_terminal_profile().


Perfiles preconfigurados

Perfiles de terminal aplicables en un paso (emvy var apply <perfil>), que fijan terminal_type/ttq/txn_type y demás:

emvy var profiles                 # lista los perfiles
emvy var apply contactless-kiosk  # kiosko sin CVM

Perfiles típicos: kiosko sin CVM, POS atendido, contacto genérico, ATM. En la TUI/GUI (pestaña Variables) se aplican con un botón.


Proyectos en ruta (engagements)

Además de los proyectos XDG, un proyecto puede vivir en cualquier carpeta con project.json (útil para versionar engagements de cliente aparte de la herramienta):

emvy project use ./engagements/<cliente>     # o: export EMVY_PROJECT=/ruta

Prioridad del proyecto activo: EMVY_PROJECT > active_path > nombre XDG. Nunca subas datos de cliente al repo de la herramienta.

Clone this wiki locally