Skip to content

Commit

Permalink
new flasher device buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
pr3y committed Nov 7, 2024
1 parent 92610f5 commit c6af60d
Show file tree
Hide file tree
Showing 3 changed files with 133 additions and 198 deletions.
166 changes: 6 additions & 160 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,13 @@
![Bruce Main Menu](./media/pictures/bruce_banner.jpg)

# :shark: Bruce
# :computer: This is the branch for the WebPage and WebFlasher

Bruce is meant to be a versatile ESP32 firmware that supports a ton of offensive features focusing on facilitating Red Team operations.
It also supports m5stack products and works great with Cardputer, Sticks and M5Cores.

## :building_construction: How to install
# :shark: Bruce Web Site

**For m5stack devices**
## About Bruce

The easiest way to install Bruce is if you already use M5Launcher to manage your m5stack device, you can install it with OTA

Or you can burn it directly from the [m5burner tool](https://docs.m5stack.com/en/download), just search for 'Bruce' (My official builds will be uploaded by "owner" and have photos.) on the device category you want to and click on burn

Alternatively, you can also download the latest binary from releases and flash locally using esptool.py
```sh
esptool.py --port /dev/ttyACM0 write_flash 0x00000 Bruce.bin
```
or use a web flasher like https://web.esphome.io/
Bruce is meant to be a versatile ESP32 firmware that supports a ton of offensive features focusing on facilitating Red Team operations.
It also supports m5stack products and works great with Cardputer, Sticks and M5Cores.

## :keyboard: Discord Server

Expand All @@ -28,150 +18,6 @@ Contact us in our [Discord Server](https://discord.gg/WJ9XF9czVT).
For more information on each function supported by Bruce, [read our wiki here](https://github.com/pr3y/Bruce/wiki).
Also, [read our FAQ](https://github.com/pr3y/Bruce/wiki/FAQ)

## :computer: List of Features

### WiFi
- [x] Connect to WiFi
- [x] WiFi AP
- [x] Disconnect WiFi
- [X] [WiFi Atks](https://github.com/pr3y/Bruce/wiki/WiFi#wifi-atks)
- [x] [Beacon Spam](https://github.com/pr3y/Bruce/wiki/WiFi#beacon-spam)
- [x] [Target Atk](https://github.com/pr3y/Bruce/wiki/WiFi#target-atk)
- [x] Information
- [X] Target Deauth
- [X] EvilPortal + Deauth
- [X] Deauth Flood (More than one target)
- [X] [Wardriving](https://github.com/pr3y/Bruce/wiki/Wardriving)
- [X] NRF24 Jammer
- [X] [TelNet](https://github.com/pr3y/Bruce/wiki/WiFi#telnet)
- [X] [SSH](https://github.com/pr3y/Bruce/wiki/WiFi#ssh)
- [x] [RAW Sniffer](https://github.com/pr3y/Bruce/wiki/WiFi#raw-sniffer)
- [x] [DPWO-ESP32](https://github.com/pr3y/Bruce/wiki/WiFi#dpwo-esp32)
- [x] [Evil Portal](https://github.com/pr3y/Bruce/wiki/WiFi#evil-portal)
- [X] [Scan Hosts](https://github.com/pr3y/Bruce/wiki/WiFi#evil-portal)
- [x] [Wireguard Tunneling](https://github.com/pr3y/Bruce/wiki/WiFi#wireguard-tunneling)
- [x] Pwnagotchi
- [x] Pwnagotchi friend
- [x] Pwngrid spam faces & names
- [x] [Optional] DoScreen a very long name and face
- [x] [Optional] Flood uniq peer identifiers
- [ ] Mousejack

### BLE
- [X] [BLE Scan](https://github.com/pr3y/Bruce/wiki/BLE#ble-scan)
- [X] Bad BLE - Run Ducky scripts, similar t[BadUsb](https://github.com/pr3y/Bruce/wiki/Others#badusb)
- [X] BLE Keyboard - Cardputer Only (for now)
- [X] [NRF24 Jammer](https://github.com/pr3y/Bruce/wiki/BLE#nrf24-jammer)
- [X] iOS Spam
- [X] Windows Spam
- [X] Samsung Spam
- [X] Android Spam
- [X] Spam All

### RF
- [x] Scan/Copy
- [x] [Custom SubGhz](https://github.com/pr3y/Bruce/wiki/RF#replay-payloads-like-flipper)
- [x] Spectrum
- [x] Jammer Full (sends a full squared wave into output)
- [x] Jammer Intermittent (sends PWM signal into output)
- [x] Config
- [X] RF TX Pin
- [X] RF RX Pin
- [X] RF Module
- [x] RF433 T/R M5Stack
- [x] [CC1101 (Sub-Ghz)](https://github.com/pr3y/Bruce/wiki/CC1101)
- [X] RF Frequency
- [x] Replay

### RFID
- [x] Read tag
- [x] Read 125kHz
- [x] Clone tag
- [x] Write NDEF records
- [x] Write data
- [x] Erase data
- [x] Save file
- [x] Load file
- [x] Config
- [X] [RFID Module](https://github.com/pr3y/Bruce/wiki/RFID#supported-modules)
- [x] PN532
- [ ] Emulate tag


### IR
- [x] TV-B-Gone
- [x] IR Receiver
- [x] [Custom IR (NEC, NEC42, NECExt, SIRC, SIRC15, SIRC20, Samsung32, RC5, RC5X, RC6)](https://github.com/pr3y/Bruce/wiki/IR#replay-payloads-like-flipper)
- [x] Config
- [X] Ir TX Pin
- [X] Ir RX Pin

### FM
- [x] [Broadcast standard](https://github.com/pr3y/Bruce/wiki/FM#play_or_pause_button-broadcast-standard)
- [x] [Broadcast reserved](https://github.com/pr3y/Bruce/wiki/FM#no_entry_sign-broadcast-rerserved)
- [x] [Broadcast stop](https://github.com/pr3y/Bruce/wiki/FM#stop_button-broadcast-stop)
- [ ] [FM Spectrum](https://github.com/pr3y/Bruce/wiki/FM#ocean-fm-spectrum)
- [ ] [Hijack Traffic Announcements](https://github.com/pr3y/Bruce/wiki/FM#car-hijack-ta)
- [ ] [Config](https://github.com/pr3y/Bruce/wiki/FM#bookmark_tabs-config)

### Others
- [X] Mic Spectrum
- [X] QRCodes
- [x] Custom
- [x] PIX (Brazil bank transfer system)
- [x] [SD Card Mngr](https://github.com/pr3y/Bruce/wiki/Others#sd-card-mngr)
- [x] View image (jpg)
- [x] File Info
- [x] [Wigle Upload](https://github.com/pr3y/Bruce/wiki/Wardriving#how-to-upload)
- [x] Play Audio
- [x] View File
- [x] [SPIFFS Mngr](https://github.com/pr3y/Bruce/wiki/Others#spiffs-mngr)
- [x] [WebUI](https://github.com/pr3y/Bruce/wiki/Others#webui)
- [x] Server Structure
- [x] Html
- [x] SDCard Mngr
- [x] Spiffs Mngr
- [x] Megalodon
- [x] [BADUsb (New features, SPIFFS and SDCard)](https://github.com/pr3y/Bruce/wiki/Others#badusb)
- [x] USB Keyboard
- [x] [Openhaystack](https://github.com/pr3y/Bruce/wiki/Others#openhaystack)
- [x] [LED Control](https://github.com/pr3y/Bruce/wiki/Others#led-control)
- [X] [JavaScript Interpreter](https://github.com/pr3y/Bruce/wiki/Interpreter) [Credits to justinknight93](https://github.com/justinknight93/Doolittle)

### Clock
- [X] Clock

### Config
- [x] Brightness
- [x] Dim Time
- [x] Orientation
- [X] UI Color
- [x] Clock
- [x] Sleep
- [x] Restart

## Specific functions per Device, the ones not mentioned here are available to all.
| Device | CC1101 | NRF24 | Interpreter | FMRadio | PN532 | Mic_SPM1423 | BadUSB | RGB Led | Speaker | LITE_MODE |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Cardputer | :ok: | :ok: | :ok: | :ok: | :ok: | :ok: | :ok: | :ok: | NS4168 | :x: |
| StickCPlus2 | :ok: | :ok: | :ok: | :ok: | :ok: | :ok: | :x: | :x: | Tone | :x: |
| StickCPlus 1.1 | :ok: | :ok: | :ok: | :ok: | :ok: | :ok: | :x: | :x: | Tone | :ok: |
| Core | :x: | :x: | :x: | :x: | :x: | :ok: | :x: | :x: | Tone | :x: |
| Core2 | :x: | :x: | :x: | :x: | :x: | :ok: | :x: | :x: | :x: | :x: |
| CoreSe/SE | :x: | :x: | :ok: | :x: | :x: | :x: | :ok: | :x: | :x: | :x: |

*LITE_MODE*: TelNet, SSH, DPWO, WireGuard, BLEBacon, BLEScan and OpenHaystack are NOT available for M5Launcher Compatibility

## :sparkles: Why and how does it look?

Bruce stems from a keen observation within the community focused on devices like Flipper Zero. While these devices offered a glimpse into the world of offensive security, there was a palpable sense that something more could be achieved without being that overpriced, particularly with the robust and modular hardware ecosystem provided by m5stack products.

![Bruce Main Menu](./media/pictures/pic1.png)
![Bruce on M5Core](./media/pictures/core.png)
![Bruce on Stick](./media/pictures/stick.png)

Other media can be [found here](./media/).

## :clap: Acknowledgements

+ [@bmorcelli](https://github.com/bmorcelli) for new core and a bunch of new features.
Expand All @@ -182,4 +28,4 @@ Other media can be [found here](./media/).

## :construction: Disclaimer

Bruce is a tool for cyber offensive and red team operations, distributed under the terms of the Affero General Public License (AGPL). It is intended for legal and authorized security testing purposes only. Use of this software for any malicious or unauthorized activities is strictly prohibited. By downloading, installing, or using Bruce, you agree to comply with all applicable laws and regulations. This software is provided free of charge, and we do not accept payments for copies or modifications. The developers of Bruce assume no liability for any misuse of the software. Use at your own risk.
Bruce is a tool for cyber offensive and red team operations, distributed under the terms of the Affero General Public License (AGPL). It is intended for legal and authorized security testing purposes only. Use of this software for any malicious or unauthorized activities is strictly prohibited. By downloading, installing, or using Bruce, you agree to comply with all applicable laws and regulations. This software is provided free of charge, and we do not accept payments for copies or modifications. The developers of Bruce assume no liability for any misuse of the software. Use at your own risk.
152 changes: 114 additions & 38 deletions flasher.html
Original file line number Diff line number Diff line change
Expand Up @@ -79,29 +79,79 @@
color: #fff;
}

.device-selection {
.device-selection {
margin: 20px 0;
}
}

.device-selection label {
display: block;
background-color: #444;
color: #fff;
border-radius: 5px;
padding: 10px;
margin: 5px 0;
cursor: pointer;
transition: background-color 0.3s;
}
.device-selection h3 {
text-align: center;
}

.device-selection input[type="radio"] {
display: none;
}
.device-category {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
}

.device-button {
background-color: #333;
color: white;
border: none;
border-radius: 20px;
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
transition: background-color 0.3s;
}

.device-button:focus {
outline: none;
}

.device-list {
display: none;
}

.device-selection input[type="radio"] {
display: none;
}

.device-selection label {
display: block;
background-color: #333;
color: #fff;
border-radius: 6px;
padding: 10px;
margin: 5px 0;
cursor: pointer;
transition: background-color 0.3s;
}

.device-selection input[type="radio"]:checked + label {
background-color: #A020F0;
color: #fff;
}

.device-selection input[type="radio"]:focus + label {
outline: none;
}

.device-selection .device-category button.active {
background-color: #A020F0;
}

.device-list.m5stack {
display: none;
}

.device-list.lilygo {
display: none;
}

.device-list.esp32 {
display: none;
}

.device-selection input[type="radio"]:checked + label {
background-color: #A020F0;
color: #fff;
}

.footer {
margin-top: 24px;
Expand Down Expand Up @@ -134,7 +184,6 @@
</head>
<body>
<a href="/"><img src="./media/pictures/bruce_banner2.png" height="100vh"></a>

<div class="info-box">
<p><strong>Connect your device then select the "Flash" option and push connect.</strong></p>
<p>If asked to put your device into <strong>download mode</strong> do as follows:</p>
Expand All @@ -151,23 +200,36 @@ <h3>Select the version:</h3>
<label for="beta">Beta Release</label>
</div>

<div class="device-selection">
<h3>Select your device:</h3>
<ul>
<input type="radio" name="type" id="M5Cardputer" value="M5Cardputer" /><label for="M5Cardputer">FLASH to M5Cardputer</label>
<input type="radio" name="type" id="M5stickCP" value="M5stickCP" /><label for="M5stickCP">FLASH to M5stickC Plus (M5Launcher Compatible)</label>
<input type="radio" name="type" id="M5stickCP-Full" value="M5stickCP-Full" /><label for="M5stickCP-Full">FLASH to M5stickC Plus (Full Version)</label>
<input type="radio" name="type" id="M5stickCP2" value="M5stickCP2" /><label for="M5stickCP2">FLASH to M5stickC Plus2</label>
<input type="radio" name="type" id="M5Core4Mb" value="M5Core4Mb" /><label for="M5Core4Mb">FLASH to M5Core Devices with 4Mb of flash memory</label>
<input type="radio" name="type" id="M5Core16Mb" value="M5Core16Mb" /><label for="M5Core16Mb">FLASH to M5Core Devices with 16Mb of flash memory</label>
<input type="radio" name="type" id="M5Core2" value="M5Core2" /><label for="M5Core2">FLASH to M5Core2 & Tough</label>
<input type="radio" name="type" id="M5CoreS3" value="M5CoreS3" /><label for="M5CoreS3">FLASH to M5CoreS3 Devices 16Mb</label>
<input type="radio" name="type" id="ESP32-S3-devkit" value="ESP32-S3-devkit" /><label for="ESP32-S3-devkit">FLASH to ESP32-S3 devkit-c1</label>
<input type="radio" name="type" id="CYD-2432S028" value="CYD-2432S028" /><label for="CYD-2432S028">FLASH to CYD-2432S028 (with only one Micro USB port)</label>
<input type="radio" name="type" id="CYD-2USB" value="CYD-2USB" /><label for="CYD-2USB">FLASH to CYD with 2 USB port</label>
<input type="radio" name="type" id="Lilygo-T-Embed-CC1101" value="Lilygo-T-Embed-CC1101" /><label>FLASH to Lilygo T-Embed CC1101</label>
</ul>
</div>
<div class="device-selection">
<h3>Select your device:</h3>
<div class="device-category">
<button class="device-button" id="m5stack" onclick="toggleDeviceCategory('m5stack')">M5Stack Devices</button>
<button class="device-button" id="lilygo" onclick="toggleDeviceCategory('lilygo')">Lilygo Devices</button>
<button class="device-button" id="esp32" onclick="toggleDeviceCategory('esp32')">ESP32 Generic</button>
</div>

<ul class="device-list m5stack">
<input type="radio" name="type" id="M5Cardputer" value="M5Cardputer" /><label for="M5Cardputer">M5Cardputer</label>
<input type="radio" name="type" id="M5stickCP" value="M5stickCP" /><label for="M5stickCP">M5stickC Plus (M5Launcher Compatible)</label>
<input type="radio" name="type" id="M5stickCP-Full" value="M5stickCP-Full" /><label for="M5stickCP-Full">M5stickC Plus (Full Version)</label>
<input type="radio" name="type" id="M5stickCP2" value="M5stickCP2" /><label for="M5stickCP2">M5stickC Plus2</label>
<input type="radio" name="type" id="M5Core4Mb" value="M5Core4Mb" /><label for="M5Core4Mb">M5Core Devices with 4Mb of flash memory</label>
<input type="radio" name="type" id="M5Core16Mb" value="M5Core16Mb" /><label for="M5Core16Mb">M5Core Devices with 16Mb of flash memory</label>
<input type="radio" name="type" id="M5Core2" value="M5Core2" /><label for="M5Core2">M5Core2 & Tough</label>
<input type="radio" name="type" id="M5CoreS3" value="M5CoreS3" /><label for="M5CoreS3">M5CoreS3 Devices 16Mb</label>
</ul>

<ul class="device-list lilygo">
<input type="radio" name="type" id="Lilygo-T-Embed-CC1101" value="Lilygo-T-Embed-CC1101" /><label for="Lilygo-T-Embed-CC1101">Lilygo T-Embed CC1101</label>
</ul>

<ul class="device-list esp32">
<input type="radio" name="type" id="ESP32-S3-devkit" value="ESP32-S3-devkit" /><label for="ESP32-S3-devkit">ESP32-S3 devkit-c1</label>
<input type="radio" name="type" id="CYD-2432S028" value="CYD-2432S028" /><label for="CYD-2432S028">CYD-2432S028 (with only one Micro USB port)</label>
<input type="radio" name="type" id="CYD-2USB" value="CYD-2USB" /><label for="CYD-2USB">CYD with 2 USB port</label>
</ul>
</div>


<p class="button-row">
<esp-web-install-button class="invisible"></esp-web-install-button>
Expand All @@ -180,11 +242,25 @@ <h3>Select your device:</h3>
</div>

<script>
function toggleDeviceCategory(category) {
document.querySelectorAll('.device-list').forEach(function(list) {
list.style.display = 'none';
});

const selectedList = document.querySelector('.' + category);
selectedList.style.display = 'block';

document.querySelectorAll('.device-button').forEach(function(button) {
button.classList.remove('active');
});
document.getElementById(category).classList.add('active');
}


function updateManifest() {
const version = document.querySelector('input[name="version"]:checked').value;
const type = document.querySelector('input[name="type"]:checked').value;
const button = document.querySelector('esp-web-install-button');

button.manifest = `${version}Release/manifest_${type}.json`;
button.classList.remove('invisible');
}
Expand Down
13 changes: 13 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,19 @@ <h2>Specific functions per Device, the ones not mentioned here are available to
<td></td>
<td></td>
</tr>
<tr>
<td>Lilygo T-Embed CC1101</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>

</tbody>
</table>
Expand Down

0 comments on commit c6af60d

Please sign in to comment.