Flipper Zero Unleashed Firmware
This report presents the forensic synthetic code analysis of DarkFlippers/unleashed-firmware, a C project with 21,965 GitHub stars. SynthScan v2.0 examined 484,313 lines of code across 2816 source files, recording 1092 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 3.5 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1092 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | documentation/file_formats/SubGhzFileFormats.md | 301 | #Custom_preset_name: AM_2 | COMMENT |
| LOW | furi/furi.h | 1 | #pragma once | COMMENT |
| LOW | furi/core/thread.c | 1 | #include "thread_i.h" | COMMENT |
| LOW | furi/core/core_defines.h | 61 | typeof(x) SWAP = x; \ | COMMENT |
| LOW | furi/core/core_defines.h | 81 | #endif | COMMENT |
| LOW | furi/core/check.c | 1 | #include "check.h" | COMMENT |
| LOW | furi/core/event_loop_i.h | 1 | #pragma once | COMMENT |
| LOW | furi/core/memmgr_heap.c | 41 | #include <string.h> | COMMENT |
| LOW | furi/core/string.c | 1 | #include "string.h" | COMMENT |
| LOW | furi/core/log.h | 21 | FuriLogLevelInfo = 4, | COMMENT |
| LOW | furi/core/log.h | 161 | furi_log_print_raw_format(FuriLogLevelTrace, format, ##__VA_ARGS__) | COMMENT |
| LOW | furi/core/common_defines.h | 1 | #pragma once | COMMENT |
| LOW | furi/core/common_defines.h | 21 | #define FURI_DEPRECATED __attribute__((deprecated)) | COMMENT |
| LOW | furi/core/common_defines.h | 61 | COMMENT | |
| LOW | targets/furi_hal_include/furi_hal.h | 1 | /** | COMMENT |
| LOW | targets/furi_hal_include/furi_hal.h | 21 | #include <furi_hal_sd.h> | COMMENT |
| LOW | targets/furi_hal_include/furi_hal_bt.h | 1 | /** | COMMENT |
| LOW | targets/furi_hal_include/furi_hal_usb_hid.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/fatfs/ffconf.h | 261 | / included somewhere in the scope of ff.h. */ | COMMENT |
| LOW | targets/f7/platform_specific/math_wrapper.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/ble_glue/ble_event_thread.c | 1 | #include "app_common.h" | COMMENT |
| LOW | targets/f7/ble_glue/ble_conf.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/ble_glue/ble_conf.h | 21 | #define BLE_CFG_HTS_MEASUREMENT_INTERVAL 0 | COMMENT |
| LOW | targets/f7/ble_glue/compiler.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/ble_glue/gap.c | 1 | #include "gap.h" | COMMENT |
| LOW | targets/f7/ble_glue/ble_glue.c | 1 | #include "ble_glue.h" | COMMENT |
| LOW | targets/f7/ble_glue/app_common.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/ble_glue/tl_dbg_conf.h | 21 | #define TL_HCI_CMD_DBG_EN 1 /* Reports BLE command sent to CPU2 and the command response */ | COMMENT |
| LOW | targets/f7/ble_glue/tl_dbg_conf.h | 41 | #define TL_SHCI_CMD_DBG_RAW(_PDATA_, _SIZE_) furi_log_tx(_PDATA_, _SIZE_) | COMMENT |
| LOW | targets/f7/ble_glue/tl_dbg_conf.h | 61 | * BLE Transport Layer | COMMENT |
| LOW | targets/f7/ble_glue/tl_dbg_conf.h | 81 | #define TL_HCI_EVT_DBG_MSG(...) | COMMENT |
| LOW | targets/f7/ble_glue/ble_const.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/inc/FreeRTOSConfig.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/inc/FreeRTOSConfig.h | 21 | #define configSUPPORT_DYNAMIC_ALLOCATION 1 | COMMENT |
| LOW | targets/f7/inc/FreeRTOSConfig.h | 41 | #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() | COMMENT |
| LOW | targets/f7/inc/FreeRTOSConfig.h | 61 | /* Co-routine definitions. */ | COMMENT |
| LOW | targets/f7/inc/FreeRTOSConfig.h | 81 | #define INCLUDE_vTaskDelay 1 | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_speaker.c | 1 | #include <furi_hal_speaker.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_idle_timer.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_target_hw.h | 1 | #pragma once | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_power.c | 1 | #include <furi_hal_power.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_power.c | 21 | #include <furi.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_resources.h | 121 | #define BUTTON_OK_GPIO_Port GPIOH | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_resources.h | 141 | #define IR_RX_Pin LL_GPIO_PIN_0 | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_resources.h | 161 | #define PC1_Pin LL_GPIO_PIN_1 | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_resources.h | 181 | COMMENT | |
| LOW | targets/f7/furi_hal/furi_hal_resources.h | 201 | #define SPI_D_MISO_GPIO_Port GPIOC | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_sd.c | 1 | #include <furi_hal_sd.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_usb_hid.c | 1 | #include <furi_hal_version.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_interrupt.c | 1 | #include <furi_hal_interrupt.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_bt.c | 1 | #include "ble_glue.h" | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_crypto.c | 1 | #include <furi_hal_crypto.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_crypto.c | 21 | #define CRYPTO_MODE_DECRYPT (AES_CR_MODE_1) | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_infrared.c | 1 | #include <furi_hal_infrared.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_infrared.c | 21 | /* DMA Channels definition */ | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_nfc_iso15693.c | 1 | #include "furi_hal_nfc_i.h" | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_usb_cdc.c | 1 | #include <furi_hal_version.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_rfid.c | 1 | #include <furi_hal_rfid.h> | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_rfid.c | 21 | #define FURI_HAL_RFID_EMULATE_TIMER_CHANNEL LL_TIM_CHANNEL_CH3 | COMMENT |
| LOW | targets/f7/furi_hal/furi_hal_spi.c | 1 | #include <furi.h> | COMMENT |
| 766 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 20 | print("I2C device not found"); | CODE |
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 21 | print("Please connect a 24C32N EEPROM I2C device to the Flipper Zero."); | CODE |
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 22 | print("SDA=pin 15, SCL=pin 16, VCC=pin 9, GND=pin 8."); | CODE |
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 24 | print("I2C device found at address: " + addr.toString(16)); | CODE |
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 32 | print("Waiting for device to be ready..."); | CODE |
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 39 | print("Read bytes: " + data.length.toString()); | CODE |
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 41 | print("data[" + i.toString() + "] = " + data[i].toString(16)); | CODE |
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 47 | print("Read bytes: " + data.length.toString()); | CODE |
| HIGH⚡ | …in/clock_app/resources/apps/Scripts/js_examples/i2c.js | 49 | print("data[" + i.toString() + "] = " + data[i].toString(16)); | CODE |
| HIGH⚡ | …_app/resources/apps/Scripts/js_examples/stringutils.js | 4 | print(lengthOfText); | CODE |
| HIGH⚡ | …_app/resources/apps/Scripts/js_examples/stringutils.js | 9 | print(substringResult); | CODE |
| HIGH⚡ | …_app/resources/apps/Scripts/js_examples/stringutils.js | 13 | print(result2); | CODE |
| HIGH⚡ | …_app/resources/apps/Scripts/js_examples/stringutils.js | 16 | print(upperCaseText); | CODE |
| HIGH⚡ | …_app/resources/apps/Scripts/js_examples/stringutils.js | 19 | print(lowerCaseText); | CODE |
| HIGH | …lock_app/resources/apps/Scripts/js_examples/console.js | 1 | print("print", 1); | CODE |
| HIGH | …clock_app/resources/apps/Scripts/js_examples/subghz.js | 16 | print("rssi: ", rssi, "dBm", "@", freq, "MHz", "ext: ", ext); | CODE |
| HIGH⚡ | …clock_app/resources/apps/Scripts/js_examples/subghz.js | 27 | print(subghz.getState()); // "IDLE" | CODE |
| HIGH⚡ | …clock_app/resources/apps/Scripts/js_examples/subghz.js | 29 | print(subghz.getState()); // "RX" | CODE |
| HIGH⚡ | …clock_app/resources/apps/Scripts/js_examples/subghz.js | 35 | print("Sending 0.sub") | CODE |
| HIGH⚡ | …clock_app/resources/apps/Scripts/js_examples/subghz.js | 40 | print("Send success"); | CODE |
| HIGH | …pp/resources/apps/Scripts/js_examples/infrared-send.js | 4 | print("Sending Samsung32 signal (lowers volume)..."); | CODE |
| HIGH | …pp/resources/apps/Scripts/js_examples/infrared-send.js | 7 | print("Sending raw signal... (Fujitsu AC)"); | CODE |
| HIGH | …pp/resources/apps/Scripts/js_examples/infrared-send.js | 33 | print( | CODE |
| HIGH | …pp/resources/apps/Scripts/js_examples/infrared-send.js | 47 | print("Success"); | CODE |
| HIGH⚡ | …p/resources/apps/Scripts/js_examples/array_buf_test.js | 2 | print("len =", arr_1.buffer.byteLength); | CODE |
| HIGH⚡ | …p/resources/apps/Scripts/js_examples/array_buf_test.js | 5 | print("slice len =", arr_2.buffer.byteLength); | CODE |
| HIGH⚡ | …p/resources/apps/Scripts/js_examples/array_buf_test.js | 7 | print(arr_2[i]); | CODE |
| HIGH | …_app/resources/apps/Scripts/js_examples/badusb_demo.js | 32 | print("USB is connected"); | CODE |
| HIGH | …_app/resources/apps/Scripts/js_examples/badusb_demo.js | 58 | print("USB not connected"); | CODE |
| HIGH | …ck_app/resources/apps/Scripts/js_examples/uart_echo.js | 9 | print("0x" + data_view[0].toString(16)); | CODE |
| HIGH | …n/clock_app/resources/apps/Scripts/js_examples/load.js | 3 | print(result); | CODE |
| HIGH | …pp/resources/apps/Scripts/js_examples/uart_echo_8e1.js | 13 | print("0x" + data_view[0].toString(16)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 3 | print("math.abs(-5):", math.abs(-5)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 4 | print("math.acos(0.5):", math.acos(0.5)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 5 | print("math.acosh(2):", math.acosh(2)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 6 | print("math.asin(0.5):", math.asin(0.5)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 7 | print("math.asinh(2):", math.asinh(2)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 8 | print("math.atan(1):", math.atan(1)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 9 | print("math.atan2(1, 1):", math.atan2(1, 1)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 10 | print("math.atanh(0.5):", math.atanh(0.5)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 11 | print("math.cbrt(27):", math.cbrt(27)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 12 | print("math.ceil(5.3):", math.ceil(5.3)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 13 | print("math.clz32(1):", math.clz32(1)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 14 | print("math.cos(math.PI):", math.cos(math.PI)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 15 | print("math.exp(1):", math.exp(1)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 16 | print("math.floor(5.7):", math.floor(5.7)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 17 | print("math.max(3, 5):", math.max(3, 5)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 18 | print("math.min(3, 5):", math.min(3, 5)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 19 | print("math.pow(2, 3):", math.pow(2, 3)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 20 | print("math.random():", math.random()); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 21 | print("math.sign(-5):", math.sign(-5)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 22 | print("math.sin(math.PI/2):", math.sin(math.PI / 2)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 23 | print("math.sqrt(25):", math.sqrt(25)); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/math.js | 24 | print("math.trunc(5.7):", math.trunc(5.7)); | CODE |
| HIGH⚡ | …ock_app/resources/apps/Scripts/js_examples/bad_uart.js | 8 | print("No CLI response"); | CODE |
| HIGH⚡ | …ock_app/resources/apps/Scripts/js_examples/bad_uart.js | 16 | print("key:", serial.readln()); | CODE |
| HIGH⚡ | …ock_app/resources/apps/Scripts/js_examples/bad_uart.js | 18 | print("uci cmd not found"); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/path.js | 3 | print("script has __dirname of" + __dirname); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/path.js | 4 | print("script has __filename of" + __filename); | CODE |
| HIGH⚡ | …n/clock_app/resources/apps/Scripts/js_examples/path.js | 6 | print("math.js exist here."); | CODE |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/update.py | 258 | except Exception as e: | CODE |
| LOW | scripts/send_firebase_notification.py | 11 | except Exception as e: | CODE |
| LOW | scripts/send_firebase_notification.py | 22 | except Exception as e: | CODE |
| MEDIUM | scripts/send_firebase_notification.py | 7 | def __init__(self, service_account_file): | CODE |
| MEDIUM | scripts/send_firebase_notification.py | 15 | def send(self, title, body, condition): | CODE |
| LOW | scripts/selfupdate.py | 63 | except Exception as e: | CODE |
| LOW | scripts/hs.py | 119 | except Exception as e: | CODE |
| LOW | scripts/runfap.py | 98 | except Exception as e: | CODE |
| LOW | scripts/assets.py | 278 | except Exception as e: | STRING |
| LOW | scripts/storage.py | 18 | except Exception as e: | CODE |
| MEDIUM | scripts/storage.py | 19 | print(f"Error: {e}") | CODE |
| LOW | scripts/storage.py | 125 | except Exception: | CODE |
| MEDIUM | scripts/storage.py | 14 | def wrapper(*args, **kwargs): | CODE |
| LOW | scripts/slideshow.py | 37 | except Exception as e: | CODE |
| LOW | scripts/testops.py | 137 | except Exception as e: | CODE |
| LOW | scripts/sconsdist.py | 123 | except Exception as ex: | CODE |
| LOW | scripts/wifi_board.py | 52 | except Exception as e: | CODE |
| LOW | scripts/wifi_board.py | 75 | except Exception as e: | CODE |
| LOW | scripts/wifi_board.py | 173 | except Exception as e: | CODE |
| LOW | scripts/wifi_board.py | 204 | except Exception as e: | CODE |
| MEDIUM | scripts/wifi_board.py | 166 | def update(self): | CODE |
| LOW | scripts/fwflash.py | 255 | except Exception: | CODE |
| MEDIUM | scripts/fwflash.py | 251 | def _valid_ip(self, address): | CODE |
| LOW | scripts/fbt_tools/fbt_apps.py | 128 | except Exception: | CODE |
| LOW | scripts/fbt_tools/fbt_apps.py | 149 | except Exception as e: | CODE |
| MEDIUM | scripts/fbt_tools/fbt_apps.py | 122 | def LoadAppManifest(env, entry): | CODE |
| LOW | scripts/flipper/storage.py | 177 | except Exception: | CODE |
| LOW | scripts/flipper/storage.py | 220 | except Exception: | CODE |
| LOW | scripts/flipper/utils/openocd.py | 114 | except Exception as e: | CODE |
| LOW | scripts/flipper/utils/openocd.py | 123 | except Exception as e: | CODE |
| LOW | scripts/fbt/version.py | 29 | except Exception as e: | CODE |
| MEDIUM | scripts/fbt/version.py | 12 | def get_fast_git_version_id(): | CODE |
| LOW | scripts/fbt/appmanifest.py | 210 | except Exception as e: | CODE |
| LOW⚡ | scripts/debug/FreeRTOS/FreeRTOSgdb/Task.py | 30 | except Exception as exc: | CODE |
| MEDIUM⚡ | scripts/debug/FreeRTOS/FreeRTOSgdb/Task.py | 31 | print("Error Initializing Task Inspector: %s" % str(exc)) | CODE |
| LOW⚡ | scripts/debug/FreeRTOS/FreeRTOSgdb/Task.py | 38 | except Exception as exc: | CODE |
| LOW | scripts/debug/FreeRTOS/FreeRTOSgdb/List.py | 33 | except Exception as exc: | CODE |
| MEDIUM | scripts/debug/FreeRTOS/FreeRTOSgdb/List.py | 26 | def Assign(self, listObj): | CODE |
| LOW | scripts/debug/FreeRTOS/FreeRTOSgdb/QueueTools.py | 103 | except Exception as exc: | CODE |
| LOW | scripts/debug/PyCortexMDebug/cmdebug/svd_gdb.py | 102 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | applications/system/find_my_flipper/README.md | 13 | ### Step 1: Installation | COMMENT |
| LOW | applications/system/find_my_flipper/README.md | 19 | ### Step 2: Obtaining SmartTag Data | COMMENT |
| LOW⚡ | applications/system/find_my_flipper/README.md | 55 | ### Step 1: Create a New Device | COMMENT |
| LOW⚡ | applications/system/find_my_flipper/README.md | 58 | ### Step 2: Export Configuration | COMMENT |
| LOW⚡ | applications/system/find_my_flipper/README.md | 62 | ### Step 3: Modify the JSON File | COMMENT |
| LOW⚡ | applications/system/find_my_flipper/README.md | 72 | ### Step 4: Re-import the Configuration | COMMENT |
| LOW⚡ | applications/system/find_my_flipper/README.md | 75 | ### Step 5: Adjust Settings in OHS App | COMMENT |
| LOW⚡ | applications/system/find_my_flipper/README.md | 82 | ### Step 3: Configuration on the FlipperZero | COMMENT |
| LOW⚡ | applications/system/find_my_flipper/README.md | 85 | ### Step 4: Tracking | COMMENT |
| LOW⚡ | applications/system/mfkey/mfkey_bs_verify.c | 82 | // Step 1: 16x16 blocks | COMMENT |
| LOW⚡ | applications/system/mfkey/mfkey_bs_verify.c | 89 | // Step 2: 8x8 blocks | COMMENT |
| LOW | applications/system/mfkey/mfkey_bs_verify.c | 109 | // Step 3: 4x4 blocks | COMMENT |
| LOW | applications/system/mfkey/mfkey_bs_verify.c | 123 | // Step 4: 2x2 blocks | COMMENT |
| LOW | applications/system/mfkey/mfkey_bs_verify.c | 137 | // Step 5: 1x1 blocks | COMMENT |
| LOW⚡ | applications/system/mfkey/mfkey_bs_verify.c | 485 | // Step 1: Rollback uid_xor_nt1 (fb=0) — no keystream check | COMMENT |
| LOW⚡ | applications/system/mfkey/mfkey_bs_verify.c | 488 | // Step 2: Forward crypt uid_xor_nt0 (enc_mask=0) with keystream check | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1284 | // Step 1: Perform full authentication once | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1339 | // Step 2: Perform nested authentication multiple times | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1509 | // Step 1: Perform full authentication once | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1525 | // Step 2: Perform nested authentication a variable number of times to get nt_enc at a different PRNG offset | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1742 | // Step 1: Perform full authentication once | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1759 | // Step 2: Collect nested nt and parity | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/fastfap.py | 70 | CODE | |
| LOW | scripts/imglint.py | 57 | CODE | |
| LOW | scripts/runfap.py | 45 | CODE | |
| LOW | scripts/assets.py | 118 | CODE | |
| LOW | scripts/storage.py | 148 | CODE | |
| LOW | scripts/testops.py | 76 | CODE | |
| LOW | scripts/sconsdist.py | 159 | CODE | |
| LOW | scripts/wifi_board.py | 166 | CODE | |
| LOW | scripts/fwflash.py | 166 | CODE | |
| LOW | scripts/infrared.py | 20 | CODE | |
| LOW | scripts/lint.py | 51 | CODE | |
| LOW | scripts/lint.py | 68 | CODE | |
| LOW | scripts/fbt_tools/fbt_extapps.py | 441 | CODE | |
| LOW | scripts/fbt_tools/fbt_extapps.py | 142 | CODE | |
| LOW | scripts/fbt_tools/pvsstudio.py | 28 | CODE | |
| LOW | scripts/flipper/utils/templite.py | 93 | CODE | |
| LOW | scripts/ufbt/site_init.py | 8 | CODE | |
| LOW | scripts/fbt/appmanifest.py | 402 | CODE | |
| LOW | scripts/fbt/sdk/collector.py | 107 | CODE | |
| LOW | scripts/fbt/sdk/cache.py | 170 | CODE | |
| LOW | scripts/debug/FreeRTOS/FreeRTOSgdb/List.py | 45 | CODE | |
| LOW | scripts/debug/FreeRTOS/FreeRTOSgdb/HandleRegistry.py | 50 | CODE | |
| LOW | scripts/debug/PyCortexMDebug/cmdebug/svd_gdb.py | 118 | CODE | |
| LOW | scripts/debug/PyCortexMDebug/cmdebug/svd_gdb.py | 165 | CODE | |
| LOW | scripts/debug/PyCortexMDebug/cmdebug/svd_gdb.py | 208 | CODE | |
| LOW | scripts/debug/PyCortexMDebug/cmdebug/svd.py | 151 | CODE | |
| LOW | scripts/debug/PyCortexMDebug/cmdebug/svd.py | 258 | CODE | |
| LOW | .github/scripts/api_symbols_report.py | 29 | CODE | |
| LOW | applications/debug/ccid_test/client/ccid_client.py | 6 | CODE | |
| LOW | site_scons/site_init.py | 11 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | applications/system/mfkey/mfkey_bs_verify.c | 82 | // Step 1: 16x16 blocks | COMMENT |
| LOW⚡ | applications/system/mfkey/mfkey_bs_verify.c | 89 | // Step 2: 8x8 blocks | COMMENT |
| LOW | applications/system/mfkey/mfkey_bs_verify.c | 109 | // Step 3: 4x4 blocks | COMMENT |
| LOW | applications/system/mfkey/mfkey_bs_verify.c | 123 | // Step 4: 2x2 blocks | COMMENT |
| LOW | applications/system/mfkey/mfkey_bs_verify.c | 137 | // Step 5: 1x1 blocks | COMMENT |
| LOW⚡ | applications/system/mfkey/mfkey_bs_verify.c | 485 | // Step 1: Rollback uid_xor_nt1 (fb=0) — no keystream check | COMMENT |
| LOW⚡ | applications/system/mfkey/mfkey_bs_verify.c | 488 | // Step 2: Forward crypt uid_xor_nt0 (enc_mask=0) with keystream check | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1284 | // Step 1: Perform full authentication once | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1339 | // Step 2: Perform nested authentication multiple times | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1509 | // Step 1: Perform full authentication once | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1525 | // Step 2: Perform nested authentication a variable number of times to get nt_enc at a different PRNG offset | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1742 | // Step 1: Perform full authentication once | COMMENT |
| LOW | lib/nfc/protocols/mf_classic/mf_classic_poller.c | 1759 | // Step 2: Collect nested nt and parity | COMMENT |
| LOW | lib/subghz/protocols/keeloq.c | 364 | // Thats in theory! We need to check if this is true for all Aprimatic remotes but we got only 3 recordi | COMMENT |
| LOW | lib/mjs/common/str_util.h | 151 | * The purpose of this function is to parse comma separated string without | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/fastfap.py | 43 | def serialize_relsection_data(data: dict[UniqueRelData, list[int]]) -> bytes: | CODE |
| LOW | scripts/wifi_board.py | 159 | def find_wifi_board_bootloader_port(self): | CODE |
| LOW | scripts/wifi_board.py | 162 | def find_wifi_board_bootloader_port_damn_windows(self): | CODE |
| LOW | scripts/fwflash.py | 218 | def blackmagic_find_networked(serial: str): | CODE |
| LOW | scripts/lint.py | 118 | def _apply_file_naming_convention(self, sources: list, dry_run: bool = False): | CODE |
| LOW | scripts/fbt_tools/fbt_extapps.py | 218 | def _configure_deps_and_aliases(self, app_artifacts: FlipperExternalAppInfo): | CODE |
| LOW | scripts/fbt_tools/fbt_extapps.py | 338 | def _embed_app_metadata_emitter(target, source, env): | CODE |
| LOW | scripts/fbt_tools/fbt_extapps.py | 368 | def generate_embed_app_metadata_actions(source, target, env, for_signature): | CODE |
| LOW | scripts/fbt_tools/fbt_resources.py | 10 | def __generate_resources_dist_entries(env): | CODE |
| LOW | scripts/fbt_tools/compilation_db.py | 61 | def changed_since_last_build_node(child, target, prev_ni, node): | CODE |
| LOW | scripts/fbt_tools/compilation_db.py | 77 | def emit_compilation_db_entry(target, source, env): | CODE |
| LOW | scripts/fbt_tools/compilation_db.py | 115 | def compilation_db_entry_action(target, source, env, **kw): | CODE |
| LOW | scripts/fbt_tools/fbt_sdk.py | 46 | def _api_amalgam_gen_origin_header(target, source, env): | CODE |
| LOW | scripts/fbt_tools/fbt_sdk.py | 186 | def _deploy_sdk_header_tree_action(target, source, env): | CODE |
| LOW | scripts/fbt_tools/fbt_sdk.py | 191 | def _deploy_sdk_header_tree_emitter(target, source, env): | CODE |
| LOW | scripts/flipper/utils/stm32wb55.py | 240 | def option_bytes_id_to_address(self, id: int) -> int: | CODE |
| LOW | scripts/flipper/utils/stm32wb55.py | 256 | def flash_dump_status_register(self): | CODE |
| LOW | scripts/fbt/version.py | 7 | def get_git_commit_unix_timestamp(): | CODE |
| LOW | scripts/fbt/appmanifest.py | 311 | def _check_if_app_target_supported(self, app_name: str): | CODE |
| LOW | scripts/fbt/appmanifest.py | 359 | def get_incompatible_ext_apps(self): | CODE |
| LOW | scripts/fbt/sdk/collector.py | 82 | def process_source_file_for_sdk(self, file_path: str): | CODE |
| LOW | scripts/fbt/sdk/collector.py | 93 | def stringify_array_dimension(size_descr): | CODE |
| LOW | …ck_app/resources/apps/Scripts/js_examples/blebeacon.js | 34 | function sendRandomModelAdvertisement() { | CODE |
| LOW | site_scons/fbt_extra/util.py | 12 | def should_gen_cdb_and_link_dir(env, requested_targets): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/wifi_board.py | 63 | # Check if channel found | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 145 | # Check if flash is already unlocked | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 156 | # Check if flash is unlocked | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 165 | # Check if options is already unlocked | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 176 | # Check if options is unlocked | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 185 | # Check if options is already locked | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 196 | # Check if options is locked | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 205 | # Check if flash is already locked | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 216 | # Check if flash is locked | COMMENT |
| LOW | scripts/flipper/utils/stm32wb55.py | 241 | # Check if this option byte (dword) is mapped to a register | COMMENT |
| LOW | scripts/flipper/utils/programmer_openocd.py | 186 | # Check if this option byte (dword) is mapped to a register | COMMENT |
| LOW | scripts/flipper/utils/programmer_openocd.py | 212 | # Open file, check that it aligned to 8 bytes | COMMENT |
| LOW | scripts/fbt/fapassets.py | 81 | # Write files count | COMMENT |
| LOW | scripts/fbt/fapassets.py | 102 | # Write files | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/debug/FreeRTOS/FreeRTOS.py | 6 | # This file contains some python code that utilizes the GDB API | COMMENT |
| MEDIUM | scripts/debug/FreeRTOS/FreeRTOSgdb/Task.py | 6 | # This file contains the implementation of a class to use for | COMMENT |
| MEDIUM | scripts/debug/FreeRTOS/FreeRTOSgdb/List.py | 6 | # This file contains the class for inspecting | COMMENT |
| MEDIUM | scripts/debug/FreeRTOS/FreeRTOSgdb/EventGroup.py | 6 | # This file contains the implementation of a Event Group Inspector | COMMENT |
| MEDIUM | scripts/debug/FreeRTOS/FreeRTOSgdb/Types.py | 6 | # This file contains the implementation of some | COMMENT |
| MEDIUM | scripts/debug/FreeRTOS/FreeRTOSgdb/QueueTools.py | 6 | # This file contains the implementation of a Queue Inspector | COMMENT |
| MEDIUM | scripts/debug/FreeRTOS/FreeRTOSgdb/GDBCommands.py | 6 | # This file contains the implementation of some custom | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/debug/PyCortexMDebug/PyCortexMDebug.py | 0 | this file is part of pycortexmdebug pycortexmdebug is free software: you can redistribute it and/or modify it under the | STRING |
| HIGH | scripts/debug/PyCortexMDebug/cmdebug/svd_gdb.py | 0 | this file is part of pycortexmdebug pycortexmdebug is free software: you can redistribute it and/or modify it under the | STRING |
| HIGH | scripts/debug/PyCortexMDebug/cmdebug/svd.py | 0 | this file is part of pycortexmdebug pycortexmdebug is free software: you can redistribute it and/or modify it under the | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/update.py | 12 | CODE | |
| LOW | scripts/serial_cli_perf.py | 4 | CODE | |
| LOW | scripts/assets.py | 4 | CODE | |
| LOW | scripts/testops.py | 7 | CODE | |
| LOW | scripts/sconsdist.py | 7 | CODE | |
| LOW | scripts/power.py | 6 | CODE | |
| LOW | scripts/infrared.py | 3 | CODE | |
| LOW | scripts/infrared.py | 6 | CODE | |
| LOW | scripts/debug/FreeRTOS/FreeRTOS.py | 22 | CODE | |
| LOW | scripts/debug/FreeRTOS/FreeRTOS.py | 24 | CODE | |
| LOW | scripts/debug/FreeRTOS/FreeRTOSgdb/HandleRegistry.py | 12 | CODE | |
| LOW | scripts/debug/FreeRTOS/FreeRTOSgdb/GDBCommands.py | 14 | CODE | |
| LOW | scripts/debug/PyCortexMDebug/cmdebug/svd_gdb.py | 22 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | applications/services/gui/view.h | 202 | * @warning Don't forget to commit model changes | COMMENT |
| LOW | lib/drivers/bq27220.h | 21 | * - Don't forget to reset chip before writing new config. | COMMENT |
| LOW | lib/mjs/mjs_gc.c | 316 | * If we ever bring it back, don't forget to mark it | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/flipper/utils/openocd.py | 144 | CODE | |
| LOW | scripts/flipper/utils/openocd.py | 169 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …in/clock_app/resources/apps/Scripts/js_examples/gui.js | 59 | text: "This is a very long string that demonstrates the TextBox view. Use the D-Pad to scroll backwards and forw | CODE |
| LOW | …in/clock_app/resources/apps/Scripts/js_examples/gui.js | 59 | text: "This is a very long string that demonstrates the TextBox view. Use the D-Pad to scroll backwards and forw | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/debug/flipperapps.py | 243 | def set_debug_mode(self, mode: bool) -> None: | CODE |