Files
Momentum-Firmware/applications/main/nfc/application.fam
Luu 8174ffa5b3 NFC: NDEF parser Mifare Classic support, protocol-agnostic refactor and more improvements (#265)
* Update ndef.c

included mifare classic support

* Update application.fam

* Update ndef.c

* Update ndef.c

* Update ndef.c

* Update ndef.c

* Update ndef.c for better parsing

Because mifare classic 1k has a sector trailer, the ndef parser might conflict with it if the payload is long enough or if there's too many payloads. This code removes all sector trailer in a new buffer and uses that for parsing without any problems.

* Rewrite NDEF as protocol agnostic

* Move type name buffer to stack when possible

* Parse URI without heap buffer

* Reduce binary sizes by using preprocessor defines

* Parse MFC without clone buffer and support MAD2

* Keep message count between different TLVs

* Simplify macro check

* Simplify length conversion

* Improve output of unparsed types

* Add some more logging

* Fix WiFi parsing

* Check MAD key before reading

* Rename ndef_read() to ndef_get()

* Update changelog

* Wording

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
2024-10-24 07:55:47 +02:00

348 lines
7.5 KiB
Plaintext

App(
appid="nfc",
name="NFC",
apptype=FlipperAppType.MENUEXTERNAL,
targets=["f7"],
entry_point="nfc_app",
icon="A_NFC_14",
stack_size=5 * 1024,
order=30,
resources="resources",
sources=[
"*.c*",
"!plugins",
"!nfc_cli.c",
],
fap_libs=["mbedtls"],
fap_icon="icon.png",
fap_category="NFC",
)
# Parser plugins
App(
appid="all_in_one_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="all_in_one_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/all_in_one.c"],
)
App(
appid="smartrider_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="smartrider_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/smartrider.c"],
)
App(
appid="microel_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="microel_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/microel.c"],
)
App(
appid="mizip_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="mizip_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/mizip.c"],
)
App(
appid="hi_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="hi_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/hi.c"],
)
App(
appid="opal_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="opal_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/opal.c"],
)
App(
appid="myki_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="myki_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/myki.c"],
)
App(
appid="troika_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="troika_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/troika.c"],
)
App(
appid="social_moscow_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="social_moscow_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/social_moscow.c"],
)
App(
appid="plantain_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="plantain_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/plantain.c"],
)
App(
appid="two_cities_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="two_cities_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/two_cities.c"],
)
App(
appid="umarsh_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="umarsh_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/umarsh.c"],
)
App(
appid="metromoney_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="metromoney_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/metromoney.c"],
)
App(
appid="charliecard_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="charliecard_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/charliecard.c"],
)
App(
appid="kazan_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="kazan_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/kazan.c"],
)
App(
appid="aime_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="aime_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/aime.c"],
)
App(
appid="bip_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="bip_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/bip.c"],
)
App(
appid="saflok_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="saflok_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/saflok.c"],
)
App(
appid="mykey_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="mykey_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/mykey.c"],
)
App(
appid="zolotaya_korona_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="zolotaya_korona_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/zolotaya_korona.c"],
)
App(
appid="zolotaya_korona_online_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="zolotaya_korona_online_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/zolotaya_korona_online.c"],
)
App(
appid="gallagher_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="gallagher_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/gallagher.c"],
)
App(
appid="clipper_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="clipper_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/clipper.c"],
)
App(
appid="hid_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="hid_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/hid.c"],
)
App(
appid="washcity_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="washcity_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/washcity.c"],
)
App(
appid="emv_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="emv_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/emv.c", "helpers/nfc_emv_parser.c"],
)
App(
appid="ndef_ul_parser",
apptype=FlipperAppType.PLUGIN,
cdefines=[("NDEF_PROTO", "NDEF_PROTO_UL")],
entry_point="ndef_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/ndef.c"],
)
App(
appid="ndef_mfc_parser",
apptype=FlipperAppType.PLUGIN,
cdefines=[("NDEF_PROTO", "NDEF_PROTO_MFC")],
entry_point="ndef_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/ndef.c"],
)
App(
appid="itso_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="itso_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/itso.c"],
)
App(
appid="skylanders_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="skylanders_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/skylanders.c"],
)
App(
appid="hworld_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="hworld_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/hworld.c"],
)
App(
appid="trt_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="trt_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/trt.c"],
)
App(
appid="sonicare_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="sonicare_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/sonicare.c"],
)
App(
appid="csc_parser",
apptype=FlipperAppType.PLUGIN,
entry_point="csc_plugin_ep",
targets=["f7"],
requires=["nfc"],
sources=["plugins/supported_cards/csc.c"],
)
App(
appid="nfc_cli",
targets=["f7"],
apptype=FlipperAppType.PLUGIN,
entry_point="nfc_cli_plugin_ep",
requires=["cli"],
sources=["nfc_cli.c"],
)
App(
appid="nfc_start",
targets=["f7"],
apptype=FlipperAppType.STARTUP,
entry_point="nfc_on_system_start",
sources=["nfc_start.c"],
order=30,
)