Commit graph

2575 commits

Author SHA1 Message Date
Skorpionm
6d823835df
FurEventLoop: add support for FuriEventFlag, simplify API (#3958)
* Core: event_flag, removing duplicate code
* event_loop: add support furi_event_flags
* Examples: add missing free in event loop examples
* Furi: fix event flag
* Sync api symbols
* Unit_test: evet_loop_event_flags
* Fix multiple waiting list elements handling
* Unit_test: add event_loop_event_flag test
* FURI: event_loop add restrictions
* Fix multiple waiting lists items for good
* Improve FuriEventLoop unit tests
* Abolish callback return value
* Remove return value from callback signature
* Use bool level value instead of int32_t
* Add unit tests for FuriStreamBuffer
* Add unit tests for FuriSemaphore
* Speed up test execution
* Improve docs
* Add a stub for furi os-level primitives
* Add more checks for edge cases
* Allow event loop notification from ISR
* Bump api version

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Co-authored-by: Georgii Surkov <georgii.surkov@outlook.com>
Co-authored-by: Georgii Surkov <37121527+gsurkov@users.noreply.github.com>
2024-10-31 10:58:16 +09:00
Nathan N
8427ec0098
MIFARE Classic Key Recovery Improvements (#3822)
* Initial structure for nonce collection
* Nonce logging
* Dictionary attack structure
* Fix compilation
* Identified method to reduce candidate states
* Use EXT_PATH instead of ANY_PATH
* Use median calibrated distance, collect parity bits
* Modify parity collection
* Fixed parity bit collection
* Add note to fix nonce logging
* Fix nonce logging
* Clean redundant code
* Fix valid_nonce
* First attempt disambiguous nonce implementation
* FM11RF08S backdoor detection
* Initial accelerated dictionary attack for weak PRNGs
* Refactor to nested dictionary attack
* Renaming some variables
* Hard PRNG support for accelerated dictionary attack
* Update found keys, initial attempt
* Update found keys, second attempt
* Code cleanup
* Misc bugfixes
* Only use dicts in search_dicts_for_nonce_key if we have them
* Collect nonces again
* Should be detecting both backdoors now
* Relocate backdoor detection
* Hardnested support
* Fix regression for regular nested attack
* Backdoor read
* Backdoor working up to calibration
* Backdoor nested calibration
* Don't recalibrate hard PRNG tags
* Static encrypted nonce collection
* Update TODO
* NFC app UI updates, MVP
* Bump f18 API version (all functions are NFC related)
* Add new backdoor key, fix UI status update carrying over from previous read
* Clear TODO line
* Fix v1/v2 backdoor nonce collection
* Speed up backdoor detection, alert on new backdoor
* Add additional condition to backdoor check
* I'll try freeing memory, that's a good trick!
* Do not enter nested attack if card is already finished
* Do not reset the poller between collected nonces
* Clean up various issues
* Fix Hardnested sector/key type logging
* Add nested_target_key 64 to TODO
* Implement progress bar for upgraded attacks in NFC app
* Typo
* Zero nested_target_key and msb_count on exit
* Note TODO (malloc)
* Dismiss duplicate nonces
* Fix calibration (ensure values are within 3 standard deviations)
* Log static
* No nested dictionary attack re-entry
* Note minor inefficiency
* Uniformly use crypto1_ prefix for symbols in Crypto1 API
* Fix include paths
* Fix include paths cont
* Support CUID dictionary
* Fix log levels
* Avoid storage errors, clean up temporary files
* Handle invalid key candidates
* Fix memory leak in static encrypted attack
* Fix memory leak, use COUNT_OF macro
* Use single call to free FuriString
* Refactor enums to avoid redefinition
* Fix multiple crashes and state machine logic
* Fix inconsistent assignment of known key and known key type/sector
* Backdoor known key logic still needs the current key
* Larger data type for 4K support
* Fix typo
* Fix issue with resume logic
* Mark TODOs for next PR
* Remove redundant assignment
* Fix size_t format specifier
* Simplify auth_passed condition

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Co-authored-by: gornekich <n.gorbadey@gmail.com>
2024-10-31 09:53:58 +09: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
Ruslan Nadyrshin
1822221c69
Minor change in the dev docs (#3962)
- The main page title of the Dev docs has been changed

Co-authored-by: あく <alleteam@gmail.com>
2024-10-20 16:40:20 +01:00
Kris Bahnsen
ea2757908b
lib: digital_signal: digital_sequence: add furi_hal.h wrapped in ifdefs (#3964)
Per the comment at the top of the file, defining DIGITAL_SIGNAL_DEBUG_OUTPUT_PIN
to be a GpioPin variable name should allow additional debug output on
that pin. However, this would not work without modifying the file as
well to add the furi_hal.h header. Wrap including that header in the
same macro define to automatically include it when used.

Fixes: d92b0a82cc ("NFC refactoring (#3050)")

Signed-off-by: Kris Bahnsen <Kris@KBEmbedded.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2024-10-20 16:31:40 +01:00
porta
b723d463af
Revert "[FL-3909] CLI improvements, part I (#3928)" (#3955)
This reverts commit 0f831412fa.

Co-authored-by: あく <alleteam@gmail.com>
2024-10-17 17:12:27 +01:00
Ivan Barsukov
ca68c953c0
Add warning about stealth mode in vibro CLI (#3957) 2024-10-17 16:57:10 +01:00
Zinong Li
1dd7ebd059
NFC Parser for Tianjin Railway Transit (#3954) 2024-10-16 16:38:07 +01:00
porta
c2c288b9ad
[FL-3916] Require PIN on boot (#3952)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2024-10-16 16:12:58 +01:00
Ruslan Nadyrshin
960e0bf545
Small fixes in the wifi devboard docs (#3953)
* Small fixes in the wifi devboard docs

- Several broken numbered lists fixed
- Added a skipped link to the uFBT
- The Devboard naming fixed
2024-10-16 18:38:53 +04:00
Kowalski Dragon
c917135c94
[BadUSB] Improve ChromeOS and GNOME demo scripts (#3948)
* [BadUSB] Gnome Demo: Support most terminals and force sh shell when not using Bash as default
* [BadUSB] ChromeOS Demo: Minor improvements, such as exit overview, select omnibox and add a page title

Signed-off-by: Kowalski Dragon (kowalski7cc) <5065094+kowalski7cc@users.noreply.github.com>
Co-authored-by: Kowalski Dragon (kowalski7cc) <5065094+kowalski7cc@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-10-15 18:23:49 +01:00
Zinong Li
dc9548d0dc
New Static Keys for Mifare Classic Dictionary (#3947)
Co-authored-by: あく <alleteam@gmail.com>
2024-10-15 18:17:33 +01:00
Astra
a34e09094b
[FL-3914] BackUSB (#3951)
* Revert "[FL-3896] Split BadUSB into BadUSB and BadBLE (#3931)"
  This reverts commit 0eaad8bf64.
* Better USB-BLE switch UX
* Format sources
* Format images

Co-authored-by: あく <alleteam@gmail.com>
2024-10-15 18:11:41 +01:00
porta
a6cf08523c
Small JS fixes (#3950) 2024-10-15 18:03:15 +01: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
porta
8a95cb8d6b
[FL-3893] JS modules (#3841)
* feat: backport js_gpio from unleashed
* feat: backport js_keyboard, TextInputModel::minimum_length from unleashed
* fix: api version inconsistency
* style: js_gpio
* build: fix submodule ._ .
* refactor: js_gpio
* docs: type declarations for gpio
* feat: gpio interrupts
* fix: js_gpio freeing, resetting and minor stylistic changes
* style: js_gpio
* style: mlib array, fixme's
* feat: js_gpio adc
* feat: js_event_loop
* docs: js_event_loop
* feat: js_event_loop subscription cancellation
* feat: js_event_loop + js_gpio integration
* fix: js_event_loop memory leak
* feat: stop event loop on back button
* test: js: basic, math, event_loop
* feat: js_event_loop queue
* feat: js linkage to previously loaded plugins
* build: fix ci errors
* feat: js module ordered teardown
* feat: js_gui_defer_free
* feat: basic hourglass view
* style: JS ASS (Argument Schema for Scripts)
* fix: js_event_loop mem leaks and lifetime problems
* fix: crashing test and pvs false positives
* feat: mjs custom obj destructors, gui submenu view
* refactor: yank js_gui_defer_free (yuck)
* refactor: maybe_unsubscribe
* empty_screen, docs, typing fix-ups
* docs: navigation event & demo
* feat: submenu setHeader
* feat: text_input
* feat: text_box
* docs: text_box availability
* ci: silence irrelevant pvs low priority warning
* style: use furistring
* style: _get_at -> _safe_get
* fix: built-in module name assignment
* feat: js_dialog; refactor, optimize: js_gui
* docs: js_gui
* ci: silence pvs warning: Memory allocation is infallible
* style: fix storage spelling
* feat: foreign pointer signature checks
* feat: js_storage
* docs: js_storage
* fix: my unit test was breaking other tests ;_;
* ci: fix ci?
* Make doxygen happy
* docs: flipper, math, notification, global
* style: review suggestions
* style: review fixups
* fix: badusb demo script
* docs: badusb
* ci: add nofl
* ci: make linter happy
* Bump api version

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-10-14 19:42:11 +01:00
hedger
57c438d91a
heap: increased size (#3924)
* reduced reserved memory size for system stack; added temporary markup to monitor usage
* fbt: relink elf file on linker script change; removed debug memory fill
* Make PVS Happy
* Make doxygen happy

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-10-14 19:26:17 +01:00
RebornedBrain
0902fd49e1
NFC: iso14443_4a improvements. Canvas: extended icon draw. (#3918)
* Now 4a listener invokes upper level callback on Halt and FieldOff
* Added new method for drawing mirrored XBM bitmaps
* iso14443_4a poller logic enhanced
* Function renamed accroding to review suggestions
* Rename #2
* Api adjustements
* Correct API bump

Co-authored-by: あく <alleteam@gmail.com>
2024-10-14 18:22:47 +01:00
porta
0f831412fa
[FL-3909] CLI improvements, part I (#3928)
* fix: cli top blinking
* feat: clear prompt on down key
* feat: proper-er ansi escape sequence handling
* ci: fix compact build error
* Make PVS happy
* style: remove magic numbers
* style: review suggestions

Co-authored-by: あく <alleteam@gmail.com>
2024-10-14 15:50:18 +01:00
SUMUKH
d9d3867ce1
Fixes Mouse Clicker Should have a "0" value setting for "as fast as possible" #3876 (#3894)
* fixes mouse clicking rate
* Hid: limit max clicks to 100/s, rewrite code to make it more robust

Co-authored-by: あく <alleteam@gmail.com>
2024-10-14 15:33:51 +01:00
Ruslan Nadyrshin
421bd3e1f9
Wi-Fi Devboard documentation rework (#3944)
* New step-by-step documentation structure for Wi-Fi Devboard
* Added a description of working under Windows
* Added a description of switching Devboard operation mode (Black Magic, DAPLink)
* The images for the documentation are uploaded to the CDN
* The text in the sidebar, near the dolphin logo, changed from blue to black/white

Co-authored-by: knrn64 <25254561+knrn64@users.noreply.github.com>
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-10-14 14:47:12 +01:00
あく
5190aace88
Furi: A Lot of Fixes (#3942)
- BT Service: cleanup code
- Dialog: correct release order in file browser
- Rpc: rollback to pre #3881 state
- Kernel: fix inverted behavior in furi_kernel_is_running
- Log: properly take mutex when kernel is not running
- Thread: rework tread control block scrubbing procedure, ensure that we don't do stupid things in idle task, add new priority for init task
- Timer: add control queue flush method, force flush on stop
- Furi: system init task now performs thread scrubbing
- BleGlue: add some extra checks
- FreeRTOSConfig: fix bunch of issues that were preventing configuration from being properly applied and cleanup
2024-10-14 14:39:09 +01: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
Silent
5b36c5465d
FuriThread: Improve state callbacks (#3881)
State callbacks assumed they were invoked from the thread that changed
its state, but this wasn't true for FuriThreadStateStarting in the past,
and now it's not true for FuriThreadStateStopped either.

Now it is safe to release the thread memory form the state callback
once it switches to FuriThreadStateStopped. Therefore, pending deletion
calls can be removed.

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-10-08 20:50:31 +01:00
jay candel
369e19def3
[IR] Heavily Expand Universal Remotes (#3929)
* expand all universal remotes
  AC: 26.04% increase
  Audio: 277.05% increase
  Projector: 43.36% increase
  TV: 35.54% increase
* formatted with flipper infrared script
* Delete applications/main/infrared/tv.ir
* Delete applications/main/infrared/ac.ir
* Delete applications/main/infrared/audio.ir
* Delete applications/main/infrared/projector.ir
* more ac additions
* updated universal files: all buttons have same capitalization now, ran through infrared script again.
* improved raw signal checks on ac file
* updated ac.ir
* update ac.ir
* Infrared: remove duplicate data from projector.ir

Co-authored-by: あく <alleteam@gmail.com>
2024-10-08 14:07:05 +01:00
Ruslan Nadyrshin
41c35cd59e
Documentation: update and cleanup (#3934)
* Developers Docs editing

* Logo underline removed

The underline has been removed when hovering over the logo.

* proofread docs

* application -> app in several files

---------

Co-authored-by: knrn64 <25254561+knrn64@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-10-08 15:27:16 +04:00
Astra
0eaad8bf64
[FL-3896] Split BadUSB into BadUSB and BadBLE (#3931)
* Remove BLE from BadUSB
* Add the BadBLE app
* Format images to 1-bit B/W
* BadUsb: remove dead bits and pieces

Co-authored-by: あく <alleteam@gmail.com>
2024-10-06 20:21:31 +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
Nikolay Marchuk
cfb9c991cb
furi_hal_random: Wait for ready state and no errors before sampling (#3933)
When random output is not ready, but error state flags are not set,
sampling of random generator samples zero until next value is ready.
2024-10-06 16:56:35 +01:00
Astra
00c1611c33
Improve bit_buffer.h docs (#3783)
* Improve bit_buffer.h docs
* Toolbox: update doxygen comments fix spelling
* Toolbox: update bit lib docs

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: gornekich <n.gorbadey@gmail.com>
2024-10-02 18:51:07 +01:00
Silent
56d2923f1f
Prevent idle priority threads from potentially starving the FreeRTOS idle task (#3909)
* FuriThread: Make FuriThreadPriorityIdle equal to the FreeRTOS one, remove FuriThreadPriorityNone
  This magic constant was meaningless,
  FuriThreadPriorityNormal is now assigned by default instead.
* Make furi_thread_list_process private
  Its 'runtime' parameter is to be obtained from FreeRTOS,
  which means apps cannot do it.
* DirectDraw: Remove an useless include and fix memory leak
  Makes this debug app compileable with uFBT out of the box

Co-authored-by: あく <alleteam@gmail.com>
2024-10-02 18:11:13 +01:00
IRecabarren
7fc209f001
New layout for BadUSB (es-LA) (#3916)
* Add files via upload
* Readme: add SAST section

Co-authored-by: あく <alleteam@gmail.com>
2024-10-02 17:41:40 +01:00
jay candel
3c93761d1d
[IR] universal remote additions (#3922)
* multiple new additions
  Hisense K321UW, Soniq E55V13A, Soniq E32W13B and 2 others
* updated with proper names
  Viano STV65UHD4K
  Hisense K321UW
  Hisense EN2B27
  Soniq E55V13A
  Soniq E32W13B
* format tv.ir
* Update tv.ir
* new universal ac additions
  Maytag M6X06F2A
  Panasonic CS-E9HKR
* new universal audio additions
  Sony MHC_GSX75
  Elac EA101EQ-G
  Philips FW750C
  Pioneer VSX-D1-S
* remove final # audio.ir
* Scripts: update deprecated methods use in python scripts
* Scripts: add comment reading support to fff, preserve comments in infrared cleanup script
* Scripts: improved infrared files cleanup script
* Scripts: add missing new line at the end of file in infrared file cleanup script
* Infrared: cleanup universal remotes

Co-authored-by: あく <alleteam@gmail.com>
2024-10-02 17:28:24 +01:00
Astra
09a7cc2b46
[FL-3805] Fix EM4100 T5577 writing block order (#3904) 2024-10-02 13:10:19 +01:00
EntranceJew
913a86bbec
kerel typo (#3901)
Co-authored-by: あく <alleteam@gmail.com>
2024-09-15 16:07:04 +01:00
porta
19a3736fe5
[FL-3891] Folder rename fails (#3896)
* fix, refactor: storage is_subdir API
* docs: fix incorrect comment
* test: new storage apis
* test: use temporary path
* style: fix formatting
* UnitTest: storage path macros naming
* UnitTest: storage path macros naming part 2

Co-authored-by: あく <alleteam@gmail.com>
2024-09-15 16:01:42 +01:00
porta
b670d5b6e2
[FL-3885] Put errno into TCB (#3893)
* feat: thread-safe errno
* ci: fix pvs warning
* ci: silence pvs warning
* fix: 🤯
* test: convert test app into a unit test
2024-09-13 18:31:07 +01:00
porta
0428e82b14
Fix USB-UART bridge exit screen stopping the bridge prematurely (#3892)
* fix: exit screen stopping bridge prematurely
* refactor: merge exit confirmation scene into main usb uart scene
2024-09-12 17:32:07 +01:00
RebornedBrain
5f4f4fcc60
FeliCa anti-collision fix (#3889)
* System code added to felica hal config functions
* Felica sensf_res setup logic adjusted with new struct
* Set api symbols version to 73.0
* Felica unit tests fix
* Furi: prevent use after free on xEventGroupSetBits call

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-09-09 22:11:53 +01:00
Zinong Li
78c5dd95d8
LFRFID GProxII Fix Writing and Rendering Conflict (#3888) 2024-09-09 18:23:18 +01:00
Silent
70d8951fb7
FuriTimer: Use an event instead of a volatile bool to wait for deletion (#3887)
Co-authored-by: あく <alleteam@gmail.com>
2024-09-09 00:04:56 +01:00
christhetech131
543f6058e5
Infrared: add TCL 75S451 to TV universal remote (#3880)
* Update tv.ir
* Infrared: mark TCL 75S451 block in universal remote, cleanup extra spaces

Co-authored-by: あく <alleteam@gmail.com>
2024-09-08 23:54:38 +01: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
Zinong Li
a122ee75f6
LFRFID: Guard GProxII Wiegand Check Against False Positive and Correct 36-bit Parsing (#3868)
* Update protocol_gproxii.c
* 36 bit format parsing fix
* Update protocol_gproxii.c
* wiegand checks as single function
* LfRfid: simplify gprox wiegand payload validation flow
* LfRfid: extra furi_check in gprox wiegand validation code

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-09-08 11:25:31 +01:00
Silent
8c2223df5d
Threading, Timers improvements (#3865)
* FuriTimer: Use a local variable to wait for deletion

This combines the current synchronous behaviour
(as we could have deferred the free call too) with
a smaller FuriTimer - it's safe to pass a pointer to
a local variable to this pending timer call, because we
know it'll be finished before the caller returns

* Tighten the use of FuriThread* vs FuriThreadId

Event loop and Loader mixed those two,
but the fact those are aliases should be an implementation detail.
For this reason, thread.c is still allowed to mix them freely.
2024-09-07 19:18:51 +01:00
Silent
8672a1d94c
Replace all calls to strncpy with strlcpy, use strdup more, expose strlcat (#3866)
strlcpy doesn't zero the buffer and ensures null termination,
just like snprintf

strlcat is already used by mjs and it's a safe alternative to strcat,
so it should be OK to expose to apps
2024-09-07 17:16:56 +01:00
Thomas Nemer
9bdf41d8ff
feat: add linux/gnome badusb demo resource files (#3846)
* feat: add linux/gnome badusb demo resource files
* doc: use latest appimage package and install icon and desktop file

Co-authored-by: Thomas N <atom@fortytwo.fr>
Co-authored-by: あく <alleteam@gmail.com>
2024-09-07 13:25:13 +01:00