Age-encrypted-notebook - Age encrypted notes saved in a bolt DB

Age Encrypted Notebook (aen)

Disclaimer: This project has the sole purpose of getting me into Go development. I just want to play around with Go a bit.

aen uses Age (github.com/FiloSottile/age) to encrypt text snippets ("notes") and bolt (github.com/etcd-io/bbolt) to store them in a k/v database. This can be useful for e.g. transporting encrypted data to airgapped systems without the hassle of shared keys (well, after an initial setup :) ), the DB then resides on a removable media. Keep in mind that creating the note with an external editor (create command) or editing a note in a later version of aen requires to write the note unencrypted to a file. While the file is deleted afterwards, it can be recovered as it is not overwritten with random data at this point.

Usage

Age Encrypted Notebook v0.0.2-1-g2f9fe20

* DB and keyfile paths can also be given via evironment variables AENDB and AENKEY.
** The default editor can be changed setting the environment variable AENEDITOR.

Usage:

aen init          Initializes the private key and the database if not already given and adds the own public key to the database
  -o, --output    - Path to DB *
  -k, --key       - Path to age keyfile *

aen list          Lists the slugs of available notes sorted by their timestamp
  -d, --db        - Path to DB *

aen create        Creates a new note with an editor - by default the command calls 'codium -w' **
  -d, --db        - Path to DB *

aen write         Writes a new note
  -d, --db        - Path to DB *
  -t, --title     - Title of the note
  -m, --message   - Message of the note

aen get           Get and decrypt a note by its slug or id
  -d, --db        - Path to DB *
  -k, --key       - Path to age keyfile *
  -s, --slug      - Slug of note to get
  -i, --id        - ID of note to get

aen del           Delete note by its slug or id
  -d, --db        - Path to DB *
  -s, --slug      - Slug of note to get
  -i, --id        - ID of note to get

First, if not already available, key and database must be generated using aen init. This generates a key as well as the database and adds the public key as recipient to the DB. Then other commands can be used to handle encrypted notes in the database. The database path as well as the key path and the editor command can also be set via environment variables:

# Defaults
AENDB=""
AENKEY=""
AENEDITOR="codium -w"

Example

The following example snippet shows the initialization of the database as well as adding, viewing and deleting a note.

❯ export AENDB=/tmp/test.db
❯ export AENKEY=/tmp/aen_1
❯ aen init
Written key to /tmp/aen_1.
Public key: age1xphzytv7l6jta9a5cczes0agg5aq37ewrcpc54y5mehnjsqlw48qr0wyc7
❯ aen write --title "Hello World --message "Hello from age1xphzytv7l6jta9a5cczes0agg5aq37ewrcpc54y5mehnjsqlw48qr0wyc7!"
Error writing note: title and message must be given.
❯ aen write --title "Hello World\!" --message "Hello from age1xphzytv7l6jta9a5cczes0agg5aq37ewrcpc54y5mehnjsqlw48qr0wyc7\!"
Successfully written note hello-world.
❯ aen list
| ID    | Title                     | Creation time             | Slug                      |
| 1     | Hello World!              | 2022-02-14 14:03:53       | hello-world               |
❯ aen get -i 1
Title: Hello World! (a0b6ae04-a8ae-40ca-ad6c-2debae34cd84)
Created: 2022-02-14 14:03:53
Content:
Hello from age1xphzytv7l6jta9a5cczes0agg5aq37ewrcpc54y5mehnjsqlw48qr0wyc7!
❯ aen del -i 1
Owner
Nils Kuhnert
TI, RE, DFIR stuff. Everything you find on this profile is the reason why I'm not a developer.
Nils Kuhnert
Similar Resources

minimal implementation of secured encrypted tcp/ip connection without tls / ssl.

go-secure-transport Demo implementation of secured encrypted TCP connection without TLS / SSL. See ./example for server & client using the transport t

Dec 15, 2021

An end-to-end encrypted secret messaging service.

Nimie An End-to-end encrypted Anonymous Messaging Service. In a nutshell This service basically empowers you to have short anonymous conversations wit

Dec 17, 2021

Peer-to-peer encrypted message exchange

Constellation Constellation is a self-managing, peer-to-peer system in which each node: Hosts a number of NaCl (Curve25519) public/private key pairs.

Nov 11, 2022

This is a Pub/Sub for the Watermill project which uses the Bolt database.

This is a Pub/Sub for the Watermill project which uses the Bolt database.

Watermill Bolt Pub/Sub This is a Pub/Sub for the Watermill project which uses the Bolt database.

Jun 13, 2022

Terraform-provider-age - Age Terraform Provider with golang

Age Terraform Provider This provider lets you generate an Age key pair. Using th

Feb 15, 2022

Downloader for saved Reddit images

ErGo Downloader Downloader for saved Reddit images Features Downloads saved images from your Reddit account Optionally unsaves them automatically Opti

Dec 7, 2022

A quick and dirty but useful tool to download each text/html page from the wayback machine for a specific domain and search for keywords within the saved content

wayback-keyword-search A quick and dirty but useful tool to download each text/html page from the wayback machine for a specific domain and search for

Dec 2, 2022

Removes unnecessarily saved git objects to optimize the size of the .git directory.

Git Repo Cleaner Optimizes the size of the .git directory by removing all of the files that are unnecessarily-still-saved as part of the git history.

Mar 24, 2022

sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP

sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP

sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault, age, and PGP. (demo)

Jan 9, 2023

End-to-end encrypted email for the mesh networking age

Yggmail It's email, but not as you know it. Introduction Yggmail is a single-binary all-in-one mail transfer agent which sends and receives email nati

Jan 2, 2023

A simple command line notebook for programmers

A simple command line notebook for programmers

Dnote is a simple command line notebook for programmers. It keeps you focused by providing a way of effortlessly capturing and retrieving information

Jan 2, 2023

Cloud-native way to provide elastic Jupyter Notebook services on Kubernetes

Cloud-native way to provide elastic Jupyter Notebook services on Kubernetes

elastic-jupyter-operator: Elastic Jupyter on Kubernetes Kubernetes 原生的弹性 Jupyter 即服务 介绍 为用户按需提供弹性的 Jupyter Notebook 服务。elastic-jupyter-operator 提供以下特性

Dec 29, 2022

Go-Notebook is inspired by Jupyter Project (link) in order to document Golang code.

Go-Notebook is inspired by Jupyter Project (link) in order to document Golang code.

Go-Notebook Go-Notebook is an app that was developed using go-echo-live-view framework, developed also by us. GitHub repository is here. For this proj

Jan 9, 2023

Go (golang) Jupyter Notebook kernel and an interactive REPL

Go (golang) Jupyter Notebook kernel and an interactive REPL

lgo Go (golang) Jupyter Notebook kernel and an interactive REPL Disclaimer Since go1.10, this Go kernel has performance issue due to a performance reg

Jan 1, 2023

A web server that sits beside jupyterhub and scrapes answers out of notebook files.

A Prototype grader tool that runs with jupyterhub that essentially parses jupyter notebooks and responds with a set of form fields automatically fille

Feb 22, 2022

IPFS Collaborative Notebook for Research

IPFS Collaborative Notebook for Research

IPFS Collaborative Notebook for Research What's in This Repo? We use this repo in two ways: Issues to track several kinds of discussion on topics rela

Jan 6, 2023

Encrypted-websocket-chat - Encrypted websocket chat using golang

Encrypted websocket chat First version written in python This version should be

Sep 15, 2022

:notes: Minimalist websocket framework for Go

:notes: Minimalist websocket framework for Go

melody 🎶 Minimalist websocket framework for Go. Melody is websocket framework based on github.com/gorilla/websocket that abstracts away the tedious p

Dec 30, 2022

textnote is a command line tool for quickly creating and managing daily plain text notes.

textnote is a command line tool for quickly creating and managing daily plain text notes. It is designed for ease of use to encourage the practice of daily, organized note taking. textnote intentionally facilitates only the management (creation, opening, organizing, and consolidated archiving) of notes, following the philosophy that notes are best written in a text editor and not via a CLI.

Jan 2, 2023
`age-plugin-yubikey` implementation, encrypt things with a Yubikey/any PIV card

This is an age plugin for PIV cards/Yubikey. Your secret is kept safe on the tamperproof hardware, while letting you use the age command-line.

Aug 10, 2022
A simple and lightweight encrypted password manager written in Go.
A simple and lightweight encrypted password manager written in Go.

Osiris Password Manager A simple and lightweight encrypted password manager written in Go

Jun 16, 2022
go seof: Simple Encrypted os.File

Encrypted implementation of golang' os.File. It handles WriteAt, Seek, Truncate, etc. Can deal with huge files, random access, etc.

Jan 8, 2023
LightRPC Encrypted reliable components RPC

light LightRPC Multi-protocol encryption RPC Multi-protocol TCP KCP UNIX HTTP MQTT QUIC Encoding JSON MessagePack Protobuf Compress RawData Snappy GZI

Dec 7, 2022
🔐 Share end-to-end encrypted secrets with others via a one-time URL
🔐 Share end-to-end encrypted secrets with others via a one-time URL

If you use this repo, star it ✨ ?? Share end-to-end encrypted secrets with others via a one-time URL Use to securely share API Keys, Signing secrets,

Dec 26, 2022
🔐 Share end-to-end encrypted secrets with others via a one-time URL
🔐 Share end-to-end encrypted secrets with others via a one-time URL

If you use this repo, star it ✨ ?? Share end-to-end encrypted secrets with others via a one-time URL Use to securely share API Keys, Signing secrets,

Dec 26, 2022
ddlcpad, *Doki Doki Literature Club Plus Asset Decrypter*, is a tool to decrypt the encrypted asset file on the Doki Doki Literature Club Plus. Writing in golang.

ddlcpad 简体中文 What is this ddlcpad is short of Doki Doki Literature Club Plus Asset Decrypter You can decrypt the *.cy file from Doki Doki Literature C

Nov 27, 2022
ThanosDecryptor is an project to decrypt files encrypted by Thanos ransomware.

Prometheus-Decryptor Prometheus-Decryptor is an project to decrypt files encrypted by Prometheus ransomware. Command Arguments Usage of ./bin/promethe

Dec 16, 2022
Cross-platform application for easy encrypted sharing of files, folders, and text between devices.
Cross-platform application for easy encrypted sharing of files, folders, and text between devices.

wormhole-gui Wormhole-gui is a cross-platform application that lets you easily share files, folders and text between devices. It uses the Go implement

Dec 30, 2022
Bare Bones Encrypted File Uploading Service

eggnog Basic file uploading service in Go. Files are XOR encrypted server side, and are only accessible with the key. It's not perfect encryption, but

Nov 15, 2021