Skip to content

Instantly share code, notes, and snippets.

View Falci's full-sized avatar
🍉

Fernando Falci Falci

🍉
View GitHub Profile

Testing on Umbrel OS (Raspberry Pi 4)

1. We'll first install and run Umbrel OS on a Raspberry Pi 4. Full instructions can be found here. After installation, we'll set it up on http://umbrel.local, and then SSH into the Pi:

ssh umbrel@umbrel.local

(SSH password is the same as your Umbrel's dashboard password)

# brew install pass fzf
alias passwords='find ~/.password-store/**/*.gpg | sed -E "s|.*password-store\/(.*).gpg|\1|"'
alias pw='pass -c "$(passwords | fzf)"'
{
"info": {
"_postman_id": "9076792a-6d59-4278-a33a-bad8baa90a43",
"name": "Handshake",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Node",
"item": [
docker run redsift/dnstrace -n 100 -c 10 --server 103.196.38.38 --recurse 0b
Benchmarking 103.196.38.38:53 via udp with 10 conncurrent requests
Total requests: 1000 of 1000 (100.0%)
Connection errors: 0
Read/Write errors: 22
DNS success codes: 978
DNS response codes
const fs = require('fs');
const crypto = require('crypto');
const decB64 = b64 => Buffer.from(b64, 'base64').toString('ascii');
const encB64 = ascii => Buffer.from(ascii).toString('base64');
const saveKeyToFile = (filename, key) =>
fs.writeFileSync(filename, key.export({ type: 'pkcs8', format: 'pem' }));
const loadKeyFromFile = filename => loadRawKey(fs.readFileSync(filename));
const loadRawKey = raw => crypto.createPrivateKey(raw);
;ii;;;;i:;i;:;;::;;:,::,,:,,,,,,,,,,,,,.,,,..,,,.,,;t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8t:::,,.,,,.,,,.,,,,,.........,.,.......,..,,...,.................
iiiii;;;;;;::;;:::::,::,,,,,,,,,,,,,,,.,..,.,,,.,,tL@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@f,. . . . . . .....................,..........,....
ii;;:;;;;::i;;:::,,::,,:,,,,,.,,,,,.,,.,..,....,i0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L:..
;;;;;;;:::i:;:;:::;::,:,,,,,,:,,..,.,,.,...,..,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@G;.
;;ii;i:;:;;:::::::::,::,,:,,,,,.,,,.,,.....,,t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;, ..
;;;;;;::;;;::;,;::,::,:,,,,.,,,,.,,.......,:0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8i:,
;;;;;;;::,::::::,::::,,,,,,:,:,,.,,,......,08@@@@@@@@@@@@8

Brute Force

This script will hash "all" possible Handshake names (plus some invalids) and log the "smaller" (based on its position on the Urkel Tree)

Currently, the first name on the Urkel Tree is swaffield

Hey folks, I'd like to share my view of the "login with HNS" feature (https://director.namebase.io/apps/p/login-with-handshake)

Overview:

  • Username and password.
  • Get the password and SHA-256;
  • Get the hash and use it as a private key, then using secp256k1 (https://en.bitcoin.it/wiki/Secp256k1) generate the public key
  • Get the public key and store it in HNS as a TXT for a domain: auth=02b562858a301a8721923b89df9963d30101639ac690cce5f555529b778c3dbfc7

When you login on a website using your Google account, you trust Google, but not necessarily the website you're log in;

136,000 eth.ens.domains
136,000 gnunet.org
202,985 dnscrypt.info
202,985 marples.name
202,985 riseup.net
405,970 datprotocol.com
405,970 webtorrent.io
408,000 blockstack.com
608,955 mozilla.com
608,957 darksi.de
@Falci
Falci / parking.js
Last active December 3, 2021 20:44
This script parks a list of domain in parking.sinpapeles. It requires Bob Wallet.
const { WalletClient } = require('hs-client');
const { Network } = require('hsd');
const network = Network.get('main');
// Important: Bob needs to be running
// This is the phrase you use to unlock Bob Wallet.
const passphrase = 'MY PASSPPHASE';
// The list of domains you want to park;