Giter VIP home page Giter VIP logo

discord-sandboxed's Introduction

Modified by Michael Peters Sourced to Phil for GitHub

Discord-Sandbox

Open-source Sandbox Discord client Because asking for privacy will get you nowhere.

Are you worried Discord is watching what programs you have open or listening to your mic even while you're not pressing your push-to-talk key? Discord-Sandbox isolates the Discord client from reading background processes by running the Discord web client inside of a <webview>, which is finally contained inside the Electron process. While I cannot guarantee this client protects you from anything, I have tried my best to remove Discord's data collection.

Note that since this client is running the Discord web client, the following features will (unfortunately) NOT be available.

- Viewing Streams or Streaming your desktop
- Discord's "High Quality Audio" or whatever

Toggle Mute

Push-to-Talk is configured using the SIGUSR2. Send a SIGUSR2 to the electron process to trigger a click on the mute button. You can send this signal in the terminal with pkill pkill -SIGUSR2 --oldest electron

Note: Make sure to use --oldest. Otherwise, the electron GPU processes will get angry and quit passive-agressively: [130264:0223/232600.871793:FATAL:gpu_data_manager_impl_private.cc(448)] GPU process isn't usable. Goodbye. /home/michael/builds/discord-sandboxed/node_modules/electron/dist/electron exited with signal SIGTRAP

Telemetry Mitigations

As detailed from Luna Mendes' discord-unofficial-docs, Discord sends telemetry data over the /api/science endpoint. This project does its best to disable this telemetry communication by running javascript code into the webview that adds a blacklist/whitelist to the default XMLHttpRequest behavior. In this way, we explicitly block all communication with the science address, while simultaneously whitelisting addresses needed for minimum Discord functionality. See the full code in mainRender.js.

Discord likely does other sneaky things to spy on us. If you have any ideas on improving this project's security/privacy please let me know by opening an issue!

Clicking on the Logs icon in the client will open the Log window, which will detail when a communication by the client is blocked.

What this Client Tries to Do

Discord-Sandbox tries to isolate the Discord client within the Electron process, preventing it from watching keystrokes or processes it has no business in.

What this Client Cannot Do

Discord's desktop application has the capabilities to collect a lot of user-behavior information. This project seeks to isolate your keystrokes and background processes from Discord. Discord can still collect the following information. Since these are inherent to the service, we can't do much about it.

  • Messages, client data, emails, and voice data
  • Links you have clicked/opened from within the client (Passing links to a browser has been disabled to somewhat mitigate this)

How does Push-to-Talk Work?

The Discord web client lacks push-to-talk detection while the browser session does not have window focus. This project works enables system-wide push-to-talk while respecting your privacyby using a separate key-press detection library, iohook, and mediating its interaction with Discord. This separates your activity from Discord without compromising usability.

When your push-to-talk key is held down, the renderer process will send a backspace key-down keycode to the <webview>. This opens your microphone without giving the client window focus, so you can use Discord without worrying about the client listening in on whatever else you're running.

Installation (for Linux)

Prereqs

  • Make sure you've installed libxkbcommon-x11 pacman -S libxkbcommon-x11

Building From Source

  1. Install Node (https://nodejs.org/en/download/)
  2. Clone Repo git clone https://github.com/khlam/discord-sandboxed.git
  3. Install dependencies npm i && npm i -d
  4. To test it out, run npm start

Packaging and Installing on Arch Linux (pacman)

  1. yay -S libxcrypt-compat Currently, electron-builder's ruby depends on an old version of libxcrypt so you might need to install the libxcrypt-compat library (especially if you're on a pretty minimal system)
  2. npm run package-pacman Create the pacman package with electron-builder
  3. ./dist/linux-unpacked/discord-sandbox Test the unpacked version
  4. pacman -U ./dist/discord-sandbox-x.x.x.pacman Install with pacman

This Discord-Sandbox open source project is not affiliated with Discord or Discord Inc. I do not claim to have created Discord. Discord-Sandbox is not the official Discord client. Discord is a freeware VoIP application made by Discord Inc. You can download the official Discord client Here.

discord-sandboxed's People

Contributors

khlam avatar dependabot[bot] avatar

Stargazers

TernaryLabs avatar

Watchers

James Cloos avatar Philip Massouh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.