Skip to content

Commit 4b28d2c

Browse files
committed
Latest Release RM1103-1517-0.93.1-5b5f666 on PATREON - 3 NEW APPS
1 parent c950396 commit 4b28d2c

File tree

9 files changed

+128
-62
lines changed

9 files changed

+128
-62
lines changed

ReadMe.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ This software is for experimental purposes only and is not meant for any illegal
4040
- Added: [City Bloxx (By Milk-Cool)](https://github.com/Milk-Cool/fz-citybloxx)
4141
- Updated: [Authenticator/TOTP v5.7.0 (By akopachov)](https://github.com/akopachov/flipper-zero_authenticator)
4242
- Updated: [RFID Fuzzer (By gid9798)](https://github.com/DarkFlippers/unleashed-firmware/pull/507) [Added IoProxXSF, Paradox, Indala26, Viking, Pyramid, Keri, and Jablotron to RFID Fuzzer #4 (By SkeletonMan03)](https://github.com/DarkFlippers/Multi_Fuzzer/pull/4)
43+
- Added: [BT Remote for Kodi (Remixed By coded-with-claws)](https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/bt_hid_kodi)
44+
- Added: [Mouse Jacker for MS Mouse (Remixed By coded-with-claws)](https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/mousejacker_ms) `Req: NRF24`
45+
- Added: [NRF Sniffer for MS Mouse (Remixed By coded-with-claws)](https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/nrfsniff_ms) `Req: NRF24`
4346

4447
<a name="release">
4548

@@ -306,6 +309,7 @@ $ ./fbt dolphin_ext
306309
- [Bluetooth/USB Remote v1.5 (By Cutch)-OFW](https://github.com/flipperdevices/flipperzero-firmware/pull/1330) [Accelerated Mouse Pointer (By LeeroysHub)](https://github.com/LeeroysHub/flipperzero-firmware-wPlugins/commit/f67680d5b004a72419550a8268802030a8421643)
307310
- [BPM Tapper v1.1 (By panki27)](https://github.com/panki27/bpm-tapper)
308311
- [Brainfuck v1.1 (By nymda)](https://github.com/nymda/FlipperZeroBrainfuck)
312+
- [BT Remote for Kodi (Remixed By coded-with-claws)](https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/bt_hid_kodi)
309313
- [BT Serial (By maybe-hello-world)](https://github.com/maybe-hello-world/fbs)
310314
- [BT Toy Serial (By maybe-hello-world)](https://github.com/maybe-hello-world/flipper-bp)
311315
- [BT Trigger (By Nem0oo)](https://github.com/Nem0oo/flipper-zero_ios-bluetooth-trigger)
@@ -390,6 +394,7 @@ $ ./fbt dolphin_ext
390394
- [Mifare Nested v1.5.2 (By AloneLiberty)](https://github.com/AloneLiberty/FlipperNested)
391395
- [Morse Code v1.1 (By wh00hw)](https://github.com/DarkFlippers/unleashed-firmware/pull/144)
392396
- [Mouse Jacker v1.1 (By mothball187)](https://github.com/mothball187/flipperzero-nrf24/tree/main/mousejacker) ([Pin Out](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/tree/420/applications/mousejacker) from nocomp/Frog/UberGuidoZ) `Req: NRF24`
397+
- [Mouse Jacker for MS Mouse (Remixed By coded-with-claws)](https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/mousejacker_ms) `Req: NRF24`
393398
- [Mouse Jiggler v1.1 (By Jacob-Tate)](https://github.com/Jacob-Tate/flipperzero-firmware/blob/dev/applications/mouse_jiggler/mouse_jiggler.c) (Original By MuddleBox)
394399
- [Multi Converter v1.1 (By theisolinearchip)](https://github.com/theisolinearchip)
395400
- [Music Beeper (By DrZlo13)](https://github.com/flipperdevices/flipperzero-firmware/pull/1189) [With Changes By qqMajiKpp/Haseo](https://github.com/qqmajikpp/)
@@ -408,6 +413,7 @@ $ ./fbt dolphin_ext
408413
- [Nightstand Clock v1.1 (By nymda)](https://github.com/nymda/FlipperNightStand)
409414
- [Notes for FZ WIP (By AdrianN001)](https://github.com/AdrianN001/Flipper-Zero-Note-Application)
410415
- [NRF Sniff v1.1 (By mothball187)](https://github.com/mothball187/flipperzero-nrf24/tree/main/nrfsniff) ([Pin Out](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/tree/420/applications/nrfsniff) from nocomp/Frog/UberGuidoZ) `Req: NRF24`
416+
- [NRF Sniffer for MS Mouse (Remixed By coded-with-claws)](https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/nrfsniff_ms) `Req: NRF24`
411417
- [NRF24 Batch v2.0 (By vad7)](https://github.com/vad7/nRF24-Batch)
412418
- [NRF24 Channel Scanner v1.3 (by htotoo)](https://github.com/htotoo/NRF24ChannelScanner)
413419
- [NRF24 Scanner v2.3 (By vad7)](https://github.com/vad7/nrf24scan)
Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
App(
2-
appid="bt_hid_kodi",
3-
name="BT Remote for Kodi",
2+
appid="remote_kodi",
3+
name="Remote for Kodi",
44
apptype=FlipperAppType.EXTERNAL,
55
entry_point="bt_hid_kodi",
66
stack_size=1 * 1024,
7-
cdefines=["APP_BLE_HID"],
8-
requires=[
9-
"bt",
10-
"gui",
11-
],
12-
order=10,
7+
fap_icon_assets_symbol="bt_hid_kodi",
138
fap_icon="bt_remote_10px.png",
149
fap_icon_assets="assets",
1510
fap_category="Bluetooth",
11+
fap_author="coded-with-claws",
12+
fap_weburl="https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/bt_hid_kodi",
13+
fap_version=(1, 0),
14+
fap_description="Application Bluetooth remote Keynote for Kodi (original app + feature: long press on OK to switch between Space and Return (useful for Kodi to navigate the menus))",
1615
)

applications/external/bt_hid_kodi/views/bt_hid_keynote.c

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
#include <furi_hal_bt_hid.h>
44
#include <furi_hal_usb_hid.h>
55
#include <gui/elements.h>
6-
7-
#include "assets_icons.h"
6+
#include <bt_hid_kodi_icons.h>
87

98
const char* bt_hid_hold_exit = "Hold : exit";
109
const char* bt_hid_hold_space = "Hold : space";
@@ -178,13 +177,13 @@ static void bt_hid_keynote_process(BtHidKeynote* bt_hid_keynote, InputEvent* eve
178177
}
179178
if(event->key == InputKeyOk) {
180179
if(!model->switch_space_return) {
181-
furi_hal_bt_hid_kb_press(HID_KEYBOARD_SPACEBAR);
182-
furi_hal_bt_hid_kb_release(HID_KEYBOARD_SPACEBAR);
183-
} else {
184-
furi_hal_bt_hid_kb_press(HID_KEYBOARD_RETURN);
185-
furi_hal_bt_hid_kb_release(HID_KEYBOARD_RETURN);
186-
}
187-
}
180+
furi_hal_bt_hid_kb_press(HID_KEYBOARD_SPACEBAR);
181+
furi_hal_bt_hid_kb_release(HID_KEYBOARD_SPACEBAR);
182+
} else {
183+
furi_hal_bt_hid_kb_press(HID_KEYBOARD_RETURN);
184+
furi_hal_bt_hid_kb_release(HID_KEYBOARD_RETURN);
185+
}
186+
}
188187
}
189188
},
190189
true);
@@ -198,14 +197,14 @@ static bool bt_hid_keynote_input_callback(InputEvent* event, void* context) {
198197
if(event->type == InputTypeLong && event->key == InputKeyBack) {
199198
furi_hal_bt_hid_kb_release_all();
200199
} else if(event->type == InputTypeLong && event->key == InputKeyOk) {
201-
with_view_model(
202-
bt_hid_keynote->view,
203-
BtHidKeynoteModel * model,
204-
{
205-
model->switch_space_return = !model->switch_space_return;
206-
consumed = true;
207-
},
208-
true);
200+
with_view_model(
201+
bt_hid_keynote->view,
202+
BtHidKeynoteModel * model,
203+
{
204+
model->switch_space_return = !model->switch_space_return;
205+
consumed = true;
206+
},
207+
true);
209208
} else {
210209
bt_hid_keynote_process(bt_hid_keynote, event);
211210
consumed = true;

applications/external/mousejacker_azerty/mousejacker.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#define NRFSNIFF_APP_PATH_FOLDER "/ext/apps_data/nrfsniff"
1919
#define NRFSNIFF_APP_PATH_EXTENSION ".txt"
2020
#define NRFSNIFF_APP_FILENAME "addresses.txt"
21-
#define MOUSEJACKER_APP_PATH_FOLDER "/ext/apps_data/mousejacker"
21+
#define LOCAL_BADUSB_FOLDER EXT_PATH("badusb")
2222
#define MOUSEJACKER_APP_PATH_EXTENSION ".txt"
2323
#define MAX_ADDRS 100
2424

@@ -108,7 +108,7 @@ static bool open_ducky_script(Stream* stream, PluginState* plugin_state) {
108108
bool result = false;
109109
FuriString* path;
110110
path = furi_string_alloc();
111-
furi_string_set(path, MOUSEJACKER_APP_PATH_FOLDER);
111+
furi_string_set(path, LOCAL_BADUSB_FOLDER);
112112

113113
DialogsFileBrowserOptions browser_options;
114114
dialog_file_browser_set_basic_options(
@@ -299,12 +299,6 @@ int32_t mousejacker_app_azerty(void* p) {
299299
return 255;
300300
}
301301

302-
uint8_t attempts = 0;
303-
while(!furi_hal_power_is_otg_enabled() && attempts++ < 5) {
304-
furi_hal_power_enable_otg();
305-
furi_delay_ms(10);
306-
}
307-
308302
// Set system callbacks
309303
ViewPort* view_port = view_port_alloc();
310304
view_port_draw_callback_set(view_port, render_callback, plugin_state);
@@ -315,7 +309,7 @@ int32_t mousejacker_app_azerty(void* p) {
315309
gui_add_view_port(gui, view_port, GuiLayerFullscreen);
316310

317311
plugin_state->storage = furi_record_open(RECORD_STORAGE);
318-
storage_common_mkdir(plugin_state->storage, MOUSEJACKER_APP_PATH_FOLDER);
312+
storage_common_mkdir(plugin_state->storage, LOCAL_BADUSB_FOLDER);
319313
plugin_state->file_stream = file_stream_alloc(plugin_state->storage);
320314

321315
plugin_state->mjthread = furi_thread_alloc();
@@ -333,6 +327,14 @@ int32_t mousejacker_app_azerty(void* p) {
333327
plugin_state->addr_err = true;
334328
}
335329
stream_free(plugin_state->file_stream);
330+
331+
uint8_t attempts = 0;
332+
bool otg_was_enabled = furi_hal_power_is_otg_enabled();
333+
while(!furi_hal_power_is_otg_enabled() && attempts++ < 5) {
334+
furi_hal_power_enable_otg();
335+
furi_delay_ms(10);
336+
}
337+
336338
nrf24_init();
337339

338340
PluginEvent event;
@@ -402,7 +404,7 @@ int32_t mousejacker_app_azerty(void* p) {
402404
furi_mutex_free(plugin_state->mutex);
403405
free(plugin_state);
404406

405-
if(furi_hal_power_is_otg_enabled()) {
407+
if(furi_hal_power_is_otg_enabled() && !otg_was_enabled) {
406408
furi_hal_power_disable_otg();
407409
}
408410

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
App(
2-
appid="nrf24_mouse_jacker_ms",
3-
name="[NRF24] Mouse Jacker MS",
2+
appid="mouse_jacker_ms",
3+
name="Mouse Jacker MS",
44
apptype=FlipperAppType.EXTERNAL,
55
entry_point="mousejacker_app",
6-
cdefines=["APP_MOUSEJACKER_MS"],
7-
requires=[
8-
"gui",
9-
"dialogs",
10-
],
116
stack_size=2 * 1024,
12-
order=60,
7+
fap_icon_assets_symbol="nrf24_mouse_jacker_ms",
138
fap_icon="mouse_10px.png",
14-
fap_category="GPIO",
9+
fap_category="GPIO/NRF24",
1510
fap_icon_assets="images",
1611
fap_private_libs=[
1712
Lib(
@@ -21,4 +16,8 @@ App(
2116
],
2217
),
2318
],
19+
fap_author="coded-with-claws",
20+
fap_weburl="https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/mousejacker_ms",
21+
fap_version=(1, 0),
22+
fap_description="Applications Mousejacker for Microsoft mouse (hardcoded)",
2423
)

applications/external/mousejacker_ms/mousejacker.c

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,19 @@
88
#include <furi_hal_spi.h>
99
#include <furi_hal_interrupt.h>
1010
#include <furi_hal_resources.h>
11+
#include <notification/notification_messages.h>
1112
#include <nrf24.h>
1213
#include "mousejacker_ducky.h"
14+
#include <dolphin/dolphin.h>
1315
#include "NRF24_Mouse_Jacker_icons.h"
1416

1517
#define TAG "mousejacker"
1618
#define MICROSOFT_MIN_CHANNEL 49
1719
#define LOGITECH_MAX_CHANNEL 85
18-
#define NRFSNIFF_APP_PATH_FOLDER "/ext/nrfsniff"
20+
#define NRFSNIFF_APP_PATH_FOLDER "/ext/apps_data/nrfsniff"
1921
#define NRFSNIFF_APP_PATH_EXTENSION ".txt"
2022
#define NRFSNIFF_APP_FILENAME "addresses.txt"
21-
#define MOUSEJACKER_APP_PATH_FOLDER "/ext/mousejacker"
23+
#define LOCAL_BADUSB_FOLDER EXT_PATH("badusb")
2224
#define MOUSEJACKER_APP_PATH_EXTENSION ".txt"
2325
#define MAX_ADDRS 100
2426

@@ -108,7 +110,7 @@ static bool open_ducky_script(Stream* stream, PluginState* plugin_state) {
108110
bool result = false;
109111
FuriString* path;
110112
path = furi_string_alloc();
111-
furi_string_set(path, MOUSEJACKER_APP_PATH_FOLDER);
113+
furi_string_set(path, LOCAL_BADUSB_FOLDER);
112114

113115
DialogsFileBrowserOptions browser_options;
114116
dialog_file_browser_set_basic_options(
@@ -184,6 +186,7 @@ static bool process_ducky_file(
184186
mj_process_ducky_script(
185187
nrf24_HANDLE, addr, addr_size, rate, (char*)file_buf, plugin_state);
186188
FURI_LOG_D(TAG, "finished execution");
189+
dolphin_deed(getRandomDeed());
187190
loaded = true;
188191
} else {
189192
FURI_LOG_D(TAG, "load failed. file size: %d", file_size);
@@ -259,7 +262,7 @@ static int32_t mj_worker_thread(void* ctx) {
259262
5,
260263
loaded_addrs[addr_idx][0],
261264
2,
262-
//MICROSOFT_MIN_CHANNEL,
265+
//MICROSOFT_MIN_CHANNEL,
263266
LOGITECH_MAX_CHANNEL,
264267
true);
265268
ducky_ok = process_ducky_file(
@@ -299,6 +302,8 @@ int32_t mousejacker_app(void* p) {
299302
return 255;
300303
}
301304

305+
NotificationApp* notification = furi_record_open(RECORD_NOTIFICATION);
306+
302307
// Set system callbacks
303308
ViewPort* view_port = view_port_alloc();
304309
view_port_draw_callback_set(view_port, render_callback, plugin_state);
@@ -309,7 +314,7 @@ int32_t mousejacker_app(void* p) {
309314
gui_add_view_port(gui, view_port, GuiLayerFullscreen);
310315

311316
plugin_state->storage = furi_record_open(RECORD_STORAGE);
312-
storage_common_mkdir(plugin_state->storage, MOUSEJACKER_APP_PATH_FOLDER);
317+
storage_common_mkdir(plugin_state->storage, LOCAL_BADUSB_FOLDER);
313318
plugin_state->file_stream = file_stream_alloc(plugin_state->storage);
314319

315320
plugin_state->mjthread = furi_thread_alloc();
@@ -327,6 +332,14 @@ int32_t mousejacker_app(void* p) {
327332
plugin_state->addr_err = true;
328333
}
329334
stream_free(plugin_state->file_stream);
335+
336+
uint8_t attempts = 0;
337+
bool otg_was_enabled = furi_hal_power_is_otg_enabled();
338+
while(!furi_hal_power_is_otg_enabled() && attempts++ < 5) {
339+
furi_hal_power_enable_otg();
340+
furi_delay_ms(10);
341+
}
342+
330343
nrf24_init();
331344

332345
PluginEvent event;
@@ -362,6 +375,7 @@ int32_t mousejacker_app(void* p) {
362375
if(!plugin_state->is_thread_running) {
363376
start_mjthread(plugin_state);
364377
view_port_update(view_port);
378+
notification_message(notification, &sequence_error);
365379
}
366380
}
367381
break;
@@ -381,20 +395,25 @@ int32_t mousejacker_app(void* p) {
381395
}
382396
}
383397

384-
view_port_update(view_port);
385398
furi_mutex_release(plugin_state->mutex);
399+
view_port_update(view_port);
386400
}
387401

388402
furi_thread_free(plugin_state->mjthread);
389403
nrf24_deinit();
390404
view_port_enabled_set(view_port, false);
391405
gui_remove_view_port(gui, view_port);
406+
furi_record_close(RECORD_NOTIFICATION);
392407
furi_record_close(RECORD_GUI);
393408
furi_record_close(RECORD_STORAGE);
394409
view_port_free(view_port);
395410
furi_message_queue_free(event_queue);
396411
furi_mutex_free(plugin_state->mutex);
397412
free(plugin_state);
398413

414+
if(furi_hal_power_is_otg_enabled() && !otg_was_enabled) {
415+
furi_hal_power_disable_otg();
416+
}
417+
399418
return 0;
400419
}

applications/external/mousejacker_ms/mousejacker_ducky.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,26 @@ static const char ducky_cmd_string[] = {"STRING "};
66
static const char ducky_cmd_repeat[] = {"REPEAT "};
77

88
// Bytes 0 to 3 are hardcoded for my specific mouse (they should be known after the sniffing but addresses.txt doesn't save them)
9-
static uint8_t MICROSOFT_HID_TEMPLATE[] =
10-
{0x08, 0x90, 0x19, 0x01, 0x00, 0x00, 67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
9+
static uint8_t MICROSOFT_HID_TEMPLATE[] = {
10+
0x08,
11+
0x90,
12+
0x19,
13+
0x01,
14+
0x00,
15+
0x00,
16+
67,
17+
0x00,
18+
0x00,
19+
0x00,
20+
0x00,
21+
0x00,
22+
0x00,
23+
0x00,
24+
0x00,
25+
0x00,
26+
0x00,
27+
0x00,
28+
0x00};
1129

1230
uint8_t prev_hid = 0;
1331
uint8_t sequence_num = 0;
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
App(
2-
appid="nrf24_sniffer_ms",
3-
name="[NRF24] Sniffer MS",
2+
appid="sniffer_ms",
3+
name="Sniffer MS",
44
apptype=FlipperAppType.EXTERNAL,
55
entry_point="nrfsniff_app",
6-
cdefines=["APP_NRFSNIFF_MS"],
7-
requires=["gui"],
86
stack_size=2 * 1024,
9-
order=70,
7+
fap_icon_assets_symbol="nrf24_sniffer_ms",
108
fap_icon="nrfsniff_10px.png",
11-
fap_category="GPIO",
9+
fap_category="GPIO/NRF24",
1210
fap_private_libs=[
1311
Lib(
1412
name="nrf24",
@@ -17,4 +15,8 @@ App(
1715
],
1816
),
1917
],
18+
fap_author="coded-with-claws",
19+
fap_weburl="https://github.com/coded-with-claws/flipperzero-tools/tree/main/applications_user/nrfsniff_ms",
20+
fap_version=(1, 0),
21+
fap_description="Applications NRF Sniff & Mousejacker for Microsoft mouse (hardcoded)",
2022
)

0 commit comments

Comments
 (0)