Git Product home page Git Product logo

eureka's Introduction

EUREKA

Eureka is a simple tool to encrypt files and folders. It works on Windows, Linux and MacOS.

Security and Status

Eureka is pretty simple, and well commented. Anyone is free to audit the software themselves.

Install

There are several ways to install Eureka, with more on the way.

Binary.

Get a binary here.

Go get.

If you have Golang installed and /usr/local/go/bin is in your PATH, you should be able to simply get the binary by doing

go get github.com/mimoo/eureka

Homebrew.

If you are on MacOS, just use Homebrew:

brew tap mimoo/eureka && brew install mimoo/eureka/eureka

Usage

1. You are trying to send Bob the file myfile.txt.Start by encrypting the file via:

eureka myfile.txt

which will return a one-time 256-bit AES key and create a new myfile.txt.encrypted file:

File encrypted at myfile.txt.encrypted
In a different secure channel, pass the following one-time key to your recipient.
613800fc6cf88f09aa6aeafab3eedd627503e6c5de28040c549efc2c6f80178d

2. Find a channel to send the encrypted file to Bob. It could be via email, or via dropbox, or via google drive, etc.

3. You then need to transmit the one-time key (613800fc6cf88f09aa6aeafab3eedd627503e6c5de28040c549efc2c6f80178d) to Bob in a different channel. For example, if you exchanged the file (or a link to the file) via email, then send this key to Bob via WhatsApp.

If you send both the encrypted file and the one-time key in the same channel, encryption is useless.

4. Once Bob receives the file and the one-time key from two different channels, he can decrypt the file via this command:

eureka myfile.txt.encrypted

which will create a new file myfile.txt under a decrypted folder containing the original content.

eureka's People

Contributors

erosdavid avatar mimoo avatar zachcheung avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eureka's Issues

encrypting folders

I don't want to figure out how tar works everytime I want to encrypt a folder.

Golang provides archive/tar

encrypting a file or folder should be the same command

Counter limit?

Does aes gcm counter wraps around in go? That would be an issue in go's std lib but I still need to check

UI

The best way to integrate Eureka in an OS should be to add right-click options:

  • encrypt when right-clicking on a file/folder
  • decrypt when right-clicking on something.encrypted
  • encrypt when right-clicking on the background of a folder?

The user should be prompted with a box afterwards, telling him the key.

One-time key

Is it, really, a one-time key? I can use it over and over to decrypt the same encrypted file. Perhaps it isn't one-time, but unique?

TODO

  • tell the user to pass a key when one is missing (or re-print usage)
  • add a .encrypted to the real file name instead of losing the filename+ext

Add compression

Before encrypting a file or a folder, let's compress it automatically?

We could attempt to detect if the file has already been compressed, but I expect that not much people will compress files in advance... so maybe useless complexity.

golang provides archive/zip for that

https://golang.org/pkg/archive/tar/

but no code to compress a folder, so you have to write it yourself...

package managers

Make it really easy to install Eureka

  • binaries on github
  • go get
  • homebrew
  • chocolatey
  • apt
  • yum
  • pacman
  • easy_install ?
  • rpm
  • curl/wget
  • msi package for windows?

Why unnecessary arguments?

-encrypt
Argument is not necessary as this project does only one thing.

-file
Is not necessary too. This project only encrypts files, not strings, its not necessary.

-decrypt
This can be detected using file suffix. Such as .enc or .encrypted. Not necessary too.

You're making this project much more complicated than it should be. Please, make it simple, like Go. :)

windows

How to install Eureka?

How to have Encrypt context menu + icon

HKEY_CLASSES_ROOT
   *
      shell
         encrypt
            command
               (Default) = "C:\Program Files\eureka\eureka.exe" -encrypt -file "%1"
         getEureka
            command
               (Default) = "C:\Program Files\eureka\eureka.exe" -about
   .encrypted
      DefaultIcon
         (Default) = "C:\Program Files\eureka\eureka.ico"
      shell
         encrypt
            command
               (Default) = "C:\Program Files\eureka\eureka.exe" -encrypt -file "%1"
         decrypt
            command
               (Default) = "C:\Program Files\eureka\eureka.exe" -decrypt -file "%1"

How to prompt for the key?

Probably, will need QT or a GUI

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.