Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…into dev
  • Loading branch information
Willy-JL committed Mar 17, 2024
2 parents e07f3f5 + 6f9e50d commit 10a03e0
Show file tree
Hide file tree
Showing 264 changed files with 2,203 additions and 904 deletions.
Binary file added .github/assets/social-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ bool file_browser_scene_start_on_event(void* context, SceneManagerEvent event) {
bool consumed = false;

if(event.type == SceneManagerEventTypeCustom) {
furi_string_set(app->file_path, ANY_PATH("badkb/demo_windows.txt"));
furi_string_set(app->file_path, ANY_PATH("badusb/demo_windows.txt"));
scene_manager_next_scene(app->scene_manager, FileBrowserSceneBrowser);
consumed = true;
} else if(event.type == SceneManagerEventTypeTick) {
Expand Down
20 changes: 18 additions & 2 deletions applications/debug/unit_tests/datetimelib/datetimelib_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ MU_TEST_SUITE(test_datetime_validate_datetime) {

MU_TEST(test_datetime_timestamp_to_datetime_min) {
uint32_t test_value = 0;
DateTime min_datetime_expected = {0, 0, 0, 1, 1, 1970, 0};
DateTime min_datetime_expected = {0, 0, 0, 1, 1, 1970, 4};

DateTime result = {0};
datetime_timestamp_to_datetime(test_value, &result);
Expand All @@ -122,7 +122,7 @@ MU_TEST(test_datetime_timestamp_to_datetime_min) {

MU_TEST(test_datetime_timestamp_to_datetime_max) {
uint32_t test_value = UINT32_MAX;
DateTime max_datetime_expected = {6, 28, 15, 7, 2, 2106, 0};
DateTime max_datetime_expected = {6, 28, 15, 7, 2, 2106, 7};

DateTime result = {0};
datetime_timestamp_to_datetime(test_value, &result);
Expand All @@ -141,10 +141,26 @@ MU_TEST(test_datetime_timestamp_to_datetime_to_timestamp) {
mu_assert_int_eq(test_value, result);
}

MU_TEST(test_datetime_timestamp_to_datetime_weekday) {
uint32_t test_value = 1709748421; // Wed Mar 06 18:07:01 2024 UTC

DateTime datetime = {0};
datetime_timestamp_to_datetime(test_value, &datetime);

mu_assert_int_eq(datetime.hour, 18);
mu_assert_int_eq(datetime.minute, 7);
mu_assert_int_eq(datetime.second, 1);
mu_assert_int_eq(datetime.day, 6);
mu_assert_int_eq(datetime.month, 3);
mu_assert_int_eq(datetime.weekday, 3);
mu_assert_int_eq(datetime.year, 2024);
}

MU_TEST_SUITE(test_datetime_timestamp_to_datetime_suite) {
MU_RUN_TEST(test_datetime_timestamp_to_datetime_min);
MU_RUN_TEST(test_datetime_timestamp_to_datetime_max);
MU_RUN_TEST(test_datetime_timestamp_to_datetime_to_timestamp);
MU_RUN_TEST(test_datetime_timestamp_to_datetime_weekday);
}

MU_TEST(test_datetime_datetime_to_timestamp_min) {
Expand Down
2 changes: 1 addition & 1 deletion applications/external
Submodule external updated 93 files
+1 −1 2048/application.fam
+1 −1 air_arkanoid/.gitsubtree
+1 −0 air_labyrinth/.gitsubtree
+6 −7 air_labyrinth/application.fam
+ air_labyrinth/assets/sprites/player.fxbm
+43 −0 airmouse/CHANGELOG.md
+9 −0 airmouse/air_mouse.c
+2 −2 airmouse/application.fam
+1 −0 airmouse/tracking/sensors/mean_filter.h
+1 −0 airmouse/tracking/sensors/median_filter.h
+47 −10 airmouse/views/bt_mouse.c
+2 −0 airmouse/views/bt_mouse.h
+1 −2 atomicdiceroller/flipper_atomicdiceroller.c
+2 −6 barcode_gen/README.md
+2 −2 barcode_gen/application.fam
+78 −0 barcode_gen/barcode_app.c
+9 −3 barcode_gen/barcode_app.h
+0 −0 barcode_gen/barcode_encoding_files/codabar_encodings.txt
+203 −0 barcode_gen/barcode_encoding_files/code128_encodings.txt
+0 −0 barcode_gen/barcode_encoding_files/code128c_encodings.txt
+0 −0 barcode_gen/barcode_encoding_files/code39_encodings.txt
+8 −8 barcode_gen/barcode_utils.c
+16 −6 barcode_gen/barcode_validator.c
+0 −202 barcode_gen/encoding_tables/code128_encodings.txt
+6 −29 barcode_gen/views/barcode_view.c
+1 −0 ble_spam/application.fam
+4 −0 ble_spam/assets/nameflood.txt
+4 −0 ble_spam/assets/swiftpair.txt
+3 −0 ble_spam/ble_spam.c
+41 −10 ble_spam/protocols/nameflood.c
+41 −10 ble_spam/protocols/swiftpair.c
+1 −1 camera_suite/application.fam
+0 −0 camera_suite/assets/.gitkeep
+0 −8 camera_suite/camera_suite.c
+0 −3 camera_suite/camera_suite.h
+5 −0 camera_suite/docs/CHANGELOG.md
+0 −7 camera_suite/helpers/camera_suite_custom_event.h
+0 −2 camera_suite/helpers/camera_suite_storage.c
+0 −1 camera_suite/scenes/camera_suite_scene_config.h
+0 −14 camera_suite/scenes/camera_suite_scene_menu.c
+0 −51 camera_suite/scenes/camera_suite_scene_wifi_camera.c
+18 −6 camera_suite/views/camera_suite_view_camera.c
+27 −1 camera_suite/views/camera_suite_view_camera.h
+0 −170 camera_suite/views/camera_suite_view_wifi_camera.c
+0 −41 camera_suite/views/camera_suite_view_wifi_camera.h
+ esp_flasher/resources/apps_data/esp_flasher/assets/marauder/S2/esp32_marauder.flipper.bin
+ esp_flasher/resources/apps_data/esp_flasher/assets/marauder/WROOM/esp32_marauder.dev_board_pro.bin
+2 −2 geiger/flipper_geiger.c
+1 −1 magspoof/.gitsubtree
+1 −1 nrf24mousejacker/mousejacker.c
+1 −1 seader/application.fam
+1 −1 totp/application.fam
+35 −36 totp/ui/scenes/authenticate/totp_scene_authenticate.c
+5 −3 totp/ui/scenes/generate_token/totp_scene_generate_token.c
+1 −1 totp/version.h
+2 −2 uhf_rfid/application.fam
+ uhf_rfid/icons/DolphinMafia_115x62.png
+ uhf_rfid/icons/DolphinNice_96x59.png
+ uhf_rfid/icons/Nfc_10px.png
+ uhf_rfid/icons/RFIDDolphinReceive_97x61.png
+ uhf_rfid/icons/RFIDDolphinSend_97x61.png
+ uhf_rfid/icons/uhf_10px.png
+1 −3 uhf_rfid/scenes/uhf_scene_save_name.c
+5 −5 uhf_rfid/scenes/uhf_scene_settings.c
+1 −6 uhf_rfid/uhf_app.c
+0 −2 uhf_rfid/uhf_app_i.h
+12 −8 uhf_rfid/uhf_buffer.c
+10 −8 uhf_rfid/uhf_buffer.h
+1 −104 uhf_rfid/uhf_device.c
+45 −69 uhf_rfid/uhf_module.c
+4 −7 uhf_rfid/uhf_module.h
+129 −0 uhf_rfid/uhf_uart.c
+48 −0 uhf_rfid/uhf_uart.h
+16 −11 uhf_rfid/uhf_worker.c
+2 −0 uhf_rfid/uhf_worker.h
+1 −1 video_game_module_tool/.gitsubtree
+1 −1 wifi_marauder_companion/application.fam
+14 −0 wifi_marauder_companion/docs/changelog.md
+41 −19 wifi_marauder_companion/scenes/wifi_marauder_scene_console_output.c
+9 −1 wifi_marauder_companion/wifi_marauder_app.c
+1 −1 wifi_marauder_companion/wifi_marauder_app.h
+1 −0 wifi_marauder_companion/wifi_marauder_app_i.h
+1 −0 yappy_invaders/.gitsubtree
+21 −0 yappy_invaders/LICENSE
+43 −0 yappy_invaders/README.md
+15 −0 yappy_invaders/application.fam
+ yappy_invaders/assets/yap.png
+ yappy_invaders/assets/yapinvader.png
+ yappy_invaders/images/1.png
+ yappy_invaders/images/2.png
+ yappy_invaders/images/3.png
+490 −0 yappy_invaders/space.c
+ yappy_invaders/yapinvader.png
2 changes: 1 addition & 1 deletion applications/main/archive/helpers/archive_browser.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ static const char* tab_default_paths[] = {
[ArchiveTabSubGhz] = EXT_PATH("subghz"),
[ArchiveTabLFRFID] = EXT_PATH("lfrfid"),
[ArchiveTabInfrared] = EXT_PATH("infrared"),
[ArchiveTabBadKb] = EXT_PATH("badkb"),
[ArchiveTabBadKb] = EXT_PATH("badusb"),
[ArchiveTabU2f] = "/app:u2f",
[ArchiveTabApplications] = EXT_PATH("apps"),
[ArchiveTabSearch] = "/app:search",
Expand Down
53 changes: 34 additions & 19 deletions applications/main/bad_kb/bad_kb_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
#include <furi_hal.h>
#include <storage/storage.h>
#include <lib/toolbox/path.h>
#include <momentum/momentum.h>
#include <lib/flipper_format/flipper_format.h>
#include <bt/bt_service/bt_i.h>
#include "helpers/ducky_script_i.h"
Expand All @@ -29,43 +28,67 @@ static void bad_kb_app_tick_event_callback(void* context) {
scene_manager_handle_tick_event(app->scene_manager);
}

static void bad_kb_load_settings(BadKbApp* app) {
void bad_kb_load_settings(BadKbApp* app) {
furi_string_reset(app->keyboard_layout);
BadKbConfig* cfg = &app->config;

Storage* storage = furi_record_open(RECORD_STORAGE);
FlipperFormat* file = flipper_format_file_alloc(storage);
if(flipper_format_file_open_existing(file, BAD_KB_SETTINGS_PATH)) {
FuriString* tmp_str = furi_string_alloc();

if(!flipper_format_read_string(file, "Keyboard_Layout", app->keyboard_layout)) {
furi_string_reset(app->keyboard_layout);
flipper_format_rewind(file);
}

if(!flipper_format_read_bool(file, "Is_Bt", &app->is_bt, 1)) {
app->is_bt = false;
flipper_format_rewind(file);
}
if(flipper_format_read_string(file, "Bt_Name", tmp_str) && !furi_string_empty(tmp_str)) {

if(!flipper_format_read_bool(file, "Bt_Remember", &app->bt_remember, 1)) {
app->bt_remember = false;
flipper_format_rewind(file);
}

if(flipper_format_read_string(file, "Bt_Name", tmp_str)) {
strlcpy(cfg->ble.name, furi_string_get_cstr(tmp_str), sizeof(cfg->ble.name));
} else {
strcpy(cfg->ble.name, "");
cfg->ble.name[0] = '\0';
flipper_format_rewind(file);
}

if(!flipper_format_read_hex(
file, "Bt_Mac", (uint8_t*)&cfg->ble.mac, sizeof(cfg->ble.mac))) {
memset(cfg->ble.mac, 0, sizeof(cfg->ble.mac));
flipper_format_rewind(file);
}
if(flipper_format_read_string(file, "Usb_Manuf", tmp_str) && !furi_string_empty(tmp_str)) {

if(flipper_format_read_string(file, "Usb_Manuf", tmp_str)) {
strlcpy(cfg->usb.manuf, furi_string_get_cstr(tmp_str), sizeof(cfg->usb.manuf));
} else {
strcpy(cfg->usb.manuf, "");
cfg->usb.manuf[0] = '\0';
flipper_format_rewind(file);
}
if(flipper_format_read_string(file, "Usb_Product", tmp_str) &&
!furi_string_empty(tmp_str)) {

if(flipper_format_read_string(file, "Usb_Product", tmp_str)) {
strlcpy(cfg->usb.product, furi_string_get_cstr(tmp_str), sizeof(cfg->usb.product));
} else {
strcpy(cfg->usb.product, "");
cfg->usb.product[0] = '\0';
flipper_format_rewind(file);
}

if(!flipper_format_read_uint32(file, "Usb_Vid", &cfg->usb.vid, 1)) {
cfg->usb.vid = 0;
flipper_format_rewind(file);
}

if(!flipper_format_read_uint32(file, "Usb_Pid", &cfg->usb.pid, 1)) {
cfg->usb.pid = 0;
flipper_format_rewind(file);
}

furi_string_free(tmp_str);
flipper_format_file_close(file);
}
Expand Down Expand Up @@ -93,6 +116,8 @@ static void bad_kb_save_settings(BadKbApp* app) {
FlipperFormat* file = flipper_format_file_alloc(storage);
if(flipper_format_file_open_always(file, BAD_KB_SETTINGS_PATH)) {
flipper_format_write_string(file, "Keyboard_Layout", app->keyboard_layout);
flipper_format_write_bool(file, "Is_Bt", &app->is_bt, 1);
flipper_format_write_bool(file, "Bt_Remember", &app->bt_remember, 1);
flipper_format_write_string_cstr(file, "Bt_Name", cfg->ble.name);
flipper_format_write_hex(file, "Bt_Mac", (uint8_t*)&cfg->ble.mac, sizeof(cfg->ble.mac));
flipper_format_write_string_cstr(file, "Usb_Manuf", cfg->usb.manuf);
Expand Down Expand Up @@ -265,14 +290,6 @@ void bad_kb_config_refresh(BadKbApp* app) {
// Reload config page
scene_manager_next_scene(app->scene_manager, BadKbSceneConfig);
scene_manager_previous_scene(app->scene_manager);

// Update settings
if(momentum_settings.bad_bt != app->is_bt ||
momentum_settings.bad_bt_remember != app->bt_remember) {
momentum_settings.bad_bt = app->is_bt;
momentum_settings.bad_bt_remember = app->bt_remember;
momentum_settings_save();
}
}

BadKbApp* bad_kb_app_alloc(char* arg) {
Expand Down Expand Up @@ -308,8 +325,6 @@ BadKbApp* bad_kb_app_alloc(char* arg) {
Bt* bt = furi_record_open(RECORD_BT);
app->bt = bt;
app->bt->suppress_pin_screen = true;
app->is_bt = momentum_settings.bad_bt;
app->bt_remember = momentum_settings.bad_bt_remember;
bad_kb_config_adjust(&app->config);

// Save prev config
Expand Down
2 changes: 2 additions & 0 deletions applications/main/bad_kb/bad_kb_app_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ typedef enum {

void bad_kb_app_show_loading_popup(BadKbApp* app, bool show);

void bad_kb_load_settings(BadKbApp* app);

int32_t bad_kb_conn_apply(BadKbApp* app);

void bad_kb_conn_reset(BadKbApp* app);
Expand Down
2 changes: 1 addition & 1 deletion applications/main/bad_kb/bad_kb_paths.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <storage/storage.h>

#define BAD_KB_APP_BASE_FOLDER EXT_PATH("badkb")
#define BAD_KB_APP_BASE_FOLDER EXT_PATH("badusb")
#define BAD_KB_KEYS_PATH BAD_KB_APP_BASE_FOLDER "/.badkb.keys"
#define BAD_KB_SETTINGS_PATH BAD_KB_APP_BASE_FOLDER "/.badkb.settings"
#define BAD_KB_APP_PATH_LAYOUT_FOLDER BAD_KB_APP_BASE_FOLDER "/assets/layouts"
1 change: 0 additions & 1 deletion applications/main/bad_kb/scenes/bad_kb_scene_config.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#include "../bad_kb_app_i.h"
#include "furi_hal_power.h"
#include "furi_hal_usb.h"
#include <momentum/momentum.h>

enum VarItemListIndex {
VarItemListIndexKeyboardLayout,
Expand Down
18 changes: 12 additions & 6 deletions applications/main/bad_kb/scenes/bad_kb_scene_file_select.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@ static bool bad_kb_file_select(BadKbApp* bad_kb) {

bad_kb_app_show_loading_popup(bad_kb, true);
Storage* storage = furi_record_open(RECORD_STORAGE);
if(storage_dir_exists(storage, EXT_PATH("badusb"))) {
if(storage_dir_exists(storage, EXT_PATH("badkb"))) {
DialogMessage* message = dialog_message_alloc();
dialog_message_set_header(message, "Migrate BadUSB?", 64, 0, AlignCenter, AlignTop);
dialog_message_set_header(message, "Migrate Scripts?", 64, 0, AlignCenter, AlignTop);
dialog_message_set_buttons(message, "No", NULL, "Yes");
dialog_message_set_text(
message,
"A badusb folder was found!\n"
"Momentum uses the badkb folder.\n"
"Want to transfer the files?",
"Momentum uses the 'badusb'\n"
"folder for compatibility.\n"
"Want to migrate from\n"
"'badkb' folder?",
64,
32,
AlignCenter,
Expand All @@ -25,7 +26,12 @@ static bool bad_kb_file_select(BadKbApp* bad_kb) {
dialog_message_free(message);
furi_record_close(RECORD_DIALOGS);
if(res == DialogMessageButtonRight) {
storage_common_migrate(storage, EXT_PATH("badusb"), BAD_KB_APP_BASE_FOLDER);
storage_common_migrate(storage, EXT_PATH("badkb"), BAD_KB_APP_BASE_FOLDER);
if(bad_kb->conn_init_thread) {
furi_thread_join(bad_kb->conn_init_thread);
}
bad_kb_load_settings(bad_kb);
bad_kb_config_adjust(&bad_kb->config);
}
}
storage_simply_mkdir(storage, BAD_KB_APP_BASE_FOLDER);
Expand Down
1 change: 0 additions & 1 deletion applications/main/bad_kb/views/bad_kb_view.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
#include <toolbox/path.h>
#include <gui/elements.h>
#include <assets_icons.h>
#include <momentum/momentum.h>
#include <bt/bt_service/bt_i.h>

#define MAX_NAME_LEN 64
Expand Down
11 changes: 10 additions & 1 deletion applications/main/ibutton/application.fam
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,20 @@ App(
fap_category="iButton",
)

App(
appid="ibutton_cli",
targets=["f7"],
apptype=FlipperAppType.PLUGIN,
entry_point="ibutton_cli_plugin_ep",
requires=["cli"],
sources=["ibutton_cli.c"],
)

App(
appid="ibutton_start",
apptype=FlipperAppType.STARTUP,
targets=["f7"],
entry_point="ibutton_on_system_start",
sources=["ibutton_cli.c"],
sources=["ibutton_start.c"],
order=60,
)
25 changes: 12 additions & 13 deletions applications/main/ibutton/ibutton_cli.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,6 @@
#include <ibutton/ibutton_worker.h>
#include <ibutton/ibutton_protocols.h>

static void ibutton_cli(Cli* cli, FuriString* args, void* context);

// app cli function
void ibutton_on_system_start() {
#ifdef SRV_CLI
Cli* cli = furi_record_open(RECORD_CLI);
cli_add_command(cli, "ikey", CliCommandFlagDefault, ibutton_cli, cli);
furi_record_close(RECORD_CLI);
#else
UNUSED(ibutton_cli);
#endif
}

static void ibutton_cli_print_usage() {
printf("Usage:\r\n");
printf("ikey read\r\n");
Expand Down Expand Up @@ -252,3 +239,15 @@ void ibutton_cli(Cli* cli, FuriString* args, void* context) {

furi_string_free(cmd);
}

#include <flipper_application/flipper_application.h>

static const FlipperAppPluginDescriptor plugin_descriptor = {
.appid = "ibutton_cli",
.ep_api_version = 1,
.entry_point = &ibutton_cli,
};

const FlipperAppPluginDescriptor* ibutton_cli_plugin_ep() {
return &plugin_descriptor;
}
11 changes: 11 additions & 0 deletions applications/main/ibutton/ibutton_start.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#include <cli/cli_i.h>

static void ibutton_cli_wrapper(Cli* cli, FuriString* args, void* context) {
cli_plugin_wrapper("ibutton_cli", 1, cli, args, context);
}

void ibutton_on_system_start() {
Cli* cli = furi_record_open(RECORD_CLI);
cli_add_command(cli, "ikey", CliCommandFlagDefault, ibutton_cli_wrapper, cli);
furi_record_close(RECORD_CLI);
}
15 changes: 12 additions & 3 deletions applications/main/infrared/application.fam
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,23 @@ App(
)

App(
appid="infrared_start",
apptype=FlipperAppType.STARTUP,
appid="infrared_cli",
targets=["f7"],
entry_point="infrared_on_system_start",
apptype=FlipperAppType.PLUGIN,
entry_point="infrared_cli_plugin_ep",
requires=["cli"],
sources=[
"infrared_cli.c",
"infrared_brute_force.c",
"infrared_signal.c",
],
)

App(
appid="infrared_start",
apptype=FlipperAppType.STARTUP,
targets=["f7"],
entry_point="infrared_on_system_start",
sources=["infrared_start.c"],
order=20,
)
Loading

0 comments on commit 10a03e0

Please sign in to comment.