Commit Graph

290 Commits

Author SHA1 Message Date
Willy-JL
30df72a835 Merge remote-tracking branch 'ofw/dev' into mntm-dev 2025-02-20 04:20:28 +00:00
Eric Betts
77445fd2f5 Faster di card reading (#4087)
Co-authored-by: あく <alleteam@gmail.com>
2025-02-20 09:22:01 +09:00
Willy-JL
f2011a446b Merge remote-tracking branch 'ofw/dev' into mntm-dev 2025-01-11 05:06:46 +00:00
Eric Betts
626d7ef509 Fix skylander ID reading (#4038)
* Read skylanders faster
* Correct parsing ID from skylanders

Co-authored-by: あく <alleteam@gmail.com>
2024-12-23 10:56:19 +09:00
Willy-JL
661a467ff7 Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-12-10 04:07:07 +00:00
ted-logan
3d6fd9b00d nfc/clipper: (#3991)
* nfs/clipper: BART station ids for San Lorenzo, Bay Fair

Update the BART station ids for the San Lorenzo and Bay Fair stations in
the East Bay of the San Francisco Bay Area.

* nfc/clipper: Update MUNI station ids

Add MUNI station ids for the T line "Central Subway" project, which
opened three new underground stations in 2022.

---------

Co-authored-by: あく <alleteam@gmail.com>
2024-12-02 18:51:57 +09:00
mxcdoam
8629c61dc9 NFC: Plantain parser Last payment amount fix (#3998)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-02 17:08:17 +09:00
Willy-JL
3b55bc345b Merge commit '1907f23e5fbc96ab5cfce6d145169a29d8025e89' into mntm-dev 2024-10-31 18:00:06 +00:00
WillyJL
1907f23e5f NFC: Add NDEF Parser for MFUL, MFC and SLIX (#3973)
* NFC: Add NDEF Parser for MFUL, MFC and SLIX
* Fix inefficiency in MAD checking
* NFC: NDEF parser less RAM waste for contact vcards
* Fix typo
* Make PVS Happy
* NFC: hide TODO in 3rd party plugin

Co-authored-by: あく <alleteam@gmail.com>
2024-10-31 14:09:13 +09:00
mxcdoam
054efbbb03 NFC: Plaintain parser fix (#3975)
* Quck fix for Plantain 4K tickets: now the balance, trips, dates are available. To do: get rid of mem size check, fix number parsing  for 4B UID cards,  fix validator info and last payment parsing
* 4B UID Quick'n'Dirty fix
* remove unnecessary variables, fbt format

Co-authored-by: あく <alleteam@gmail.com>
2024-10-31 13:33:51 +09:00
tomholford
55d1588356 nfc: add Caltrain zones for Clipper (#3969)
Co-authored-by: tomholford <tomholford@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-10-31 13:27:04 +09:00
Willy-JL
4b8b27954b Merge remote-tracking branch 'ul/dev' into mntm-dev 2024-10-29 02:15:59 +00:00
MX
ed57ddb14b NFC: Plaintain parser fix
by mxcdoam
https://github.com/flipperdevices/flipperzero-firmware/pull/3975/files
2024-10-29 02:28:33 +03:00
MX
3d52187aa9 ndef parser updates
by luu176 and Willy-JL
2024-10-28 22:45:02 +03:00
Willy-JL
2788ae14a6 Fix typo 2024-10-27 03:59:39 +00:00
Willy-JL
ef2dd08b71 NFC: NDEF parser less RAM waste for contact vcards 2024-10-27 03:57:19 +00:00
WillyJL
a50ae0a604 NFC: NDEF Parser SLIX support (#278)
* Simpler protocol check

* Simplify header code

* Minor code fixes

* NFC: NDEF Parser SLIX support

* Parse success even without TLV terminator

* Also parse empty NDEF TLVs

* Add NDEF_PROTO_RAW to feed data manually

* Update changelog

* Ordering

* Comment changes

* Fix inefficiency in MAD checking
2024-10-26 03:48:33 +02:00
WillyJL
e1fdc5e984 NFC: NDEF SmartPoster support (#275)
* NFC: NDEF SmartPoster support

* Consistent naming

* Nicer result output

* Update changelog
2024-10-25 04:20:53 +02:00
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
Willy-JL
0afbbf2e61 Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-10-22 03:33:47 +01:00
MX
b0e591601c upd ndef parser
by jaylikesbunda and Willy-JL
2024-10-22 02:37:04 +03:00
MX
fc16978be5 Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2024-10-22 02:28:24 +03:00
Zinong Li
f8fa71c575 NFC TRT Parser: Additional checks to prevent false positives (#3966)
* additional checks to prevent false positives
* Update trt.c

Co-authored-by: あく <alleteam@gmail.com>
2024-10-20 16:58:33 +01:00
jay candel
7ebbadfbf8 NFC: Improve URI decoding in NDEF parser (#267)
* add decode_char

* Skip double malloc(), can just tell printf() how long the string is

* Decode URI within the same buffer

* Only decode if next 2 chars are valid hex

* Update changelog

* Clearer code for hex decode

Co-authored-by: jaylikesbunda <jaylikesbunda@users.noreply.github.com>

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
Co-authored-by: jaylikesbunda <jaylikesbunda@users.noreply.github.com>
2024-10-20 07:28:10 +02:00
Willy-JL
b4c035d933 Merge remote-tracking branch 'ofw/dev' into js-backport-of-backport 2024-10-16 18:26:38 +01:00
MX
5434405c34 Merge remote-tracking branch 'OFW/dev' into dev 2024-10-16 19:46:06 +03:00
Zinong Li
1dd7ebd059 NFC Parser for Tianjin Railway Transit (#3954) 2024-10-16 16:38:07 +01:00
Willy-JL
88dfe97a89 Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-10-15 23:43:33 +01:00
MX
4b9b1769f7 Merge remote-tracking branch 'OFW/dev' into dev 2024-10-15 00:08:47 +03:00
Zinong Li
fbc3b494b7 NFC: H World Hotel Chain Room Key Parser (#3946)
* quick and easy implementation
* delete debug artifacts
* log level correction (warning -> info)
2024-10-14 21:05:24 +01:00
Willy-JL
c52e7a8107 Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-10-10 01:23:38 +01:00
MX
af86cb2b83 Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2024-10-09 20:01:34 +03:00
ted-logan
344118c346 nfc/clipper: Update BART station codes (#3937)
In the NFC Clipper card plugin, update the BART station codes for two
newer East Bay stations (Milpitas, and Berryessa/North San Jose), and
correct the station code for Castro Valley. These station ids come from
visiting the stations and checking what id they presented as in the
Clipper card data.
2024-10-09 10:47:19 +01:00
MX
306e34c64b Merge remote-tracking branch 'OFW/dev' into dev 2024-10-07 04:47:24 +03:00
Willy-JL
5f3a9e5cc2 Merge commit '0469ef0e5529' into mntm-dev 2024-10-07 02:44:57 +01:00
あく
0469ef0e55 FuriHal, drivers: rework gauge initialization routine (#3912)
* FuriHal, drivers: rework gauge initialization, ensure that we can recover from any kind of internal/external issue
* Make PVS happy
* Format sources
* bq27220: add gaps injection into write operations
* Drivers: bq27220 cleanup and various fixes
* Drivers: bq27220 verbose logging and full access routine fix
* Drivers: better cfg mode exit handling in bq27220 driver
* Drivers: rewrite bq27220 based on bqstudio+ev2400, experiments and guessing. Fixes all known issues.
* PVS: hello license check
* Drivers: minimize reset count in bq27220 init sequence
* Drivers: bq27220 hide debug logging, reorganize routine to ensure predictable result and minimum amount of interaction with gauge, add documentation and notes.
* Drivers: more reliable bq27220_full_access routine
* Drivers: replace some warning with error in bq27220
* Drivers: move static asserts to headers in bq27220
* Fix PVS warnings
* Drivers: simplify logic in bq27220

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2024-10-06 22:36:05 +04:00
assasinfil
c3dc0ae6b9 Plantain parser improvements (#3469)
* Refactored card nubmer and balance
* Podorozhnik refactor
* Balance fix and BSK card support added

Co-authored-by: あく <alleteam@gmail.com>
2024-10-06 17:48:12 +01:00
assasinfil
6ead328bb7 Moscow social card parser (#3464)
* Updated troyka layout (full version)
* Changed to furi func
* Small refactor
* Bitlib refactor
* Moved to API
* Rollback troyka parser
* Fix functions
* Added MSK Social card parser
* Parser func refactor start
* Layout E3 refactored
* Layout E4 refactored
* Layout 6 refactored
* Layout E5 refactored
* Layout 2 refactored
* Layout E5 fix
* Layout E6 refactored, valid_date need fix
* Layout E6 fix
* Layout FCB refactored
* Layout F0B refactored
* Layout 8 refactored
* Layout A refactored
* Layout C refactored
* Layout D refactored
* Layout E1 refactored
* Layout E2 refactored
* Old code cleanup
* Memory cleanup
* Unused imports cleanup
* Keys struct refactor
* Keys struct refactor
* Layout E1 fix
* Added debug info for layout and department
* Fix social card parse validation
* Added card number validation
* Added transport data ui improvements from Astrrra's troyka render func.

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-10-06 17:33:07 +01:00
RocketGod
a8ea95ed2c Add support for NTAG I2C Plus 1k and 2k chips (#237)
* Add support for NTAG I2C Plus 1k and 2k chips so my Dangerous Things xSIID implant scans and displays NDEF properly.

* Update changelog

* Format

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
2024-09-27 03:35:35 +02:00
jay candel
65df2e4d1f NFC: SmartRider Parser (#203)
* adding smartrider_parser

* adding SmartRider parser

new parser for SmartRider cards, a public transport smart card system used in Western Australia.
extracts and interprets key information from the card, including:
-Current balance
-Card serial number
-Concession type
-Purchase cost
-Details of the last two trips (including tag on/off status, cost, route, transaction number, and journey number)

* optimising

- removed all logging to simplify output.
- used early returns for clearer error handling.
- optimized setups outside loops to improve memory use.
- simplified flows by removing unnecessary loops.
- placed variables closer to their use for better readability.
- cached data blocks to streamline data handling.
- added a helper function for parsing trips, reducing redundancy.
- corrected loop counter types to avoid compile-time errors.

* cleaning displayed data

- removed transaction (txn) and journey (jrn) numbers to declutter the trip details.
- shortened "previous trip" to "prev trip" to optimize screen space usage.

* added and refined displayed data

added auto load field "threshold amount / reload amount"
changed serial to display first two digits as SR0 for consistency with physical card.

* Format

* Improved Verification Process

- Added definitions for STANDARD_KEY_2 and STANDARD_KEY_3
- Enhanced smartrider_verify function to check for all three specific keys:
  - STANDARD_KEY_1 in Sector 0 as Key A
  - STANDARD_KEY_2 in Sector 6 as Key A
  - STANDARD_KEY_3 in Sector 6 as Key B
- Implemented read operations to verify actual key values stored on the card
- Added comparisons between read key data and expected key values
- Improved debug logging for each step of the verification process

* Integrated Verification into Parse Function

- Added key verification for sectors 0 and 6
- Implemented do-while loop structure for early exit on verification failure
- Moved block readability checks inside verification process
- Added parsed flag to indicate successful parsing
- Updated return value to reflect parsing success
- Maintained existing parsing logic and output format

* fixed false positives

recieved some cuid cards today so was able to test for myself can confirm works... finally
changes made: 
-updated key assignment in smartrider_read
-simplified key verification in smartrider_parse
-improved error handling and logging
-streamlined data parsing process
-corrected key checking logic
-added checks for required block readability
-improved flow control with strategic breaks
-adjusted block data access method

* small optimizations

- refactored `smartrider_verify` and `smartrider_read` by abstracting repeated key operations into `authenticate_and_read` function for improved code maintainability.
- optimized `smartrider_read` by introducing a loop for key setup, reducing redundancy and improving efficiency.
- streamlined error handling in `smartrider_read` by replacing do-while loop with conditional checks.
- changed standard key references to use `standard_keys` array indices

* formatting

* Delete duplicate smartrider.c

* updated smartrider.c

* found 'fbt format'

* transaction parsing updates

-removed last trip/prev trip wording and replaced with "Trip History" header
-added date in front of each transaction 
-only shows transaction cost if it's higher than 0
-changed tag on/tag off to +/- to save room
-added 8 more transactions to Trip History
-verified still working and formatted with fbt

* fixed reboot with partially unlocked card

-added bounds checking for all block accesses to prevent out-of-range memory access
-implemented improved error handling with an error_occurred flag
-introduced a maximum iteration count for date calculation to prevent infinite loops
-used snprintf with size limits for all string operations to avoid buffer overflows
-added validation for trip count to ensure it doesn't exceed the maximum allowed
-implemented checks to skip unread or out-of-range blocks during trip parsing
-added safeguards against corrupted or invalid timestamp data

* optimized SmartRider card parsing and verification

- replaced do-while loop with direct error checks in smartrider_parse
- optimized key verification using direct memcmp in smartrider_verify
- introduced inline functions for common operations (e.g., set_key, read_le16)
- replaced bubble sort with insertion sort for trip data
- simplified date calculation using a lookup table for days in month
- used uint_fast8_t for loop counters to allow compiler optimization
- added __attribute__((hot)) to key functions for aggressive optimization
- removed redundant variable declarations and function calls
- optimized memory usage with static const arrays for required blocks
- simplified error handling in smartrider_read and authenticate_and_read
- used __builtin_memcpy and __builtin_memcmp for potential compiler optimizations
- tested and formatted with fbt

* small fixes

-renamed "Trip History" to "Tag On/Off History"
-fixed date calculation to account for leap years
-misc changes

* Update changelog

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
2024-09-18 03:00:49 +02:00
MX
56530ee61c Merge remote-tracking branch 'OFW/dev' into dev 2024-09-05 22:10:41 +03:00
Willy-JL
f65d4bb233 Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-09-05 19:17:18 +02:00
porta
c9791a280a [FL-3884] Proper integer parsing (#3839)
* feat: strint_to_uint32 and tests
* fix: permit explicit bases and prefixes
* feat: strint_to_{int32,uint16,int16}
* feat: strint_to_u?int64
* refactor: replace strtol, strtoul, sscanf with strint_to_*
* fix: api symbols
* docs: document parameter `end` of strint_to_uint_32
* style: apply changes requested by hedger
* refactor: fix pvs-studio diagnostic
* style: apply changes requested by CookiePLMonster
* fix: unused var
* fix: pointer type
* refactor: convert atoi to strint_to_*
* fix: strint_to_uint8 doesn't actually exist ._ .
* fix: memory leak
* style: address review comments
* Toolbox: couple small comments in the code and doxygen comment update. SubGhz, Loader: fix strint usage.
* Loader: fix incorrect cast

Co-authored-by: あく <alleteam@gmail.com>
2024-09-05 18:02:42 +01:00
MX
ed4c5eb7bf saflok parser improvements [ci skip]
by @zinongli & @xtruan & @zacharyweiss & @evilmog & @Arkwin
2024-09-04 04:35:02 +03:00
Kara Zajac
67ffec5cc6 NFC: Saflok parser Date Rollover (#201)
* Date Rollover

Update the saflok parser to properly handle date rollovers.

* Format

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
2024-09-03 02:29:07 +02:00
Zinong Li
a807a9e81d NFC: Saflok Parser (#196)
* ready for PR

* improve weekday restriction rendering

* fix weekday index bug

* format

* memcpy optimization

* format

* Update changelog

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
2024-08-30 00:12:14 +02:00
Willy-JL
53727022aa Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-08-02 21:56:35 +02:00
MX
856fe752de Merge remote-tracking branch 'OFW/dev' into dev 2024-08-02 11:09:56 +03:00
Astra
4f46032d32 [NFC] Change the plantain last number display from "?" to "X" (#3819) 2024-08-02 15:03:12 +09:00
Willy-JL
b4c24e6e4b Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-07-31 23:06:48 +02:00