Merge pull request #3280 from kormax/hf-calypso-info

Add `hf calypso info` command
This commit is contained in:
Iceman
2026-05-02 08:26:01 +07:00
committed by GitHub
13 changed files with 1792 additions and 50 deletions
+2
View File
@@ -66,6 +66,8 @@ cov-int/
!client/resources/hardnested_tables/*.z
!client/resources/felica_system_code_list.json
!client/resources/felica_ic_code_list.json
!client/resources/calypso/
!client/resources/calypso/*.json
client/src/ui/ui_image.h
client/src/ui/ui_overlays.h
client/deps/reveng/bmptst
+1
View File
@@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
## [unreleased][unreleased]
- Added `hf calypso info` command (@kormax)
- Added ARM compilation support for picolibc, fixing compilation on Debian Forky (@doegox)
- Added `hf mdfes leaf` command (@pcunning)
- Added `hf mfdes vdesign` command (@kormax)
+1
View File
@@ -389,6 +389,7 @@ set (TARGET_SOURCES
${PM3_ROOT}/client/src/cmdhf14b.c
${PM3_ROOT}/client/src/cmdhf15.c
${PM3_ROOT}/client/src/cmdhfaliro.c
${PM3_ROOT}/client/src/cmdhfcalypso.c
${PM3_ROOT}/client/src/cmdhfcipurse.c
${PM3_ROOT}/client/src/cmdhfcryptorf.c
${PM3_ROOT}/client/src/cmdhfemrtd.c
+1
View File
@@ -686,6 +686,7 @@ SRCS = mifare/aiddesfire.c \
cmdhf14b.c \
cmdhf15.c \
cmdhfaliro.c \
cmdhfcalypso.c \
cmdhfcryptorf.c \
cmdhfepa.c \
cmdhfemrtd.c \
+1
View File
@@ -308,6 +308,7 @@ set (TARGET_SOURCES
${PM3_ROOT}/client/src/cmdhf14b.c
${PM3_ROOT}/client/src/cmdhf15.c
${PM3_ROOT}/client/src/cmdhfaliro.c
${PM3_ROOT}/client/src/cmdhfcalypso.c
${PM3_ROOT}/client/src/cmdhfcipurse.c
${PM3_ROOT}/client/src/cmdhfcryptorf.c
${PM3_ROOT}/client/src/cmdhfemrtd.c
+90 -50
View File
@@ -2924,6 +2924,24 @@
"android://it.atm.appmobile"
]
},
{
"AID": "A000000291",
"Vendor": "Calypso Networks Association (CNA)",
"Country": "France",
"Name": "",
"Description": "AID prefix for new CALYPSO-based transit cards",
"Type": "transport",
"Protocol": "cna_calypso"
},
{
"AID": "A000000404",
"Vendor": "Calypso Networks Association (CNA)",
"Country": "France",
"Name": "",
"Description": "AID prefix for some CALYPSO-based transit cards",
"Type": "transport",
"Protocol": "cna_calypso"
},
{
"AID": "315449432E494341",
"Vendor": "Calypso Networks Association (CNA)",
@@ -2938,30 +2956,6 @@
"android://com.spirtech.emiliaromagna"
]
},
{
"AID": "315449432E494341D48401019101",
"Vendor": "Spirtech",
"Country": "Italy",
"Name": "Mover Emilia Romagna",
"Description": "Calypso-based ticket for public transport in Emilia-Romagna.",
"Type": "transport",
"Protocol": "cna_calypso",
"Sources": [
"android://com.spirtech.emiliaromagna"
]
},
{
"AID": "315449432E494341D62000029101",
"Vendor": "Transportes Metropolitanos do Porto",
"Country": "Portugal",
"Name": "Andante",
"Description": "Calypso-based ticket for public transport in the Porto Metropolitan Area, used by the Anda app.",
"Type": "transport",
"Protocol": "cna_calypso",
"Sources": [
"android://pt.opt.anda"
]
},
{
"AID": "304554502E494341",
"Vendor": "Calypso Networks Association (CNA)",
@@ -2971,18 +2965,6 @@
"Type": "",
"Protocol": "cna_calypso"
},
{
"AID": "304554502E494341D484010192",
"Vendor": "Secretaria de Movilidad (SEMOVI)",
"Country": "Mexico",
"Name": "Tarjeta Virtual de Movilidad Integrada",
"Description": "Store value application for the virtual Tarjeta MI used on Mexico City public transport, distributed through App CDMX.",
"Type": "transport",
"Protocol": "cna_calypso",
"Sources": [
"android://mx.gob.cdmx.adip.apps"
]
},
{
"AID": "324D50502E494341",
"Vendor": "Calypso Networks Association (CNA)",
@@ -3002,34 +2984,79 @@
"Protocol": "cna_calypso"
},
{
"AID": "A0000004040125090101",
"AID": "315449432E494341D48401019101",
"Vendor": "Spirtech",
"Country": "N/A",
"Name": "Mover Emilia Romagna | CDMX Tarjeta de Movilidad",
"Description": "Calypso-based ticket for public transport in Emilia-Romagna or Mexico City.",
"Type": "transport",
"Protocol": "cna_calypso",
"Sources": [
"android://com.spirtech.emiliaromagna",
"android://mx.gob.cdmx.adip.apps"
]
},
{
"AID": "A000000291D62000029101",
"Vendor": "Transportes Metropolitanos do Porto",
"Country": "Portugal",
"Name": "Andante",
"Description": "Calypso-based ticket for public transport in the Porto Metropolitan Area, used by the Anda app.",
"Type": "transport",
"Protocol": "cna_calypso",
"Sources": [
"android://pt.opt.anda"
]
},
{
"AID": "304554502E494341D484010192",
"Vendor": "Secretaria de Movilidad (SEMOVI)",
"Country": "Mexico",
"Name": "Tarjeta Virtual de Movilidad Integrada",
"Description": "Store value application for the virtual Tarjeta MI used on Mexico City public transport, distributed through App CDMX.",
"Type": "transport",
"Protocol": "cna_calypso",
"Sources": [
"android://mx.gob.cdmx.adip.apps"
]
},
{
"AID": "A00000040401250901",
"Vendor": "Ile-de-France Mobilites",
"Country": "France",
"Name": "Navigo",
"Description": "CALYPSO-based transit card",
"Type": "transport",
"Protocol": "cna_calypso"
"Protocol": "cna_calypso",
"Sources": [
"android://com.applidium.vianavigo",
"android://com.worldline.wallet"
]
},
{
"AID": "A0000004040125090101000000000000",
"Vendor": "Ile-de-France Mobilites",
"Country": "France",
"Name": "Navigo",
"Description": "CALYPSO-based transit card",
"Type": "transport",
"Protocol": "cna_calypso"
},
{
"AID": "A00000040401250057",
"AID": "A00000040401250057F0",
"Vendor": "TCL",
"Country": "France",
"Name": "E-ticket Lyon",
"Description": "CALYPSO-based transit card",
"Type": "transport",
"Protocol": "cna_calypso",
"Sources": [
"android://com.tcl.eticket",
"android://com.worldline.wallet"
]
},
{
"AID": "A0000004040125009101",
"Vendor": "CTS",
"Country": "France",
"Name": "Strasbourg",
"Description": "CALYPSO-based transit card used by Strasbourg CTS.",
"Type": "transport",
"Protocol": "cna_calypso"
},
{
"AID": "A0000004040125006901000000000000",
"AID": "A00000040401250920",
"Vendor": "Lignes D'Azur",
"Country": "France",
"Name": "La Carte",
@@ -3038,12 +3065,25 @@
"Protocol": "cna_calypso"
},
{
"AID": "A0000004040125092001000000000000",
"AID": "54494C414D4F32000000",
"Vendor": "Lignes D'Azur",
"Country": "France",
"Name": "La Carte",
"Description": "CALYPSO-based transit card",
"Type": "transport",
"Protocol": "cna_calypso",
"Sources": [
"android://eu.mobeepass.nfcniceticket",
"android://eu.mobeepass.walletapplication"
]
},
{
"AID": "A000000291D05600019001",
"Vendor": "MOBIB",
"Country": "Belgium",
"Name": "MOBIB",
"Description": "Calypso-based transit card used by Brussels public transport.",
"Type": "transport",
"Protocol": "cna_calypso"
},
{
+80
View File
@@ -0,0 +1,80 @@
[
{
"id": "2F",
"name": "ST31N family",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2023-087_certification-letter-stm-calypso-prime-cd21-flash-rev-3.3-sign.pdf"
]
},
{
"id": "3C",
"name": "SLE77CLFXxxxxP(M) family",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2022-001-certification-letter-hid-calypso-po-prime-soma-atlas-v2-v1.0.0.pdf"
]
},
{
"id": "3E",
"name": "SLE77CLF family",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2023-083_certification-letter-hid-calypso-light-soma-atlas-clap-v2-sign.pdf"
]
},
{
"id": "3F",
"name": "SLC32 family",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_2020-069-certification-report_calypsog2prime_v1.0.0.pdf"
]
},
{
"id": "49",
"name": "ST33J",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_2021-005-certification-report_st54h_v1.0.0.pdf"
]
},
{
"id": "50",
"name": "SLC36 family",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2024-188-certification-letter_calypso-applet_idemia-urbango-fly-40-sign.pdf",
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2023-188-certification-letter_thales-gemalto-calypso-prime-g3_sign.pdf"
]
},
{
"id": "51",
"name": "SLM10TLD002Y",
"sources": [
"https://www.infineon.com/assets/row/public/documents/30/67/infineon-calypsotm-move-calypsor-basic-certificatepaycert-certificates-en.pdf"
]
},
{
"id": "52",
"name": "SLC26 family",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2025-177-v1.0.0_paragon-id-tango-prime-v3-sign.pdf",
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2025-086-v3.0.0_watchdata-timecos-clap-1.2-sign.pdf"
]
},
{
"id": "53",
"name": "S3DxxxA family",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2026-032-v1.0.0_hid-global-soma-atlas-v2s-sign.pdf"
]
},
{
"id": "C0",
"name": "Java Card",
"note": "Some older HCE implementations also report platform byte C0.",
"sources": [
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2024-001-certification-letter_calypso-applet_mobileknowledge-sn300-b5-series-sign.pdf",
"https://www.paycert.eu/certificats/cert_cer_cle_cna_2023-148-certification-letter_calypso-applet_thales-tess-v5.0-publi.pdf"
]
},
{
"id": "E0",
"name": "HCE"
}
]
+198
View File
@@ -0,0 +1,198 @@
[
{
"id": "00",
"name": "ASK",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "01",
"name": "Intec",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "02",
"name": "Calypso Networks Association",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "03",
"name": "Ascom",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "04",
"name": "Thales",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "05",
"name": "Sagem",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "06",
"name": "Axalto",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "07",
"name": "Bull",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "08",
"name": "Spirtech",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "09",
"name": "BMS",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "0A",
"name": "Oberthur",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "0B",
"name": "Gemplus",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "0C",
"name": "Magnadata",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "0D",
"name": "Calmell",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "0E",
"name": "Mecstar",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "0F",
"name": "ACG Identification Technologies",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "10",
"name": "STMicroelectronics",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "11",
"name": "Calypso Networks Association",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "12",
"name": "Giesecke & Devrient",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "13",
"name": "OTI",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "14",
"name": "Gemalto",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "15",
"name": "Watchdata",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "16",
"name": "Alios",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "17",
"name": "S-P-S",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "18",
"name": "IRSA",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "20",
"name": "Calypso Networks Association",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "21",
"name": "Innovatron",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
},
{
"id": "2E",
"name": "Calypso Networks Association",
"sources": [
"https://github.com/zoobab/mobib-extractor/blob/master/MOBIB-Extractor.py"
]
}
]
+93
View File
@@ -0,0 +1,93 @@
[
{
"id": "056001",
"name": "MOBIB / Brussels",
"sources": [
"https://github.com/zoobab/mobib-extractor",
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/mobib/MobibTransitData.kt"
]
},
{
"id": "250000",
"name": "Pass Pass",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/intercode/IntercodeTransitData.kt"
]
},
{
"id": "250057",
"name": "Lyon TCL"
},
{
"id": "250064",
"name": "TaM Montpellier",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/intercode/IntercodeTransitData.kt"
]
},
{
"id": "250069",
"name": "Lignes D Azur"
},
{
"id": "250091",
"name": "CTS Strasbourg"
},
{
"id": "250502",
"name": "Oura",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/intercode/IntercodeTransitData.kt"
]
},
{
"id": "250901",
"name": "Navigo",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/intercode/IntercodeTransitData.kt"
]
},
{
"id": "250908",
"name": "KorriGo",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/intercode/IntercodeTransitData.kt"
]
},
{
"id": "250916",
"name": "Tisseo / Pastel",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/intercode/IntercodeTransitData.kt"
]
},
{
"id": "250920",
"name": "Lignes D Azur / Envibus",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/intercode/IntercodeTransitData.kt"
]
},
{
"id": "250921",
"name": "TransGironde",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/intercode/IntercodeTransitData.kt"
]
},
{
"id": "380100",
"name": "Pisa Carta Mobile",
"sources": [
"https://github.com/metrodroid/metrodroid/blob/04a603ba6/src/commonMain/kotlin/au/id/micolous/metrodroid/transit/pisa/PisaTransitData.kt"
]
},
{
"id": "802640",
"name": "CDMX"
},
{
"id": "988008",
"name": "Andante / Transportes Metropolitanos do Porto"
}
]
+2
View File
@@ -26,6 +26,7 @@
#include "cmdhf14b.h" // ISO14443-B
#include "cmdhf15.h" // ISO15693
#include "cmdhfaliro.h" // ALIRO digital keys
#include "cmdhfcalypso.h" // Calypso transport cards
#include "cmdhfcipurse.h" // CIPURSE transport cards
#include "cmdhfcryptorf.h" // CryptoRF
#include "cmdhfepa.h" // German Identification Card
@@ -580,6 +581,7 @@ static command_t CommandTable[] = {
{"14b", CmdHF14B, AlwaysAvailable, "{ ISO14443B RFIDs... }"},
{"15", CmdHF15, AlwaysAvailable, "{ ISO15693 RFIDs... }"},
{"aliro", CmdHFAliro, AlwaysAvailable, "{ ALIRO digital access credentials... }"},
{"calypso", CmdHFCalypso, AlwaysAvailable, "{ Calypso transport cards... }"},
// {"cryptorf", CmdHFCryptoRF, AlwaysAvailable, "{ CryptoRF RFIDs... }"},
{"cipurse", CmdHFCipurse, AlwaysAvailable, "{ Cipurse transport Cards... }"},
{"epa", CmdHFEPA, AlwaysAvailable, "{ German Identification Card... }"},
File diff suppressed because it is too large Load Diff
+26
View File
@@ -0,0 +1,26 @@
//-----------------------------------------------------------------------------
// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// See LICENSE.txt for the text of the license.
//-----------------------------------------------------------------------------
// High frequency Calypso commands
//-----------------------------------------------------------------------------
#ifndef CMDHFCALYPSO_H__
#define CMDHFCALYPSO_H__
#include "common.h"
int CmdHFCalypso(const char *Cmd);
#endif
+2
View File
@@ -221,6 +221,8 @@ const static vocabulary_t vocabulary[] = {
{ 1, "hf aliro list" },
{ 0, "hf aliro info" },
{ 0, "hf aliro read" },
{ 1, "hf calypso help" },
{ 0, "hf calypso info" },
{ 1, "hf cipurse help" },
{ 0, "hf cipurse info" },
{ 0, "hf cipurse select" },