Add generate password system
Note that this commit references my IRC configuraton. I'm not checking it in as I have too many credentials and personal information in it. When I abstract it sufficiently, I will commit it.
This commit is contained in:
parent
669a16ebb9
commit
2669fdaa5b
6 changed files with 590 additions and 2 deletions
|
@ -26,6 +26,8 @@ This creates [[file:~/.emacs.d/init.el][~/.emacs.d/init.el]] that starts the pro
|
||||||
- [[file:ha-capturing-notes.org][ha-capturing-notes.org]] :: my engineering notebook.
|
- [[file:ha-capturing-notes.org][ha-capturing-notes.org]] :: my engineering notebook.
|
||||||
- [[file:ha-agendas.org][ha-agendas.org]] :: Attempts to "supe-up" my task list.
|
- [[file:ha-agendas.org][ha-agendas.org]] :: Attempts to "supe-up" my task list.
|
||||||
- [[file:ha-email.org][ha-email.org]] :: Reading email using =notmuch= in a *Hey* fashion.
|
- [[file:ha-email.org][ha-email.org]] :: Reading email using =notmuch= in a *Hey* fashion.
|
||||||
|
- [[file:ha-irc.org][ha-irc.org]] :: Connection to IRC servers using rcirc and bitlbee.
|
||||||
|
- [[file:ha-passwords.org][ha-passwords.org]] :: Code for generating passwords.
|
||||||
- [[file:ha-programming.org][ha-programming.org]] :: configuration for /all/ programming languages, or at least, the simple ones.
|
- [[file:ha-programming.org][ha-programming.org]] :: configuration for /all/ programming languages, or at least, the simple ones.
|
||||||
|
|
||||||
*Note:* Other functions and files come from essays written on [[http://www.howardism.org][my blog]]. To help with this, see [[file:support/final-initialize.el][support/final-initialize.el]] file.
|
*Note:* Other functions and files come from essays written on [[http://www.howardism.org][my blog]]. To help with this, see [[file:support/final-initialize.el][support/final-initialize.el]] file.
|
||||||
|
|
|
@ -122,8 +122,8 @@ The following loads the rest of my org-mode literate files. I add them as they a
|
||||||
"ha-programming.org"
|
"ha-programming.org"
|
||||||
"ha-agendas.org"
|
"ha-agendas.org"
|
||||||
"ha-email.org"
|
"ha-email.org"
|
||||||
;; "ha-irc.org"
|
"ha-irc.org"
|
||||||
;; "ha-passwords.org"
|
"ha-passwords.org"
|
||||||
"ha-remoting.org"
|
"ha-remoting.org"
|
||||||
"ha-feed-reader.org"
|
"ha-feed-reader.org"
|
||||||
|
|
||||||
|
|
230
data/adjectives.txt
Normal file
230
data/adjectives.txt
Normal file
|
@ -0,0 +1,230 @@
|
||||||
|
adorable
|
||||||
|
adventurous
|
||||||
|
aggressive
|
||||||
|
agreeable
|
||||||
|
alert
|
||||||
|
alive
|
||||||
|
amused
|
||||||
|
angry
|
||||||
|
annoyed
|
||||||
|
annoying
|
||||||
|
anxious
|
||||||
|
arrogant
|
||||||
|
ashamed
|
||||||
|
attractive
|
||||||
|
average
|
||||||
|
awful
|
||||||
|
bad
|
||||||
|
beautiful
|
||||||
|
better
|
||||||
|
bewildered
|
||||||
|
bittersweet
|
||||||
|
blushing
|
||||||
|
shadowy
|
||||||
|
black
|
||||||
|
bloody
|
||||||
|
blue-eyed
|
||||||
|
blushing
|
||||||
|
bored
|
||||||
|
brainy
|
||||||
|
brave
|
||||||
|
breakable
|
||||||
|
bright
|
||||||
|
busy
|
||||||
|
calm
|
||||||
|
careful
|
||||||
|
cautious
|
||||||
|
charming
|
||||||
|
cheerful
|
||||||
|
clean
|
||||||
|
clear
|
||||||
|
clever
|
||||||
|
cloudy
|
||||||
|
clumsy
|
||||||
|
colorful
|
||||||
|
combative
|
||||||
|
comfortable
|
||||||
|
concerned
|
||||||
|
condemned
|
||||||
|
confused
|
||||||
|
cooperative
|
||||||
|
courageous
|
||||||
|
crazy
|
||||||
|
creepy
|
||||||
|
crowded
|
||||||
|
cruel
|
||||||
|
curious
|
||||||
|
cute
|
||||||
|
dangerous
|
||||||
|
dark
|
||||||
|
dead
|
||||||
|
defeated
|
||||||
|
defiant
|
||||||
|
delightful
|
||||||
|
depressed
|
||||||
|
determined
|
||||||
|
different
|
||||||
|
difficult
|
||||||
|
disgusted
|
||||||
|
distinct
|
||||||
|
disturbed
|
||||||
|
dizzy
|
||||||
|
doubtful
|
||||||
|
drab
|
||||||
|
dull
|
||||||
|
eager
|
||||||
|
easy
|
||||||
|
elated
|
||||||
|
elegant
|
||||||
|
embarrassed
|
||||||
|
enchanting
|
||||||
|
encouraging
|
||||||
|
energetic
|
||||||
|
enthusiastic
|
||||||
|
envious
|
||||||
|
evil
|
||||||
|
excited
|
||||||
|
expensive
|
||||||
|
exuberant
|
||||||
|
fair
|
||||||
|
faithful
|
||||||
|
famous
|
||||||
|
fancy
|
||||||
|
fantastic
|
||||||
|
fierce
|
||||||
|
filthy
|
||||||
|
fine
|
||||||
|
foolish
|
||||||
|
fragile
|
||||||
|
frail
|
||||||
|
frantic
|
||||||
|
friendly
|
||||||
|
frightened
|
||||||
|
funny
|
||||||
|
gentle
|
||||||
|
gifted
|
||||||
|
glamorous
|
||||||
|
gleaming
|
||||||
|
glorious
|
||||||
|
good
|
||||||
|
gorgeous
|
||||||
|
graceful
|
||||||
|
grieving
|
||||||
|
grotesque
|
||||||
|
grumpy
|
||||||
|
handsome
|
||||||
|
happy
|
||||||
|
healthy
|
||||||
|
helpful
|
||||||
|
helpless
|
||||||
|
hilarious
|
||||||
|
homeless
|
||||||
|
homely
|
||||||
|
horrible
|
||||||
|
hungry
|
||||||
|
hurt
|
||||||
|
ill
|
||||||
|
important
|
||||||
|
impossible
|
||||||
|
inexpensive
|
||||||
|
innocent
|
||||||
|
inquisitive
|
||||||
|
itchy
|
||||||
|
jealous
|
||||||
|
jittery
|
||||||
|
jolly
|
||||||
|
joyous
|
||||||
|
kind
|
||||||
|
lazy
|
||||||
|
light
|
||||||
|
lively
|
||||||
|
lonely
|
||||||
|
long
|
||||||
|
lovely
|
||||||
|
lucky
|
||||||
|
magnificent
|
||||||
|
misty
|
||||||
|
modern
|
||||||
|
motionless
|
||||||
|
muddy
|
||||||
|
mushy
|
||||||
|
mysterious
|
||||||
|
nasty
|
||||||
|
naughty
|
||||||
|
nervous
|
||||||
|
nice
|
||||||
|
nutty
|
||||||
|
obedient
|
||||||
|
obnoxious
|
||||||
|
odd
|
||||||
|
open
|
||||||
|
outrageous
|
||||||
|
outstanding
|
||||||
|
panicky
|
||||||
|
perfect
|
||||||
|
plain
|
||||||
|
pleasant
|
||||||
|
poised
|
||||||
|
poor
|
||||||
|
powerful
|
||||||
|
precious
|
||||||
|
prickly
|
||||||
|
proud
|
||||||
|
putrid
|
||||||
|
puzzled
|
||||||
|
quaint
|
||||||
|
real
|
||||||
|
relieved
|
||||||
|
repulsive
|
||||||
|
rich
|
||||||
|
scary
|
||||||
|
selfish
|
||||||
|
shiny
|
||||||
|
shy
|
||||||
|
silly
|
||||||
|
sleepy
|
||||||
|
smiling
|
||||||
|
smoggy
|
||||||
|
sore
|
||||||
|
sparkling
|
||||||
|
splendid
|
||||||
|
spotless
|
||||||
|
stormy
|
||||||
|
strange
|
||||||
|
stupid
|
||||||
|
successful
|
||||||
|
super
|
||||||
|
talented
|
||||||
|
tame
|
||||||
|
tasty
|
||||||
|
tender
|
||||||
|
tense
|
||||||
|
terrible
|
||||||
|
thankful
|
||||||
|
thoughtful
|
||||||
|
thoughtless
|
||||||
|
tired
|
||||||
|
tough
|
||||||
|
troubled
|
||||||
|
ugliest
|
||||||
|
ugly
|
||||||
|
uninterested
|
||||||
|
unsightly
|
||||||
|
unusual
|
||||||
|
upset
|
||||||
|
uptight
|
||||||
|
vast
|
||||||
|
victorious
|
||||||
|
vivacious
|
||||||
|
vivid
|
||||||
|
wandering
|
||||||
|
weary
|
||||||
|
wicked
|
||||||
|
wide-eyed
|
||||||
|
wild
|
||||||
|
witty
|
||||||
|
worried
|
||||||
|
worrisome
|
||||||
|
wrong
|
||||||
|
zany
|
||||||
|
zealous
|
48
data/colors.txt
Normal file
48
data/colors.txt
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
aquamarine
|
||||||
|
black
|
||||||
|
blue
|
||||||
|
brass
|
||||||
|
brown
|
||||||
|
burnt-orange
|
||||||
|
canary
|
||||||
|
carmine
|
||||||
|
cerise
|
||||||
|
cerulean
|
||||||
|
cobalt
|
||||||
|
copper
|
||||||
|
cornflower
|
||||||
|
denim
|
||||||
|
eggplant
|
||||||
|
fuchsia
|
||||||
|
golden
|
||||||
|
goldenrod
|
||||||
|
gray
|
||||||
|
green
|
||||||
|
indigo
|
||||||
|
lavender
|
||||||
|
magenta
|
||||||
|
mahogany
|
||||||
|
maroon
|
||||||
|
navy
|
||||||
|
olive
|
||||||
|
orange
|
||||||
|
periwinkle
|
||||||
|
pine
|
||||||
|
pink
|
||||||
|
purple
|
||||||
|
red
|
||||||
|
red-brick
|
||||||
|
rose
|
||||||
|
scarlet
|
||||||
|
sepia
|
||||||
|
sienna
|
||||||
|
silver
|
||||||
|
tan
|
||||||
|
teal
|
||||||
|
turquoise
|
||||||
|
ultramarine
|
||||||
|
umber
|
||||||
|
vermilion
|
||||||
|
violet
|
||||||
|
white
|
||||||
|
yellow
|
200
data/nouns.txt
Normal file
200
data/nouns.txt
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
actor
|
||||||
|
advertisement
|
||||||
|
afternoon
|
||||||
|
airport
|
||||||
|
ambulance
|
||||||
|
animal
|
||||||
|
answer
|
||||||
|
apple
|
||||||
|
apricot
|
||||||
|
army
|
||||||
|
asparagus
|
||||||
|
australia
|
||||||
|
balloon
|
||||||
|
banana
|
||||||
|
battery
|
||||||
|
beach
|
||||||
|
beard
|
||||||
|
beaver
|
||||||
|
bed
|
||||||
|
belgium
|
||||||
|
boy
|
||||||
|
branch
|
||||||
|
breakfast
|
||||||
|
brother
|
||||||
|
camera
|
||||||
|
candle
|
||||||
|
car
|
||||||
|
caravan
|
||||||
|
carpet
|
||||||
|
cartoon
|
||||||
|
china
|
||||||
|
church
|
||||||
|
crayon
|
||||||
|
crowd
|
||||||
|
daughter
|
||||||
|
death
|
||||||
|
denmark
|
||||||
|
desert
|
||||||
|
diamond
|
||||||
|
dinner
|
||||||
|
disease
|
||||||
|
doctor
|
||||||
|
dog
|
||||||
|
dream
|
||||||
|
dress
|
||||||
|
easter
|
||||||
|
egg
|
||||||
|
eggplant
|
||||||
|
egypt
|
||||||
|
elephant
|
||||||
|
energy
|
||||||
|
engine
|
||||||
|
england
|
||||||
|
evening
|
||||||
|
eye
|
||||||
|
family
|
||||||
|
fern
|
||||||
|
fish
|
||||||
|
flag
|
||||||
|
flower
|
||||||
|
football
|
||||||
|
forest
|
||||||
|
fountain
|
||||||
|
france
|
||||||
|
furniture
|
||||||
|
garage
|
||||||
|
garden
|
||||||
|
gas
|
||||||
|
ghost
|
||||||
|
giraffe
|
||||||
|
girl
|
||||||
|
glass
|
||||||
|
gold
|
||||||
|
grass
|
||||||
|
greece
|
||||||
|
guitar
|
||||||
|
hair
|
||||||
|
hamburger
|
||||||
|
helicopter
|
||||||
|
helmet
|
||||||
|
holiday
|
||||||
|
honey
|
||||||
|
horse
|
||||||
|
hospital
|
||||||
|
house
|
||||||
|
hydrogen
|
||||||
|
ice
|
||||||
|
insect
|
||||||
|
insurance
|
||||||
|
iron
|
||||||
|
island
|
||||||
|
jackal
|
||||||
|
jelly
|
||||||
|
jeans
|
||||||
|
jewellery
|
||||||
|
jordan
|
||||||
|
juice
|
||||||
|
kangaroo
|
||||||
|
king
|
||||||
|
kitchen
|
||||||
|
kite
|
||||||
|
knife
|
||||||
|
lamp
|
||||||
|
lawyer
|
||||||
|
leather
|
||||||
|
lemon
|
||||||
|
library
|
||||||
|
lighter
|
||||||
|
lion
|
||||||
|
lizard
|
||||||
|
lock
|
||||||
|
london
|
||||||
|
lunch
|
||||||
|
machine
|
||||||
|
magazine
|
||||||
|
magician
|
||||||
|
manatee
|
||||||
|
manchester
|
||||||
|
market
|
||||||
|
match
|
||||||
|
microphone
|
||||||
|
monkey
|
||||||
|
morning
|
||||||
|
motorcycle
|
||||||
|
nail
|
||||||
|
napkin
|
||||||
|
needle
|
||||||
|
nest
|
||||||
|
nigeria
|
||||||
|
night
|
||||||
|
notebook
|
||||||
|
ocean
|
||||||
|
oil
|
||||||
|
orange
|
||||||
|
orchid
|
||||||
|
oxygen
|
||||||
|
oyster
|
||||||
|
painting
|
||||||
|
parrot
|
||||||
|
peach
|
||||||
|
pencil
|
||||||
|
piano
|
||||||
|
pillow
|
||||||
|
pizza
|
||||||
|
planet
|
||||||
|
plastic
|
||||||
|
plum
|
||||||
|
portugal
|
||||||
|
potato
|
||||||
|
queen
|
||||||
|
quill
|
||||||
|
rain
|
||||||
|
rainbow
|
||||||
|
raincoat
|
||||||
|
refrigerator
|
||||||
|
restaurant
|
||||||
|
river
|
||||||
|
rocket
|
||||||
|
room
|
||||||
|
rose
|
||||||
|
russia
|
||||||
|
salmon
|
||||||
|
sand
|
||||||
|
sandwich
|
||||||
|
school
|
||||||
|
scooter
|
||||||
|
shampoo
|
||||||
|
shamrock
|
||||||
|
shoe
|
||||||
|
soccer
|
||||||
|
spoon
|
||||||
|
stone
|
||||||
|
sugar
|
||||||
|
sweden
|
||||||
|
teacher
|
||||||
|
telephone
|
||||||
|
television
|
||||||
|
tent
|
||||||
|
thailand
|
||||||
|
tomato
|
||||||
|
toothbrush
|
||||||
|
traffic
|
||||||
|
train
|
||||||
|
truck
|
||||||
|
tumbleweed
|
||||||
|
uganda
|
||||||
|
umbrella
|
||||||
|
van
|
||||||
|
vase
|
||||||
|
vegetable
|
||||||
|
vulture
|
||||||
|
wall
|
||||||
|
whale
|
||||||
|
window
|
||||||
|
wire
|
||||||
|
xylophone
|
||||||
|
yacht
|
||||||
|
yak
|
||||||
|
zebra
|
||||||
|
zoo
|
108
ha-passwords.org
Normal file
108
ha-passwords.org
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
#+TITLE: Personal Password Generator
|
||||||
|
#+AUTHOR: Howard X. Abrams
|
||||||
|
#+EMAIL: howard.abrams@gmail.com
|
||||||
|
#+DATE: 2021-01-11
|
||||||
|
#+FILETAGS: :emacs:
|
||||||
|
|
||||||
|
A literate programming version for Emacs code to generate and store passwords.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp :exports none
|
||||||
|
;;; ha-passwords.el --- A literate programming version for Emacs code to generate and store passwords. -*- lexical-binding: t; -*-
|
||||||
|
;;
|
||||||
|
;; Copyright (C) 2021 Howard X. Abrams
|
||||||
|
;;
|
||||||
|
;; Author: Howard X. Abrams <http://gitlab.com/howardabrams>
|
||||||
|
;; Maintainer: Howard X. Abrams <howard.abrams@gmail.com>
|
||||||
|
;; Created: January 11, 2021
|
||||||
|
;;
|
||||||
|
;; This file is not part of GNU Emacs.
|
||||||
|
;;
|
||||||
|
;; *NB:* Do not edit this file. Instead, edit the original literate file at:
|
||||||
|
;; /Users/howard.abrams/other/hamacs/ha-passwords.org
|
||||||
|
;; And tangle the file to recreate this one.
|
||||||
|
;;
|
||||||
|
;;; Code:
|
||||||
|
#+END_SRC
|
||||||
|
* Introduction
|
||||||
|
Let's assume that I store a bunch of words in data files:
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defvar ha-passwords-data-files (list (expand-file-name "adjectives.txt"
|
||||||
|
(expand-file-name "data" hamacs-source-dir))
|
||||||
|
(expand-file-name "colors.txt"
|
||||||
|
(expand-file-name "data" hamacs-source-dir))
|
||||||
|
(expand-file-name "nouns.txt"
|
||||||
|
(expand-file-name "data" hamacs-source-dir)))
|
||||||
|
"List of file name containing a data lines for our password generator. Order of these files matter.")
|
||||||
|
|
||||||
|
(defvar ha-passwords-data nil
|
||||||
|
"Contains a list of lists of words that we can choose.")
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
You can see where I'm going with this, can't you? Let's read them into list variables.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defun ha-passwords--read-data-file (filename)
|
||||||
|
(with-temp-buffer
|
||||||
|
(insert-file-contents filename)
|
||||||
|
(split-string (buffer-string) "\n" t)))
|
||||||
|
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Now we just get three or so words from our list of lists:
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defun ha-passwords-words ()
|
||||||
|
(unless ha-passwords-data
|
||||||
|
(setq ha-passwords-data
|
||||||
|
(--map (ha-passwords--read-data-file it) ha-passwords-data-files)))
|
||||||
|
|
||||||
|
(--map (nth (random (length it)) it) ha-passwords-data))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Let's make a password:
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defun ha-passwords-generate (&optional separator)
|
||||||
|
(unless separator
|
||||||
|
(setq separator "-"))
|
||||||
|
|
||||||
|
(let* ((choices '("!" "@" "#" "$" "%" "^" "&" "*"))
|
||||||
|
(choice (random (length choices)))
|
||||||
|
(number (1+ choice)))
|
||||||
|
(->> (ha-passwords-words)
|
||||||
|
(s-join separator)
|
||||||
|
(s-capitalize)
|
||||||
|
(s-append (nth choice choices))
|
||||||
|
(s-append (number-to-string number)))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defun generate-password (&optional separator)
|
||||||
|
(interactive)
|
||||||
|
(let ((passphrase (ha-passwords-generate separator)))
|
||||||
|
(kill-new passphrase)
|
||||||
|
(message "Random password: %s" passphrase)))
|
||||||
|
#+END_SRC
|
||||||
|
* Keybindings
|
||||||
|
Got make it easy to call:
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(ha-leader "a g" '("generate passwd" . generate-password))
|
||||||
|
#+END_SRC
|
||||||
|
* Technical Artifacts :noexport:
|
||||||
|
This will =provide= a code name, so that we can =require= this.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp :exports none
|
||||||
|
(provide 'ha-passwords)
|
||||||
|
;;; ha-passwords.el ends here
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
#+DESCRIPTION: A literate programming version for Emacs code to generate and store passwords.
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:sh :tangle no
|
||||||
|
#+PROPERTY: header-args:emacs-lisp :tangle yes
|
||||||
|
#+PROPERTY: header-args :results none :eval no-export :comments no mkdirp yes
|
||||||
|
|
||||||
|
#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil date:nil
|
||||||
|
#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil
|
||||||
|
#+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js
|
Loading…
Reference in a new issue