A desktop application for defending your home network 💪

Overview

Desktop Defender Setup Guide

Welcome to the setup guide for Desktop Defender. Follow the steps below to configure and start using the application.

alt text

Install

Desktop Defender can be installed using one of the following two methods described below.

1. Downloading a binary

To install the Desktop Defender binary, please visit the Desktop Defender Landing Page and download the application. Currently, the app only supports Apple Silicon devices (Mac M1-M3) as it hasn't been tested on other devices.

Configuring macOS Gatekeeper

Due to the lack of digital signature on the binary from Apple, the macOS Gatekeeper will quarantine the downloaded binary. To remove this quarantine attribute and proceed with the installation, perform the following steps:

  1. Open a Terminal application.

  2. Execute the command below to clear the quarantine attributes, allowing the app to run smoothly:

    xattr -cr /Applications/Desktop\ Defender.app

Opening the application

Now, Desktop Defender should be available on your device. To open it, you can open your applications folder or through spotlight search.

2. Running the source code

Running the app through source code is generally more complex, but is both safer than downloading an unsigned binary from the internet and is more flexible, especially for non Apple Silicon devices.

Prerequisites

To be able to download and run the source code, you must ensure that you have these dependencies on your device:

Configuration

Running the source code requires a single environment variable, IPINFO_TOKEN, which is used to access IPinfo's API for mapping ip's to countries. Currently, instead of fetching the environment variable from a .env file, the code fetches it from the actual environment. The steps below show how to set this token into your environment.

  1. Acquire a token: Either register at IPinfo for Developers to get your own API token or ask us for a token.

  2. Set Environment Variable: Store your API token as an environment variable to be used by the application. Open your terminal and run the following commands:

    export IPINFO_TOKEN="your_token_here"
    echo 'export IPINFO_TOKEN="your_token_here"' >> ~/.zshrc
    source ~/.zshrc

Setup

To set up the code, you must follow the steps below:

  1. Clone the Repository: Clone the Desktop Defender repository to your local machine using the following command in a terminal:

    git clone https://github.com/DesktopDefender/DesktopDefender.git
  2. Install Dependencies: In the terminal, change to the project directory and install the required Node modules:

    cd DesktopDefender
    npm install

    This could take a while.

Running the code

To run the code in development mode, you can run:

npm run tauri dev

This will compile the rust backend and run the frontend on port 3000. Make sure you don't have any projects running on port 3000 yourself before running this command.

Once the script has finished compiling, the project should be live on your device.

Building for Production

To build the application for production, which compiles the application and adds to your machine:

npm run tauri build

With no flags, this command will build an optimized bundle specifiacally for the OS + architecture combination your device is running.

To build for other platforms using the --target flag, refer to Tauri documentation.

Persistence

Data Storage

When building Desktop Defender, a .dd/ directory containing SQLite databases is created within your home directory. This directory is used to store application data persistently.

Uninstalling

If you decide to uninstall Desktop Defender, remember to manually remove the .dd/ directory to clean up all stored data. This step ensures that no residual data remains on your system. However, nothing bad happens if you do not delete it.

Comments
  • feat: mvp router login brute force impl

    feat: mvp router login brute force impl

    In this PR, a minimally viable version of an admin brute force attack is attempted on the user's router, notifying the user if valid credentials were found.

    When activated:

    1. DD finds all JS scripts from the inital http response
    2. finds all possible router http endpoints
    3. Locates endpoints where access is unauthorized
    4. Tries different credentials (using basic auth) on the endpoint
    5. returns the valid credentials to the user if found
    opened by kristoferfannar 2
  • Feat/external link

    Feat/external link

    Description

    created core component

    <ExternalLink
      url: string
    >
    </ExternalLink>
    

    which opens a url in user's external browser


    Use Tauri's api/shell/open method which opens a url an external browser. The backend has to permit this method to be called in tauri.conf.json.

    Testing

    🫵😂

    opened by kristoferfannar 2
  • Fix: mac prefixed with leading zeros

    Fix: mac prefixed with leading zeros

    As the OUI table, used to get manufacturer info, includes leading zeros, we figured we might want to standardize the mac address representation in DD to fit that. This PR moves mac address representation to that format.

    I do however not like the way we do this, having to call the clean_mac_address function everytime...

    @halli21 can you find a better way? I know @lsig can't 😂

    opened by kristoferfannar 1
  • Feat/styling

    Feat/styling

    In this PR the monitor page was restyled, a minimum width was set and the default for DDContainer was set to flex-col instead of flex-row. Additionally minimum height was removed.

    opened by lsig 0
  • macOS: airport CLI tool scans WiFi networks

    macOS: airport CLI tool scans WiFi networks

    found at https://github.com/azenla/MacHack

    tool lives in /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

    image

    This could help DD scan the home network, as well as other surrounding networks. Don't know what else it can do.

    enhancement 
    opened by kristoferfannar 0
An application for creating encrypted vaults for the GNOME desktop.

Vaults An application for creating encrypted vaults for the GNOME desktop. It currently uses gocryptfs and CryFS for encryption. Please always keep a

Martin Pobaschnig 51 Dec 17, 2022
shavee is a Program to automatically decrypt and mount ZFS datasets using Yubikey HMAC as 2FA or any USB drive with support for PAM to auto mount home directories.

shavee is a simple program to decrypt and mount encrypted ZFS user home directories at login using Yubikey HMAC or a Simple USB drive as 2FA written in rust.

Ashutosh Verma 38 Dec 24, 2022
This is my home environment setup for monitoring temperature and humidity

Home EnViroNment Motivation This is my IoT temperature and humidity monitoring solution for where i live. I found it cheaper to go buy sensors and hoo

Fredrik 1 Jan 5, 2022
The Home Blockchain Of 🦀 Rustaceans

The repo is included Rust syntax, configuration and the goal of creating scratch codes like one is becuase of providing testbed environment of Blockchain.

armanriazi 1 Sep 3, 2022
Cross-chain bridge message delivery network. We are hiring, [email protected]

Introduction Implementation of a https://darwinia.network node in Rust based on the Substrate framework. This repository contains runtimes for the Dar

Darwinia Network 225 Nov 8, 2022
ARYA Network is a polkadot/substrate based chain for Non-fungible Token platform on which we can own sell and buy the NFT's on polkadot network.

ARYA Network ARYA Network is a polkadot/substrate based chain for Non-fungible Token platform on which we can own sell and buy the NFT's on polkadot n

Pankaj Chaudhary 6 Dec 20, 2022
The Zenotta Network Protocol (ZNP), the network that supports the Zenotta blockchain

Zenotta Network Protocol A repo for the development of the Zenotta Network Protocol (ZNP). We will regularly be updating links and easter eggs inside

Zenotta AG 10 Apr 2, 2023
Employ your built-in wetware pattern recognition and signal processing facilities to understand your network traffic

Nethoscope Employ your built-in wetware pattern recognition and signal processing facilities to understand your network traffic. Check video on how it

Vesa Vilhonen 86 Dec 5, 2022
A network application framework for Rust

This crate is deprecated! This crate is deprecated without an immediate replacement. Discussion about a successor can be found in tokio-rs/tokio#118.

Tokio 700 Dec 12, 2022
Reference application for connecting to the TAPLE DLT network.

⚠️ TAPLE is in early development and should not be used in production ⚠️ TAPLE Client TAPLE (pronounced T+ ?? ['tapəl]) stands for Tracking (Autonomou

Open Canarias 8 Feb 15, 2023
Bitcoin Push Notification Service (BPNS) allows you to receive notifications of Bitcoin transactions of your non-custodial wallets on a provider of your choice, all while respecting your privacy

Bitcoin Push Notification Service (BPNS) Description Bitcoin Push Notification Service (BPNS) allows you to receive notifications of Bitcoin transacti

BPNS 1 May 2, 2022
The Mullvad VPN client app for desktop and mobile

Mullvad VPN desktop and mobile app Welcome to the Mullvad VPN client app. This repository contains all the source code for the desktop and mobile vers

Mullvad VPN 3k Jan 2, 2023
An open source desktop wallet for nano and banano with end-to-end encrypted, on chain messaging using the dagchat protocol.

An open source wallet with end-to-end encrypted, on chain messaging for nano and banano using the dagchat protocol.

derfarctor 22 Nov 6, 2022
MyCitadel Wallet app for Linux, Windows & MacOS desktop made with GTK+

MyCitadel Desktop Bitcoin, Lightning and RGB wallet MyCitadel is a wallet for bitcoin, digital assets and bitcoin finance (#BiFi) smart contracts. It

My Citadel 88 Jan 2, 2023
RGB smart contracts: client-facing library & command-line for desktop and mobile

RGB smart contracts RGB is confidential & scalable client-validated smart contracts for Bitcoin & Lightning. It embraces the concepts of private & mut

RGB: scalable & private smart contracts for bitcoin & lightning 4 Mar 15, 2023
Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

Note to readers: On December 1, 2020, the Libra Association was renamed to Diem Association. The project repos are in the process of being migrated. A

Diem 16.7k Jan 8, 2023
The Nervos CKB is a public permissionless blockchain, and the layer 1 of Nervos network.

Nervos CKB - The Common Knowledge Base master develop About CKB CKB is the layer 1 of Nervos Network, a public/permissionless blockchain. CKB uses Pro

Nervos Network 1k Dec 30, 2022
The Phala Network Blockchain, pRuntime and the bridge.

Phala Blockchain Phala Network is a TEE-Blockchain hybrid architecture implementing Confidential Contract. This repo includes: node/: the main blockch

Phala Network 314 Jan 6, 2023
A distributed, cryptographically-verifiable blog / social network

FeoBlog FeoBlog is a distributed blogging platform. It takes a lot of its inspiration from Mastodon and Scuttlebutt. It aims to solve a couple of prob

Cody Casterline 71 Dec 11, 2022