A cross platform, rust implementation for the Tegra X1 bootROM exploit

Related tags

Command-line cli gui
Overview

Switcheroo

License GitHub Workflow Status GitHub Workflow Status CircleCI

A CLI and GUI for the RCM BootRom exploit (Fusée Gelée exploit for Nintendo Switch)

Only works on unpatched Switches: https://ismyswitchpatched.com/

Written in Rust using clap for the CLI and egui for the GUI.

Features

  • CLI interface
  • GUI interface
  • Works on MacOS and Linux (Windows support is WIP)

Command Line Interface Example


Graphical User Interface Example

Usage

The binary name is switcheroo

To display application use switcheroo help
Use switcheroo <subcommand> help for help with that subcommand.

Examples

Execute a payload.
switcheroo execute <path>

Check if the switch is connected.
switcheroo device

Start the GUI.
switcheroo gui

Troubleshooting

Linux: Permission denied error

On many linux systems the usb control is blocked by default.

This can be fixed by adding the following file:
/etc/udev/rules.d/99-switch.rules
with the following content:

SUBSYSTEM=="usb", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="3000", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7321", MODE="0666"

then reload the udev rules:
sudo udevadm control --reload-rules

Finally unplug and plug back in the switch.

Linux: Flatpak not detecting Switch

Due to a limitation of flatpak not allowing access to udev, the flatpak version only works if the Switch is already in rcm mode and plugged in when it is launched. If the application is launched without these conditions being met, it will never show RCM OK

Similar projects

Here are some other similar projects

Credit

Implemenation is largely based on the following reference implementation: Fusee Launcher
Gui design inspired from the great: TegraRcmGui

License

GPL-2.0 License

You might also like...
Rust-based language and runtime for cross-platform app development
Rust-based language and runtime for cross-platform app development

Pax Pax is a cross-platform rendering engine & Rust framework for interactive graphics, animations, and GUIs. Pax extends the Rust programming languag

Safe Unix shell-like parameter expansion/variable substitution via cross-platform CLI or Rust API
Safe Unix shell-like parameter expansion/variable substitution via cross-platform CLI or Rust API

Safe Unix shell-like parameter expansion/variable substitution for those who need a more powerful alternative to envsubst but don't want to resort to

A pure Rust, cross-platform soundboard app

afx This thing is my attempt at a soundboard program. afx.mp4 Why? I tried some prior art and decided that none of the existing options fit my needs.

An experimental cross-platform UI framework in rust.
An experimental cross-platform UI framework in rust.

Cross-platform UI framework in Rust with Easy functional composasbles Flexible state management Desktop and mobile support Accessibility Native skia r

A new pure-Rust library for cross-platform low-level access to USB devices.

nusb A new pure-Rust library for cross-platform low-level access to USB devices. Documentation Compared to rusb and libusb Pure Rust, no dependency on

General purpose cross-platform GIS-rendering library written in Rust
General purpose cross-platform GIS-rendering library written in Rust

Galileo is a general purpose cross-platform geo-rendering library. Web examples Raster tile layer (OSM) Vector tile layer (Maplibre) Use buttons at th

A cross platform minimalistic text user interface
A cross platform minimalistic text user interface

titik Titik is a crossplatform TUI widget library with the goal of being able to interact intuitively on these widgets. It uses crossterm as the under

Alacritty - A fast, cross-platform, OpenGL terminal emulator
Alacritty - A fast, cross-platform, OpenGL terminal emulator

Alacritty is a modern terminal emulator that comes with sensible defaults, but allows for extensive configuration. By integrating with other applications, rather than reimplementing their functionality, it manages to provide a flexible set of features with high performance. The supported platforms currently consist of BSD, Linux, macOS and Windows.

A cross-platform graphical process/system monitor with a customizable interface and a multitude of features
A cross-platform graphical process/system monitor with a customizable interface and a multitude of features

A cross-platform graphical process/system monitor with a customizable interface and a multitude of features. Supports Linux, macOS, and Windows. Inspired by both gtop and gotop.

Comments
  • Add new gui images

    Add new gui images

    Hi there, I really like Switcheroo and I had fun making new images for the GUI. I'm by no means a professional artist, but I still hope you like them. Any feedback is welcome :)

    opened by TecCheck 1
  • Merge GUI changes and other stuff

    Merge GUI changes and other stuff

    Changes:

    • Slight UI overhaul. (Still imperfect, will test around with new layouts)
    • Most buttons are now very cool icons! 🥳 (Need to find fitting icons for loading and removing favorites)
    • The aforementioned buttons have tooltips (hover text)
    • Added favorites feature to GUI.
    • Added reset button, allows for injecting multiple times without app restart.
    • Added darkmode toggle and made darkmode the default. (Maybe autodetect dark/light theme from OS?)
    • Symbols are now stripped on the release profile by default, small binary sizes are cool. 😎

    Important notes:

    • Data directory is changed from <data_dir>/favorites to <data_dir>/switcheroo/favorites/ (Makes more sense, atleast on my linux system, don't know how the structure on windows and MacOS is.
    • There is some commented out code from my first attempt on the payload manager (which failed lol)
    opened by superyu1337 1
  • Cli commands not working. Opening GUI instead.

    Cli commands not working. Opening GUI instead.

    Hi,

    Switcheroo seems to have a little cli issue. Whatever the command I try. It's always opening me the GUI.

    image

    Context Info:

    • Windows 11 Pro 10.0.22612 (22H2).
    • PowerShell 7.3.0 through Windows Terminal.
    bug 
    opened by GGLinnk 5
Owner
Ethan Budd
Student at UW - Madison
Ethan Budd
zkPoEX enables white hat hackers to report live vulnerabilities in smart contracts while maintaining the confidentiality of the exploit

zkPoEX enables white hat hackers to report live vulnerabilities in smart contracts while maintaining the confidentiality of the exploit, facilitating efficient communication and collaboration between hackers and project owners for a more secure DeFi ecosystem.

zkoranges 135 Apr 16, 2023
Write your own exploit for $CASH

Cashio Exploit Workshop The Cashio hack was one of the biggest hacks occurred in Solana ecosystem which allowed the attacker to print infinite amount

Narya.ai 21 Mar 22, 2023
A cross-platform implementation of Dirman in Rust.

A Directory Manager for Neorg The neorg-dirman crate is a core module which provides a basic interface for workspaces. Workspaces are the backbone of

Neorg 9 Mar 17, 2023
Cross-platform pseudoterminal (PTY/ConPTY) implementation with async support

pseudoterminal The pseudoterminal crate is a versatile pseudoterminal (PTY) implementation designed for Rust, offering asynchronous capabilities. This

Michael 3 Sep 15, 2023
Rust-battery - Rust crate providing cross-platform information about the notebook batteries.

battery Rust crate providing cross-platform information about the notebook batteries. Table of contents Overview Supported platforms Install Examples

svartalf 326 Dec 21, 2022
Cross-platform Rust library for coloring and formatting terminal output

Coloring terminal output Documentation term-painter is a cross-platform (i.e. also non-ANSI terminals) Rust library for coloring and formatting termin

Lukas Kalbertodt 75 Jul 28, 2022
Cross platform terminal library rust

Cross-platform Terminal Manipulation Library Crossterm is a pure-rust, terminal manipulation library that makes it possible to write cross-platform te

crossterm-rs 2.1k Jan 2, 2023
Cross-platform Rust rewrite of the GNU coreutils

Cross-platform Rust rewrite of the GNU coreutils

null 13k Jan 8, 2023
Cross-platform WebView library in Rust for Tauri.

Cross-platform WebView rendering library in Rust that supports all major desktop platforms like Windows, macOS, and Linux. Overview Wry connects the w

Tauri 2.2k Jan 9, 2023
Write Cross-platform application with React-like decralative UI framework and scalable ECS architecture all in Rust.

bevy_dioxus Dioxus Plugin for Bevy Write Cross-platform application with React-like decralative UI framework and scalable ECS architecture all in Rust

Junichi Sugiura 269 Dec 29, 2022