Krolyxon
Commit be5e6e7

Branches

Tags

Refs →

orion-rfbe5e6e7

add BLE jammer, move NRF activities into submenu

Author
krolyxon
Date
2026-05-06 12:33 +0530
Parent
bf0a032
Commit
be5e6e75827480bc0dd55d32ad4a99b9d2c0a364

+164 −78

3 files changed

  1. M firmware/menu.cpp +25 −8
  2. M firmware/nrf24.cpp +134 −64
  3. M firmware/nrf24.h +5 −6
M firmware/menu.cpp View
@@ -11,14 +11,16 @@
1111 #include "device_check.h"
1212 #include "blemouse.h"
1313 #include "sysinfo.h"
14+#include "BleMouse.h"
1415
1516 // ================= MENU DATA =================
17+extern BleMouse bleMouse;
1618
1719 // Root menu
1820 const char *mainMenuItems[] = {
1921 "BadUSB",
2022 "RF Capture",
21− "NRF Jammer",
23+ "NRF Tools",
2224 "BLE Scan",
2325 "Wifi Scan",
2426 "Wifi Analyzer",
@@ -30,13 +32,18 @@ const char *mainMenuItems[] = {
3032
3133 Menu mainMenu = {mainMenuItems, sizeof(mainMenuItems) / sizeof(mainMenuItems[0])};
3234
33−// BadUSB submenu
34−//const char *badusbItems[] = {
35−// "Demo",
36−// "Open CMD",
37−// "Rickroll"};
3835
39− const char *badusbItems[] = {"DEMO",
36+// NRF Tools menu
37+const char *nrfToolsItems[] = {
38+ "BLE Jammer",
39+ "Bluetooth Jammer"
40+};
41+
42+Menu nrfToolsMenu = {nrfToolsItems, sizeof(nrfToolsItems) / sizeof(nrfToolsItems[0])};
43+
44+
45+// BadUSB submenu
46+const char *badusbItems[] = {"DEMO",
4047 "KEYBOARD",
4148 "HID SCRIPT",
4249 "Open Notepad",
@@ -157,9 +164,15 @@ void launchFeature()
157164 printCapture();
158165 break;
159166 case 2:
160− startNRFJammer();
167+ // startNRFJammer();
168+ //startBleJammer();
169+ //startBluetoothJammer();
170+ currentMenu = &nrfToolsMenu;
171+ menuIndex = 0;
172+ menuOffset = 0;
161173 break;
162174
175+ break;
163176 case 3:
164177 ble_scan();
165178 ble_drawMenu();
@@ -221,6 +234,8 @@ void launchFeature()
221234 ESP.restart();
222235 break;
223236 case 9:
237+ // Begin Ble mouse
238+ bleMouse.begin();
224239 ble_mouse_run();
225240 break;
226241 }
@@ -228,6 +243,8 @@ void launchFeature()
228243 else if (currentMenu == &badusbMenu)
229244 {
230245 badUSBMenu(menuIndex);
246+ } else if (currentMenu == &nrfToolsMenu) {
247+ NRFToolsMenu(menuIndex);
231248 }
232249
233250 insideFeature = false;
M firmware/nrf24.cpp View
@@ -9,91 +9,161 @@ extern SPIClass *RADIO_SPI;
99 extern RF24 radio1;
1010 extern RF24 radio2;
1111
12+const byte bleChannels[] = {2, 26, 80};
13+
14+const byte bluetoothChannels[] = {
15+ 32, 34, 46, 48, 50, 52,
16+ 0, 1, 2, 4, 6, 8,
17+ 22, 24, 26, 28, 30,
18+ 74, 76, 78, 80
19+};
20+
1221 void initNRF(RF24 &radio)
1322 {
14− radio.begin(RADIO_SPI);
23+ if (!radio.begin(RADIO_SPI)) {
24+ Serial.println("NRF not found");
25+ return;
26+ }
1527
1628 radio.setAutoAck(false);
1729 radio.stopListening();
18−
1930 radio.setRetries(0, 0);
31+ radio.setPALevel(RF24_PA_MAX);
2032 radio.setDataRate(RF24_2MBPS);
21−radio.setPALevel(RF24_PA_MAX);
22−
2333 radio.openWritingPipe(0xE7E7E7E7E7LL);
24−}
25−
26−
27−void jamChannels(const char* label, int startCh, int endCh) {
28− byte data1[32], data2[32];
29− for (int i = 0; i < 32; i++) {
30− data1[i] = random(0, 256);
31− data2[i] = random(0, 256);
32− }
33−
34− for (int ch = startCh; ch <= endCh; ch++) {
35− // Status screen
36− u8g2.clearBuffer();
37− u8g2.drawStr(0, 10, "Jamming:");
38− u8g2.setCursor(60, 10);
39− u8g2.print(label);
40− u8g2.setCursor(0, 30);
41− u8g2.print("Channel: ");
42− u8g2.print(ch);
43− u8g2.sendBuffer();
44−
45− unsigned long startTime = millis();
46− while (millis() - startTime < JAM_DURATION) {
47− radio1.setChannel(ch);
48− radio1.stopListening();
49− radio1.write(data1, sizeof(data1));
50− delayMicroseconds(100);
51−
52− radio2.setChannel(ch);
53− radio2.stopListening();
54− radio2.write(data2, sizeof(data2));
55− delayMicroseconds(100);
34+ Serial.println("NRF Initialized");
5635
57− }
5836 }
59−}
60−
61−
62−void nrfJammerSweep()
63−{
64− static uint8_t ch1 = 0;
65− static uint8_t ch2 = 124;
6637
67− uint8_t payload[32] = {0xFF};
6838
69− radio1.setChannel(ch1);
70− radio1.writeFast(payload, sizeof(payload));
71−
72− radio2.setChannel(ch2);
73− radio2.writeFast(payload, sizeof(payload));
74−
75− ch1++;
76− ch2--;
77−
78− if (ch1 > 124) ch1 = 0;
79− if (ch2 > 124) ch2 = 124;
80−}
8139
82−void startNRFJammer()
40+//void startBleJammer() {
41+// initNRF(radio1);
42+// initNRF(radio2);
43+//
44+// Serial.println("NRF JAMMER STARTED");
45+//
46+// const char payload[] = "xxxxxxxxxxxxxxxx";
47+//
48+// u8g2.clearBuffer();
49+// u8g2.drawStr(0, 10, "Jamming:");
50+// u8g2.setCursor(60, 10);
51+// u8g2.print("Bluetooth");
52+// u8g2.sendBuffer();
53+//
54+// while(true) {
55+//
56+// // Channels (you can change this set)
57+// const byte channels[] = {2, 26, 80};
58+//
59+//
60+// for (int i = 0; i < sizeof(channels); i++) {
61+// radio1.setChannel(channels[i]);
62+// radio1.write(&payload, sizeof(payload));
63+// //radio2.setChannel(channels[i]);
64+// //radio2.write(&payload, sizeof(payload));
65+// }
66+//
67+// if (btnBack())
68+// {
69+// Serial.println("Jammer stopped");
70+// return;
71+// }
72+// }
73+//
74+//}
75+//
76+//void startBluetoothJammer()
77+//{
78+// initNRF(radio1);
79+// initNRF(radio2);
80+//
81+// Serial.println("NRF JAMMER STARTED");
82+//
83+// const char payload[] = "xxxxxxxxxxxxxxxx";
84+//
85+// u8g2.clearBuffer();
86+// u8g2.drawStr(0, 10, "Jamming:");
87+// u8g2.setCursor(60, 10);
88+// u8g2.print("Bluetooth");
89+// u8g2.sendBuffer();
90+//
91+// while(true) {
92+//
93+// // Channels (you can change this set)
94+// const byte channels[] = {32, 34, 46, 48, 50, 52, 0, 1, 2, 4, 6, 8, 22, 24, 26, 28, 30, 74, 76, 78, 80};
95+//
96+//
97+// for (int i = 0; i < sizeof(channels); i++) {
98+// radio1.setChannel(channels[i]);
99+// radio1.write(&payload, sizeof(payload));
100+// //radio2.setChannel(channels[i]);
101+// //radio2.write(&payload, sizeof(payload));
102+// }
103+//
104+// if (btnBack())
105+// {
106+// Serial.println("Jammer stopped");
107+// return;
108+// }
109+// }
110+//}
111+
112+void startJammer(const char* name, const byte* channels, size_t channelCount)
83113 {
84114 initNRF(radio1);
85115 initNRF(radio2);
86116
87117 Serial.println("NRF JAMMER STARTED");
88− // nrfJammerSweep();
89− jamChannels("Bluetooth", 0, 78);
90118
119+ const char payload[] = "xxxxxxxxxxxxxxxx";
91120
92− if (btnBack())
121+ u8g2.clearBuffer();
122+ u8g2.drawStr(0, 10, "Jamming:");
123+ u8g2.setCursor(60, 10);
124+ u8g2.print(name);
125+ u8g2.sendBuffer();
126+
127+ while (true)
93128 {
94− Serial.println("Jammer stopped");
95− return;
129+ for (size_t i = 0; i < channelCount; i++)
130+ {
131+ radio1.setChannel(channels[i]);
132+ radio1.write(&payload, sizeof(payload));
133+
134+ // Optional second NRF
135+ // radio2.setChannel(channels[i]);
136+ // radio2.write(&payload, sizeof(payload));
137+ }
138+
139+ if (btnBack())
140+ {
141+ Serial.println("Jammer stopped");
142+ return;
143+ }
96144 }
145+}
97146
98− delayMicroseconds(200);
147+void NRFToolsMenu(int index) {
148+ switch (index) {
149+ case 0:
150+ // startBleJammer();
151+ // BLE
152+ startJammer(
153+ "BLE",
154+ bleChannels,
155+ sizeof(bleChannels)
156+ );
157+
158+ break;
159+ case 1:
160+ // startBluetoothJammer();
161+ // Bluetooth
162+ startJammer(
163+ "Bluetooth",
164+ bluetoothChannels,
165+ sizeof(bluetoothChannels)
166+ );
167+ break;
168+ }
99169 }
M firmware/nrf24.h View
@@ -5,10 +5,9 @@
55 // Initialization
66 void initNRF(RF24 &radio);
77
8−// Jammer modes
9−void startNRFJammer(); // dual-radio sweep jammer
10−void stopNRFJammer(); // (optional, for future)
8+void startBluetoothJammer();
9+void startBleJammer();
1110
12−// Advanced (later)
13−void nrfJammerSweep(); // internal, but can expose if needed
14−void nrfSetChannel(uint8_t ch);
11+void startJammer(const char* name, const byte* channels, size_t channelCount);
12+
13+void NRFToolsMenu(int index);