Commit Graph

918 Commits

Author SHA1 Message Date
Willy-JL ba605e1c03 Merge remote-tracking branch 'ul/dev' into mntm-dev
Only partially merged 1ceb1eb256 and 09d6e4ee30
Changes to login in cc1101_ext.c and adding setting are ignored
2024-10-07 04:00:01 +01: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
RebornedBrain 8c14361e6a [FL-3830] Emulation freeze (#3930)
Co-authored-by: あく <alleteam@gmail.com>
2024-10-06 17:55:13 +01: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
MX 2e241f56eb rename everywhere 2024-10-05 14:55:09 +03:00
MX 54ad331c4c rename extract mf keys to extract MFC keys
because its used only for mifare classic, not for plus etc..
2024-10-05 07:04:21 +03:00
MX 9bb3853c80 Merge remote-tracking branch 'noproto/nestednonces' into dev 2024-10-05 05:02:08 +03:00
MX 6b9d5d786b Merge remote-tracking branch 'RebornedBrain/reborned/scene_freeze' into dev 2024-10-05 04:47:24 +03:00
Willy-JL 05de1e2b2f Merge branch 'nestednonces' into mntm-dev 2024-10-05 01:06:38 +01:00
noproto 4f722a00c0 Avoid storage errors, clean up temporary files 2024-10-04 18:41:29 -04:00
RebornedBrain 79dc467ded New state added to avoid moving to blank screen 2024-10-01 13:26:35 +03:00
WillyJL f8688d7e94 Merge pull request #207 from Next-Flip/ofw-3822-nestednonces
OFW PR 3822 (MIFARE Classic Key Recovery Improvements)
2024-09-27 03:54:22 +01:00
Willy-JL 448be96e0f Merge branch 'nestednonces' into ofw-3822-nestednonces 2024-09-27 02:38:59 +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
noproto ba672e775f Support CUID dictionary 2024-09-25 10:27:32 -04:00
Willy-JL ae3b2d40e4 Merge branch 'nestednonces' into ofw-3822-nestednonces 2024-09-24 05:56:21 +01:00
noproto cd76926c74 Note minor inefficiency 2024-09-23 19:13:20 -04:00
noproto 6ae950673e No nested dictionary attack re-entry 2024-09-23 19:06:08 -04:00
noproto 6eccdc8f93 Zero nested_target_key and msb_count on exit 2024-09-20 11:53:04 -04:00
noproto 96606dc36f Typo 2024-09-18 12:52:22 -04:00
noproto c1cdd491a6 Implement progress bar for upgraded attacks in NFC app 2024-09-18 12:51:48 -04:00
Willy-JL bb9a2eb8ea Merge branch 'nestednonces' into ofw-3822-nestednonces 2024-09-18 02:12:43 +01:00
Willy-JL b1886e5593 Merge remote-tracking branch 'mntm/dev' into ofw-3822-nestednonces 2024-09-18 02:12:13 +01: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
Mihai 425a97fe95 NFC: Added 6 new Mifare Classic keys from Bulgaria Hotel (#216)
* Update mf_classic_dict.nfc

Added 6 new keys from Bulgaria Hotel
Keys are not duplicated!

* Add section delimiter

* No LF at EOF

* Update changelog

---------

Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com>
2024-09-18 00:24:21 +02:00
noproto 3ab752b7a0 Clean up various issues 2024-09-17 14:38:14 -04:00
Willy-JL baf14be587 Merge branch 'nestednonces' into ofw-3822-nestednonces 2024-09-10 20:34:33 +02:00
Willy-JL 777ab46ddf Merge remote-tracking branch 'mntm/dev' into ofw-3822-nestednonces 2024-09-10 20:34:12 +02:00
noproto ab8bc3e21c Clear TODO line 2024-09-09 20:51:51 -04:00
noproto cba58ed437 Add new backdoor key, fix UI status update carrying over from previous read 2024-09-09 20:50:15 -04:00
Willy-JL e282d8050f Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-09-09 23:20:14 +02:00
gornekich 9558a5fa08 Merge branch 'dev' into nestednonces 2024-09-09 13:34:47 +01:00
MX 7711b2daae Merge remote-tracking branch 'OFW/dev' into dev 2024-09-09 04:11:35 +03:00
Eric Betts 75f4782fab Rename 'Detect Reader' to 'Extract MF Keys' (#3874)
* Rename 'Detect Reader' to 'Collect Nonces'
* Updated name
* Updated name
* Format Sources

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-09-08 23:43:14 +01:00
Aleksandr Kutuzov 9ea7a4671a Merge remote-tracking branch 'origin/dev' into nestednonces 2024-09-07 13:47:07 +01:00
Astra ad27713f0d [FL-3766] Fix crash on Ultralight unlock (#3855)
* Fix crash on Ultralight unlock
* Infrared: safe macroses

Co-authored-by: あく <alleteam@gmail.com>
2024-09-06 12:44:32 +01:00
Willy-JL 16859a41b9 Merge remote-tracking branch 'ofw/dev' into mntm-dev 2024-09-06 02:00:42 +02:00
MX eed32aca77 Merge remote-tracking branch 'OFW/dev' into dev 2024-09-06 00:48:44 +03:00
RebornedBrain 49e1ae6e87 [FL-3895] Broken file interaction fixes (#3852)
* Show error screen if corrupted filed has been loaded
* Added rpc error codes and error processing to NFC
* Made iButton scene on_enter handler clear to prevent showing scene before file is loaded
* Added rpc error codes and error processing to iButton
* Made lfRfid scene on_enter handler clear to prevent showing scene before file is loaded
* Added rpc error codes and error processing to lfRfid
* Made SubGHz scene on_enter handler clear to prevent showing scene before file is loaded. Also moved file_name_tmp formatting logic to a separate function
* Now function returns loading status and starts rx only if load succeeded
* Added show error logic on tx_button start
* Introduced rpc error codes for infrared
* Adjusted rpc scene logic to show scene only when
loading is fine
* Added new  list of rpc errors which are common within several applications
* Removed same enums from apps
* Same rpc error in different apps replaced with common value from rpc error code list
* SubGHz error codes now start from RpcAppSystemErrorCodesReserved value
* Infrared error codes now start from RpcAppSystemErrorCodesReserved value
* Removed unused enum
* Now all rpc error codes are more generalized and can be used among all apps without any specific enums
* Removed specific error codes, now rpc error codes are used instead
* RPC: no plurals in enums

Co-authored-by: あく <alleteam@gmail.com>
2024-09-05 20:54:49 +01: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
Willy-JL 0900ac3520 Merge remote-tracking branch 'ul/dev' into mntm-dev --nobuild 2024-09-04 22:39:32 +02:00
MX ed4c5eb7bf saflok parser improvements [ci skip]
by @zinongli & @xtruan & @zacharyweiss & @evilmog & @Arkwin
2024-09-04 04:35:02 +03:00
MX b7bc060ad5 Merge remote-tracking branch 'OFW/astra/3766-unlock-crash-fix' into dev 2024-09-04 04:28:51 +03:00
Willy-JL 7f1c048978 Merge branch 'nestednonces' into ofw-3822-nestednonces 2024-09-04 01:30:16 +02:00
noproto 92122b2cdf NFC app UI updates, MVP 2024-09-03 15:19:12 -04: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