Commit graph

47 commits

Author SHA1 Message Date
gornekich
82baf1e923
[FL-3701] NFC fixes (#3264)
* nfc app: fix unlock with manual password crash
* nfc app: preserve card detected state
* nfc app: fix mf keys scene switch
* nfc app: fix multiple protocol tag detect notification
* nfc plugin: fix retrun in function body in aime parser
* iso14443-3b poller: rework ATTRIB response check
* nfc app: fix navigation after file load failur
* iso14443-3b poller: fix PVS warning
* mfc listener: add crutch in mfc emulation
2023-12-05 22:40:06 +09:00
RebornedBrain
6a5d63803a
[FL-3675] Ntag21x write (#3246)
* New scenes for ultralight poller write mode
* Added new button and transition logic for write operation
   For now write is only possible for NTAG21x cards with default password and no AUTHLIM set
* Poller states extended
* Enums and datatypes extended for new poller mode
* Added mode field to poller instance datatype
* New states for poller added in order to implement write mode
* Added new event type for locked cards in order to simplify state flow
* New logic for poller write commands
* Scenes adjustments
* Scenes renamed
* New field added to poller instance
* Now we write in 'page per call' mode
* Now function takes callback return value into account
* Callback will be called only in write mode
* Event type added
* Log adjusted and start page to write set
* Logs added and check in now false at start, then it moves to true
* Now mf_ultralight_poller_handler_request_write_data halts card in case of check failure and stops poller
* All fail events now returns NfcCommandStop callback
* In case of fail we move back properly
* Remove garbage

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-12-02 13:45:47 +09:00
gornekich
d92b0a82cc
NFC refactoring (#3050)
"A long time ago in a galaxy far, far away...." we started NFC subsystem refactoring.

Starring:

- @gornekich - NFC refactoring project lead, architect, senior developer
- @gsurkov - architect, senior developer
- @RebornedBrain - senior developer

Supporting roles:

- @skotopes, @DrZlo13, @hedger - general architecture advisors, code review
- @Astrrra, @doomwastaken, @Hellitron, @ImagineVagon333 - quality assurance

Special thanks:

@bettse, @pcunning, @nxv, @noproto, @AloneLiberty and everyone else who has been helping us all this time and contributing valuable knowledges, ideas and source code.
2023-10-24 12:08:09 +09:00
Max
52b5966262
Add File Naming setting for more detailed naming (#3002)
* added filename mode setting
* added furi_flag checks for when filename_mode is set
* changed naming for ibutton, lfrfid and subghz
* requested changes from PR
* Lib: gather all naming bits and pieces under name generator module. Properly bump api version. FuriHal: fix RTC flag enum.
* PR requested changes
* bug fix for arg type
* added functionality for other application scenes
* Lib: cleanup name generator API, simplify usage. Sync API symbols.
* Lib: proper size type in name_generator. Cleanup.
* FuriHal: cleanup rtc api usage across firmware

Co-authored-by: あく <alleteam@gmail.com>
2023-09-01 14:57:49 +09:00
Astra
27b2808ade
[FL-3481] Properly reset the NFC device data (#2980)
Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 03:40:05 +09:00
g3gg0.de
c10c45616d
SLIX2 emulation support / practical use for Dymo printers (#2783)
* improve digital_signal for longer packets, also clean up code
* added SLIX2 specific features like signature and unknown keys (for issue #2781), added WRITE_PASSWORD handling
* fix NfcV AFI selection
* when NFCV_CMD_READ_MULTI_BLOCK reads beyond memory end, return the maximum possible block's content
* added SLIX2 reading
* fix NXP SYSTEMINFO response check size
* capture the first received password if none was set before
* clear stored data before reading SLIX details renamed slix2_dump functions to slix2_read
* display card block size values as decimal

Co-authored-by: あく <alleteam@gmail.com>
2023-06-29 02:44:34 +09:00
Sergey Gavrilov
0e4344a83c
Services: simplify api (#2540)
Co-authored-by: あく <alleteam@gmail.com>
2023-06-09 20:02:47 +09:00
hedger
3226254876
[FL-3351] github: re-enabled f18 build (#2743)
* github: re-enabled f18 build
* scripts: storage: better transfer logging
* Fix PVS warnings

Co-authored-by: あく <alleteam@gmail.com>
2023-06-08 15:16:01 +09:00
g3gg0.de
c186d2b0cc
added ISO15693 (NfcV) reading, saving, emulating and revealing from privacy mode (unlock) (#2316)
* added support for ISO15693 (NfcV) emulation, added support for reading SLIX tags
* SLIX: fixed crash situation when an invalid password was requested
* ISO15693: show emulate menu when opening file
* rename NfcV emulate scene to match other NfcV names
* optimize allocation size for signals
* ISO15693: further optimizations of allocation and free code
* ISO15693: reduce latency on state machine reset
* respond with block security status when option flag is set
* increased maximum memory size to match standard
  added security status handling/load/save
  added SELECT/QUIET handling
  more fine grained allocation routines and checks
  fix memset sizes
* added "Listen NfcV Reader" to sniff traffic from reader to card
* added correct description to delete menu
* also added DSFID/AFI handling and locking
* increase sniff log size
* scale NfcV frequency a bit, add echo mode, fix signal level at the end
* use symbolic modulated/unmodulated GPIO levels
* honor AFI field, decrease verbosity and removed debug code
* refactor defines for less namespace pollution by using NFCV_ prefixes
* correct an oversight that original cards return an generic error when addressing outside block range
* use inverse modulation, increasing readable range significantly
* rework and better document nfc chip initialization
* nfcv code review fixes
* Disable accidentally left on signal debug gpio output
* Improve NFCV Read/Info GUIs. Authored by @xMasterX, committed by @nvx
* Fix crash that occurs when you exit from NFCV emulation and start it again. Authored by @xMasterX, committed by @nvx
* Remove delay from emulation loop. This improves compatibility when the reader is Android.
* Lib: digital signal debug output pin info

Co-authored-by: Tiernan Messmer <tiernan.messmer@gmail.com>
Co-authored-by: MX <10697207+xMasterX@users.noreply.github.com>
Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-06-08 14:30:53 +09:00
Astra
a284d21e1c
[FL-2872] Remove unused resources (#2740)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2023-06-06 22:11:23 +04:00
micolous
363f555ed7
Implement support for reading Opal card (Sydney, Australia) (#2683)
* Implement support for reading Opal card (Sydney, Australia)
* stub_parser_verify_read: used UNUSED macro
* furi_hal_rtc: expose calendaring as functions
* opal: use bit-packed struct to parse, rather than manually shifting about
* Update f18 api symbols

Co-authored-by: あく <alleteam@gmail.com>
2023-05-29 20:55:55 +09:00
Yukai Li
5f52382098
nfc: Mifare Ultralight C detection (#2668)
* nfc: Add Mifare Ultralight C detection
* nfc: Add display name for MFUL C and hide menu items
    MFUL C unlock and emulation currently not supported, so hide from menu
    if current card is MFUL C
* nfc: Also check response when probing 3DES auth
* nfc: Hide emulate option in saved menu for MFUL if not supported
* nfc: Remove unlock options from saved menu if Ultralight C


Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-05-26 22:19:10 +09:00
Nathan Nye
d5403a089c
Add Mfkey32 application (#2517)
* Add Mfkey32 application
* Fine tune RAM requirements, use FZ notification service API
* Fix PVS security warnings, fix issue with cracking keys on the FZ
* Prefer on-device or Flipper mobile app (seamless)
* Mfkey32: change app category to NFC
* Mfkey32: set target to f7 only
* Silence PVS false positives
* Correct PVS codes

Co-authored-by: あく <alleteam@gmail.com>
2023-05-09 10:45:59 +09:00
gornekich
7ac7b70884
[FL-3241] NFC disable EMV support (#2571)
* nfc: remove read emv from extra actions
* nfc: remove read emv

Co-authored-by: あく <alleteam@gmail.com>
2023-04-10 23:51:55 +08:00
Astra
6aa0c08f3a
[FL-3064] Skip the read when the card is not present (#2494)
Co-authored-by: あく <alleteam@gmail.com>
2023-03-16 18:06:11 +09:00
Liam Hays
90958a6d23
More UI fixes and improvements (#2419)
* Unify spelling of confirm exit/retry across apps.
* Unify infrared exit/retry confirm menus?
* "Keyboard Layout", not "Keyboard layout".
* Make iButton read scene prompt less awkward.
* "Detect Reader" in MF Classic saved menu instead of "Detect reader"
* NFC menu spelling changes only.
* Remove \n in strings in widget_add_string_element() calls.

Co-authored-by: あく <alleteam@gmail.com>
2023-03-08 20:27:21 +09:00
Astra
42d27d04f6
[FL-3127] Fix navigation on unsupported card types (#2440)
Co-authored-by: あく <alleteam@gmail.com>
2023-03-03 19:55:51 +09:00
Liam Hays
663eb6cd6d
Display Mifare Classic data in NFC app (#2389)
* Add data display for Mifare Classic cards.
* Clean up log statements and data display.

Co-authored-by: あく <alleteam@gmail.com>
2023-02-21 16:15:48 +09:00
Liam Hays
111c7557b3
Fix minor UI inconsistencies and bugs (#2361)
* Changed blue LED to cyan in NFC Magic and Picopass apps.
* Fix capitalization of ATQA and UID in NFC Add Manually wizard.
* Fix reselection of "Saved" menu item in NFC and RFID apps.
* Fix double back press after deleting a file in the SubGhz browser.
* Make NFC app behave like other apps: return to the file browser after deleting a file.
* Rename NfcSceneSetAtqua to NfcSceneSetAtqa.
* Save selected menu items in NFC Magic and Picopass apps in a way that always works.
* Restore previous selection in Universal Remotes menu.
* Other way to do universal remote menu saving, and NFC Extra Actions saves last selection.

Co-authored-by: あく <alleteam@gmail.com>
2023-02-08 17:08:50 +09:00
Maksim Derbasov
2c450bd835
Show region information in sub-GHz app (#2249)
* Show region info in sub-GHz app
* SubGhz: reset widget on region info scene exit
* Format sources

Co-authored-by: あく <alleteam@gmail.com>
2023-01-07 04:28:28 +09:00
Avery
06cf1bb868
Gui: change data ownership model in submenu, own text by default (#2217)
* GUI: Refactor submenu to internally use FuriStrings
* NFC: Rework DESFIRE dynamic info submenu
* GUI: don't mutate label when drawing submenu
* Get rid of submenu_add_item_cstr
* increase api version
* Get rid of submenu_set_header_cstr
* rollback api version
* Documentation
* RFID: use new submenu api

Co-authored-by: Sergey Gavrilov <who.just.the.doctor@gmail.com>
2022-12-30 12:44:07 +09:00
Astra
ded7e727d0
[FL-3060] New MFC Bruteforce animation (#2190)
* Change the wording in the headers
* Add support for text in the progress bar
* New MFC key bruteforce screen
* Typo fix
* nfc: rename Flipper Dict to System Dict
* elements: fix types
* Display the correct key attack sector

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2022-12-27 18:14:03 +09:00
Georgii Surkov
8582670a34
[FL-2811] Fix PVS-Studio warnings (#2142)
Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: gornekich <n.gorbadey@gmail.com>
2022-12-26 21:13:30 +09:00
Astra
7fb1af07b8
[FL- 3014] Untangle NFC from Unit Tests (#2106)
* Untangle NFC from Unit Tests
* nfc tests: add log error

Co-authored-by: Sergey Gavrilov <who.just.the.doctor@gmail.com>
Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-12-10 22:02:34 +09:00
gornekich
c535b8f4ce
[FL-3017], [FL-3018] Change NFC emulation screens (#2102)
* nfc: fix emulate uid view
* archive: hide dot files in apps
* nfc: fix other emulation scenes view
2022-12-08 01:47:55 +09:00
gornekich
e40376bc63
NFC: fix NTAG203 info scene #2078 2022-12-02 21:41:34 +09:00
Никита Тимофеев
b70395eba9
Allow "Detect reader" for unsaved card (#2045)
* Allow "Detect reader" for unsaved card
* Add missed detect reader deed

Co-authored-by: あく <alleteam@gmail.com>
2022-11-29 22:10:02 +09:00
Yukai Li
6b47bc1af4
Nfc: NTAG password auto capture (and other password-related changes) (#1843)
* nfc: MFUL minor cleanup
* nfc: Add mechanism to pass event data
* nfc: Add NTAG authentication event to emulation
* nfc: Rename enum member to align with existing convention
* nfc: Add function to determine whether MFUL is fully captured
* nfc: Fix emulation of incompletely-read password-protected MFUL
* nfc: Add reader password capture scene
* nfc: Set default MFUL password input to 0xFFFFFFFF
* nfc: Fix MFUL auth counter loading
* nfc: Be explicit about using manual auth method when using auto unlock
* nfc: Fill in MFUL has_auth when loading file
* nfc: Fix MFUL auth success usage, remove unused variable
* nfc: Display PWD and PACK in MFUL info if available
* nfc: Remove unnecessary include
* nfc: Add unlock options to loaded MFUL menu
* nfc: Move set default MFUL password. This way it can be edited if needed instead of reentered
* nfc: Fix unlock menu not maintaining selection index
* nfc: Move captured MFUL auth data from worker to device data
* nfc: Attempt to authenticate with default PWD when possible when reading NTAG
* nfc: Don't try to auth NTAG on read if we already authed
* nfc: Add title for all pages read but failed auth for NTAG auth
* nfc: Add faster auth callback patch
* lib: Remove scons submodule from index
* nfc: Revise MFUL unlock UI flow
* nfc: Disallow MFUL unlock with reader if card not read yet. Trying to read first results in either needing to make a new scene or badly jury rigging other scenes, so let's just not do that
* f7: Bump API symbols
* Format code

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-11-29 03:16:22 +09:00
Stephen Kent
a82c3ccc22
NFC: Fix MIFARE DESfire info action to open app menu (#2058)
When examining a MIFARE DESfire card, selecting "More >" currently leads
to the file menu for a single application even if the scanned card
contains multiple applications.

On examining the source code, a MIFARE DESfire application selection
menu is present as `NfcSceneMfDesfireData`. This change updates the
MIFARE DESfire Info "More >" action to open the application selection
menu. That menu may then be used to open the file selection menu for any
application in the read MIFARE DESfire card data.

Tested interactively with
c4cbdcd947/nfc/Desfire.nfc

Co-authored-by: あく <alleteam@gmail.com>
2022-11-29 02:05:24 +09:00
Astra
e7c4b40dbe
Force card types in extra actions (#1961)
* Mifare Classic forced read
* Add all the needed card types
* nfc: remove unused scene
* nfc: remove unused worker state
* nfc: fix read card type scene state usage
* nfc: move NfcReadMode to NfcDevData struct
* nfc: fix bank card reading and scene navigation
* nfc magic: fix magic deactifate function

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-11-11 01:29:57 +09:00
Astra
820afd2aec
NFC Unit tests part 1.1 (#1927)
* Mifare Classic 1/4K, 4/7b uid, NFC-A: NFC-A is not complete yet, as there are no 4b uid tests. Also, Mifare Classic tests don't cover the key cache yet.
* NFC unit tests require access to the NFC app
* Made nfc_device_save accept full path as an argument
* Move from cstrs to furi strings and fix logic
* nfc tests: fix memory leak
* nfc: add mf_classic_get_total_blocks() to API
* nfc tests: simplify nfc tests
* nfc: fix memory leak in shadow file saving
* nfc: fix set uid scene
* nfc: fix saving files
* nfc: fix preload nfc file path
* nfc: remove comments

Co-authored-by: Sergey Gavrilov <who.just.the.doctor@gmail.com>
Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-11-11 01:20:35 +09:00
あく
e8913f2e33
Code cleanup: srand, PVS warnings (#1974)
* Remove srand invocation

* PVS High priority fixes

* PVS High errors part 2

* Furi: heap tracing inheritance

* Furi add __builtin_unreachable to furi_thread_catch
2022-11-05 18:07:24 +03:00
gornekich
93a6e17ce5
[FL-2933] Mf Classic initial write, update, detect reader (#1941)
* nfc: introduce nfc write
* nfc: add write logic
* nfc worker: add write state
* nfc: add mfc update logic
* nfc: add update success logic
* nfc: add custom card for detect reader
* nfc: update write logic
* nfc: add halt command, add notifications
* nfc: add write fail scene
* nfc: fixes and clean up
* nfc: fix navigation ad notifications
* nfc: fix detect reader nfc data setter

Co-authored-by: あく <alleteam@gmail.com>
2022-10-29 01:10:16 +09:00
Georgii Surkov
f11df49468
[FL-2828] Dolphin score update take 2 (#1929)
* Move DolphinDeedNfcRead
* Move DolphinDeedNfcReadSuccess
* Move DolphinDeedNfcSave
* Move DolphinDeedNfcDetectReader
* Move DolphinDeedNfcEmulate
* Count DolphinDeedNfcEmulate when launched from file browser
* Implement most of the score accounting for NFC
* Fully update Nfc icounter handling
* Move DolphinDeedSubGhzFrequencyAnalyzer
* Update the rest of icounter in SubGHz
* Adjust SubGHz icounter handling
* Adjust LFRFID icounter handling
* Adjust Infrared icounter handling
* Don't count renaming RFID tags as saving
* Don't count renaming SubGHz signals as saving
* Don't count renaming NFC tags as saving
* Adjust iButton icounter handling
* Minor code refactoring
* Correct formatting
* Account for emulating iButton keys from file manager/rpc

Co-authored-by: あく <alleteam@gmail.com>
2022-10-28 16:18:41 +09:00
Astra
5e35e51c57
[FL-2907] Remove the back button from MFC keys list #1878
Co-authored-by: あく <alleteam@gmail.com>
2022-10-18 02:49:00 +09:00
gornekich
2552278a3d
[FL-2883] NFC: bank card rework reading (#1858)
* nfc: remove bank card save option
* nfc: remove bank card save from nfc device
* nfc: remove unused function in emv
* nfc: try several times to start emv application
* nfc: add AID display fallback for bank cards

Co-authored-by: あく <alleteam@gmail.com>
2022-10-12 02:13:12 +09:00
Nikolay Minaylov
04f5ad83f8
[FL-2828] Dolphin score points update #1809 2022-10-12 01:54:35 +09:00
Sergey Gavrilov
4000f0cac5
[FL-2870] Printf function attributes (#1841)
* Furi strings: printf attribute
* Logs: printf attribute
* Plugins: adapt
* Plugins: accommodate
* Unit tests: accommodate

Co-authored-by: あく <alleteam@gmail.com>
2022-10-07 22:35:15 +09:00
Astra
19cb469e4b
[FL-2877] Don't turn off the backlight on MFC dict attack #1826
Co-authored-by: あく <alleteam@gmail.com>
2022-10-07 02:19:35 +09:00
gornekich
01f7a3e5b5
[FL-2874] Remove bank card uid emulation (#1823)
* nfc: open bank card info from archive
* nfc: remove emulate uid option from bank cards menu

Co-authored-by: あく <alleteam@gmail.com>
2022-10-07 02:12:45 +09:00
gornekich
5de2c32c81
[FL-2864] NFC update detect reader (#1820)
* nfc: update detect reader view
* nfc: make detect reader more interractive
* nfc: update icons
* nfc: fix detect reader gui
* nfc: fix gui, fix worker events
* nfc: fix notifications
* nfc: add nfc_worker NULL assert

Co-authored-by: あく <alleteam@gmail.com>
2022-10-07 01:58:17 +09:00
Sergey Gavrilov
4bf29827f8
M*LIB: non-inlined strings, FuriString primitive (#1795)
* Quicksave 1
* Header stage complete
* Source stage complete
* Lint & merge fixes
* Includes
* Documentation step 1
* FBT: output free size considering BT STACK
* Documentation step 2
* py lint
* Fix music player plugin
* unit test stage 1: string allocator, mem, getters, setters, appends, compare, search.
* unit test: string equality
* unit test: string replace
* unit test: string start_with, end_with
* unit test: string trim
* unit test: utf-8
* Rename
* Revert fw_size changes
* Simplify CLI backspace handling
* Simplify CLI character insert
* Merge fixes
* Furi: correct filenaming and spelling
* Bt: remove furi string include

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2022-10-06 00:15:23 +09:00
gornekich
e70121e20f
[FL-2843] NFC fixes (#1764)
* nfc: fix empty desfire card message
* nfc: limit total user keys to list
* nfc: increase popup timeout

Co-authored-by: あく <alleteam@gmail.com>
2022-09-22 00:53:25 +09:00
David
f5ff6438d1
NFC user dict list, delete, and de-duplication. (#1533)
* Add MFC user keys list
* Leakey submenu fix
* Set next target for Save/Delete success scenes
* Delete individual user keys
* Update count of total keys
* Fix memory leak
* Check for duplicate keys
* Remove a submodule that I never added?
* Swap and position icons
* Revamp according to design doc
* Rename icons to include size and replace keychain icon with smaller variant
* Fix typos
* Final fixes
* Fufill requested changes
* Cleanup comments
* Merge dev after SD app loading
* Fixing icon names
* Revert merge mistakes and API version
* Scene switching adjustments
* F7: add/change/remove some nfc icons in api_symbols.csv

Co-authored-by: あく <alleteam@gmail.com>
2022-09-20 01:43:53 +09:00
Astra
9f3b80e606
Add new card parsers (#1503)
* Add the "Two cities" parser
* Add plantain and plantain4k parsers
* Add new parsers to the supported list
* United card PoC
* Fix nfc device not sleeping
* Completely read the 4K troika variants
* Correct naming
* Update to reflect upstream changes
* Add support for MfUl info
* Fix parsers
* Card type detection fixes
* Remove debug info
* Fixes for the verification of cards
* nfc: fix verification for supported cards
* nfc: remove unused vars
* Improve card reading reliability and fix plantain
* plantain: change log level

Co-authored-by: gornekich <n.gorbadey@gmail.com>
2022-09-20 01:05:04 +09:00
Astra
60bce7b8d8
[FL-2780] NFC Notifications fix (#1731)
* Show error popup when NFC chip is not init/disconnected
* Move to dialogs for the error message
* NFC notifications fixed to match the intended design
* Revert "Move to dialogs for the error message"
* Revert "Show error popup when NFC chip is not init/disconnected"

Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-09-16 00:49:10 +09:00
SG
b9a766d909 [FL-2627] Flipper applications: SDK, build and debug system (#1387)
* Added support for running applications from SD card (FAPs - Flipper Application Packages)
* Added plugin_dist target for fbt to build FAPs
* All apps of type FlipperAppType.EXTERNAL and FlipperAppType.PLUGIN are built as FAPs by default
* Updated VSCode configuration for new fbt features - re-deploy stock configuration to use them
* Added debugging support for FAPs with fbt debug & VSCode
* Added public firmware API with automated versioning

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-09-15 02:21:03 +09:00