From bcc1c2d9dd7fefa538647c0d4e9e621511f1fde6 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Tue, 7 Oct 2025 08:31:39 -0700 Subject: Bring back pbkdf2 --- go.mod | 4 + go.sum | 4 + internal/hole/hole.go | 25 + internal/hole/wordlist.txt | 8192 ++++++++++++++++++++++++++++++++++++++++ internal/pwhash/pwhash.go | 18 + internal/wordlist/wordlist.go | 11 - internal/wordlist/wordlist.txt | 8192 ---------------------------------------- roseh.moe.go | 26 +- tools/finditer/finditer.go | 43 + tools/hashpw/hashpw.go | 34 + tools/hole/hole.go | 94 +- 11 files changed, 8396 insertions(+), 8247 deletions(-) create mode 100644 internal/hole/hole.go create mode 100644 internal/hole/wordlist.txt create mode 100644 internal/pwhash/pwhash.go delete mode 100644 internal/wordlist/wordlist.go delete mode 100644 internal/wordlist/wordlist.txt create mode 100644 tools/finditer/finditer.go create mode 100644 tools/hashpw/hashpw.go diff --git a/go.mod b/go.mod index 4e975bb..5e702ba 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,7 @@ module gitlab.com/rhogenson/roseh.moe go 1.24.0 + +require golang.org/x/term v0.35.0 + +require golang.org/x/sys v0.36.0 // indirect diff --git a/go.sum b/go.sum index e69de29..a7fae6a 100644 --- a/go.sum +++ b/go.sum @@ -0,0 +1,4 @@ +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= +golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= diff --git a/internal/hole/hole.go b/internal/hole/hole.go new file mode 100644 index 0000000..4824459 --- /dev/null +++ b/internal/hole/hole.go @@ -0,0 +1,25 @@ +package hole + +import ( + "crypto/rand" + _ "embed" + "encoding/binary" + "strings" +) + +var ( + //go:embed wordlist.txt + wordListString string + wordList = strings.Split(strings.TrimSuffix(wordListString, "\n"), "\n") +) + +func New() string { + const nWords = 10 + buf := make([]byte, 2*nWords) + rand.Read(buf) + words := make([]string, nWords) + for i := range words { + words[i] = wordList[binary.NativeEndian.Uint16(buf[2*i:])&0x1fff] + } + return strings.Join(words, "-") +} diff --git a/internal/hole/wordlist.txt b/internal/hole/wordlist.txt new file mode 100644 index 0000000..5e304ce --- /dev/null +++ b/internal/hole/wordlist.txt @@ -0,0 +1,8192 @@ +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +aa +ab +ac +ad +ae +af +ag +ah +ai +aj +ak +al +am +an +ao +ap +aq +ar +as +at +au +av +aw +ax +ay +az +a2 +a3 +a4 +a5 +a6 +a7 +a8 +a9 +ba +bb +bc +bd +be +bf +bg +bh +bi +bj +bk +bl +bm +bn +bo +bp +bq +br +bs +bt +bu +bv +bw +bx +by +bz +b2 +b3 +b4 +b5 +b6 +b7 +b8 +b9 +ca +cb +cc +cd +ce +cf +cg +ch +ci +cj +ck +cl +cm +cn +co +cp +cq +cr +cs +ct +cu +cv +cw +cx +cy +cz +c2 +c3 +c4 +c5 +c6 +c7 +c8 +c9 +da +db +dc +dd +de +df +dg +dh +di +dj +dk +dl +dm +dn +do +dp +dq +dr +ds +dt +du +dv +dw +dx +dy +dz +d2 +d3 +d4 +d5 +d6 +d7 +d8 +d9 +ea +eb +ec +ed +ee +ef +eg +eh +ei +ej +ek +el +em +en +eo +ep +eq +er +es +et +eu +ev +ew +ex +ey +ez +e2 +e3 +e4 +e5 +e6 +e7 +e8 +e9 +fa +fb +fc +fd +fe +ff +fg +fh +fi +fj +fk +fl +fm +fn +fo +fp +fq +fr +fs +ft +fu +fv +fw +fx +fy +fz +f2 +f3 +f4 +f5 +f6 +f7 +f8 +f9 +ga +gb +gc +gd +ge +gf +gg +gh +gi +gj +gk +gl +gm +gn +go +gp +gq +gr +gs +gt +gu +gv +gw +gx +gy +gz +g2 +g3 +g4 +g5 +g6 +g7 +g8 +g9 +ha +hb +hc +hd +he +hf +hg +hh +hi +hj +hk +hl +hm +hn +ho +hp +hq +hr +hs +ht +hu +hv +hw +hx +hy +hz +h2 +h3 +h4 +h5 +h6 +h7 +h8 +h9 +ia +ib +ic +id +ie +if +ig +ih +ii +ij +ik +il +im +in +io +ip +iq +ir +is +it +iu +iv +iw +ix +iy +iz +i2 +i3 +i4 +i5 +i6 +i7 +i8 +i9 +ja +jb +jc +jd +je +jf +jg +jh +ji +jj +jk +jl +jm +jn +jo +jp +jq +jr +js +jt +ju +jv +jw +jx +jy +jz +j2 +j3 +j4 +j5 +j6 +j7 +j8 +j9 +ka +kb +kc +kd +ke +kf +kg +kh +ki +kj +kk +kl +km +kn +ko +kp +kq +kr +ks +kt +ku +kv +kw +kx +ky +kz +k2 +k3 +k4 +k5 +k6 +k7 +k8 +k9 +la +lb +lc +ld +le +lf +lg +lh +li +lj +lk +ll +lm +ln +lo +lp +lq +lr +ls +lt +lu +lv +lw +lx +ly +lz +l2 +l3 +l4 +l5 +l6 +l7 +l8 +l9 +ma +mb +mc +md +me +mf +mg +mh +mi +mj +mk +ml +mm +mn +mo +mp +mq +mr +ms +mt +mu +mv +mw +mx +my +mz +m2 +m3 +m4 +m5 +m6 +m7 +m8 +m9 +na +nb +nc +nd +ne +nf +ng +nh +ni +nj +nk +nl +nm +nn +no +np +nq +nr +ns +nt +nu +nv +nw +nx +ny +nz +n2 +n3 +n4 +n5 +n6 +n7 +n8 +n9 +oa +ob +oc +od +oe +of +og +oh +oi +oj +ok +ol +om +on +oo +op +oq +or +os +ot +ou +ov +ow +ox +oy +oz +o2 +o3 +o4 +o5 +o6 +o7 +o8 +o9 +pa +pb +pc +pd +pe +pf +pg +ph +pi +pj +pk +pl +pm +pn +po +pp +pq +pr +ps +pt +pu +pv +pw +px +py +pz +p2 +p3 +p4 +p5 +p6 +p7 +p8 +p9 +qa +qb +qc +qd +qe +qf +qg +qh +qi +qj +qk +ql +qm +qn +qo +qp +qq +qr +qs +qt +qu +qv +qw +qx +qy +qz +q2 +q3 +q4 +q5 +q6 +q7 +q8 +q9 +ra +rb +rc +rd +re +rf +rg +rh +ri +rj +rk +rl +rm +rn +ro +rp +rq +rr +rs +rt +ru +rv +rw +rx +ry +rz +r2 +r3 +r4 +r5 +r6 +r7 +r8 +r9 +sa +sb +sc +sd +se +sf +sg +sh +si +sj +sk +sl +sm +sn +so +sp +sq +sr +ss +st +su +sv +sw +sx +sy +sz +s2 +s3 +s4 +s5 +s6 +s7 +s8 +s9 +ta +tb +tc +td +te +tf +tg +th +ti +tj +tk +tl +tm +tn +to +tp +tq +tr +ts +tt +tu +tv +tw +tx +ty +tz +t2 +t3 +t4 +t5 +t6 +t7 +t8 +t9 +ua +ub +uc +ud +ue +uf +ug +uh +ui +uj +uk +ul +um +un +uo +up +uq +ur +us +ut +uu +uv +uw +ux +uy +uz +u2 +u3 +u4 +u5 +u6 +u7 +u8 +u9 +va +vb +vc +vd +ve +vf +vg +vh +vi +vj +vk +vl +vm +vn +vo +vp +vq +vr +vs +vt +vu +vv +vw +vx +vy +vz +v2 +v3 +v4 +v5 +v6 +v7 +v8 +v9 +wa +wb +wc +wd +we +wf +wg +wh +wi +wj +wk +wl +wm +wn +wo +wp +wq +wr +ws +wt +wu +wv +ww +wx +wy +wz +w2 +w3 +w4 +w5 +w6 +w7 +w8 +w9 +xa +xb +xc +xd +xe +xf +xg +xh +xi +xj +xk +xl +xm +xn +xo +xp +xq +xr +xs +xt +xu +xv +xw +xx +xy +xz +x2 +x3 +x4 +x5 +x6 +x7 +x8 +x9 +ya +yb +yc +yd +ye +yf +yg +yh +yi +yj +yk +yl +ym +yn +yo +yp +yq +yr +ys +yt +yu +yv +yw +yx +yy +yz +y2 +y3 +y4 +y5 +y6 +y7 +y8 +y9 +za +zb +zc +zd +ze +zf +zg +zh +zi +zj +zk +zl +zm +zn +zo +zp +zq +zr +zs +zt +zu +zv +zw +zx +zy +zz +z2 +z3 +z4 +z5 +z6 +z7 +z8 +z9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +2a +2b +2c +2d +2e +2f +2g +2h +2i +2j +2k +2l +2m +2n +2o +2p +2q +2r +2s +2t +2u +2v +2w +2x +2y +2z +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +3a +3b +3c +3d +3e +3f +3g +3h +3i +3j +3k +3l +3m +3n +3o +3p +3q +3r +3s +3t +3u +3v +3w +3x +3y +3z +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +4a +4b +4c +4d +4e +4f +4g +4h +4i +4j +4k +4l +4m +4n +4o +4p +4q +4r +4s +4t +4u +4v +4w +4x +4y +4z +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +5a +5b +5c +5d +5e +5f +5g +5h +5i +5j +5k +5l +5m +5n +5o +5p +5q +5r +5s +5t +5u +5v +5w +5x +5y +5z +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +6a +6b +6c +6d +6e +6f +6g +6h +6i +6j +6k +6l +6m +6n +6o +6p +6q +6r +6s +6t +6u +6v +6w +6x +6y +6z +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +7a +7b +7c +7d +7e +7f +7g +7h +7i +7j +7k +7l +7m +7n +7o +7p +7q +7r +7s +7t +7u +7v +7w +7x +7y +7z +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +8a +8b +8c +8d +8e +8f +8g +8h +8i +8j +8k +8l +8m +8n +8o +8p +8q +8r +8s +8t +8u +8v +8w +8x +8y +8z +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +9a +9b +9c +9d +9e +9f +9g +9h +9i +9j +9k +9l +9m +9n +9o +9p +9q +9r +9s +9t +9u +9v +9w +9x +9y +9z +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +aaa +aba +abc +abe +abo +ace +acm +act +ada +add +ado +aft +age +ago +aid +ail +aim +air +ala +alb +ale +ali +all +alp +ama +ami +amp +amy +ana +and +ani +ann +ant +any +aok +ape +apt +arc +are +ark +arm +art +ash +ask +ass +ate +aug +auk +ave +awe +awl +awn +axe +aye +bad +bag +bah +bam +ban +bar +bat +bay +bbb +bcd +bed +bee +beg +bel +ben +bet +bey +bib +bid +big +bin +bit +biz +bmw +boa +bob +bog +bon +boo +bop +bow +box +boy +btl +bub +bud +bug +bum +bun +bus +but +buy +bye +cab +cal +cam +can +cap +car +cat +caw +cbs +ccc +cdc +chi +cia +cis +cod +cog +col +con +coo +cop +cos +cot +cow +cox +coy +cpa +crt +cry +cub +cud +cue +cup +cur +cut +dab +dad +dam +dan +dar +day +ddd +dec +dee +def +del +den +des +dew +dey +did +die +dig +dim +din +dip +dis +dna +dod +doe +dog +don +dot +dow +dry +dub +dud +due +dug +duh +dun +duo +dye +ear +eat +ebb +edt +eee +eel +efg +eft +egg +ego +eke +elf +eli +elk +ell +elm +ely +emu +end +eng +epa +era +ere +erg +err +est +eta +etc +eva +eve +ewe +eye +faa +fad +fan +far +fat +fax +fay +fbi +fcc +fda +feb +fed +fee +few +fff +fgh +fib +fig +fin +fir +fit +fix +flo +flu +fly +fmc +fob +foe +fog +fop +for +fox +fpc +fro +fry +ftc +fum +fun +fur +gab +gad +gag +gal +gam +gao +gap +gar +gas +gay +gee +gel +gem +get +ggg +ghi +gig +gil +gin +gmt +gnp +gnu +goa +gob +god +gog +goo +gop +got +gpo +gsa +gum +gun +gus +gut +guy +gym +gyp +had +hal +ham +han +hap +has +hat +haw +hay +hem +hen +her +hew +hex +hey +hhh +hid +hij +him +hip +his +hit +hob +hoc +hoe +hog +hoi +hop +hot +how +hoy +hub +hue +hug +huh +hum +hun +hut +ian +ibm +ibn +icc +ice +icy +ida +iii +ijk +ike +ill +imp +inc +ink +inn +ion +ira +ire +irk +irs +ito +its +itt +ive +ivy +jab +jag +jam +jan +jar +jaw +jay +jed +jet +jew +jig +jim +jjj +jkl +job +joe +jog +jon +jot +joy +jug +jut +kay +keg +ken +key +kid +kim +kin +kit +klm +lab +lac +lad +lag +lam +lao +lap +law +lax +lay +lea +led +lee +leg +len +leo +let +lev +lew +lid +lie +lin +lip +lit +liu +liz +lll +lmn +lob +log +lol +lop +los +lot +lou +low +loy +lsi +ltv +lug +lux +lye +mac +mad +mae +man +mao +map +mar +mat +maw +max +may +mba +meg +mel +men +met +mew +mid +mig +min +mit +mix +mmm +mno +mob +moe +mom +moo +mop +mot +mow +mph +mrs +mud +mug +mum +nab +nag +nan +nap +nat +nay +nbc +nbs +ncr +ned +nee +neo +net +new +nib +nih +nil +nip +nit +nnn +nob +nod +non +nop +nor +not +nov +now +nrc +nsf +nun +nut +nyc +nyu +oaf +oak +oar +oat +oct +odd +ode +off +oft +ohm +oil +old +one +oof +ooo +opt +orb +ore +orr +ott +our +out +ova +owe +owl +own +pad +pal +pam +pan +pap +par +pat +paw +pax +pay +paz +pbs +pea +pee +peg +pen +pep +per +pet +pew +phd +phi +pie +pig +pin +pip +pit +ply +pod +poe +pog +poi +pol +pop +pot +pow +pox +ppm +ppp +pqr +pro +pry +psi +pta +pub +pug +pun +pup +pus +put +pvc +qed +qqq +qrs +qua +quo +rae +rag +raj +ram +ran +rap +rat +raw +ray +rca +reb +red +rep +ret +rev +rex +rho +rib +rid +rig +rim +rio +rip +rob +rod +roe +ron +rot +row +roy +rpm +rrr +rst +rub +rue +rug +rum +run +rut +rye +sac +sad +sag +sal +sam +san +sao +sap +sat +saw +sax +say +scm +sea +sec +see +sen +set +sew +sex +she +shu +shy +sib +sic +sin +sip +sir +sis +sit +six +ski +sky +sly +sob +sod +sol +son +sop +sos +sou +sow +soy +spa +spy +sri +sss +sst +stu +sub +sud +sue +sum +sun +sup +sus +tab +tad +tag +tam +tan +tao +tap +tar +tat +tau +tax +tea +ted +tee +ten +the +thy +tic +tid +tie +til +tim +tin +tip +tnt +toe +tog +tom +ton +too +top +tor +tot +tow +toy +trw +try +ttl +ttt +tty +tub +tug +tum +tun +tuv +tux +tva +twa +two +twx +ugh +uri +urn +usa +usc +use +usn +uuu +uvw +uwu +van +vat +vee +vet +vex +via +vie +vii +vis +viz +von +vow +vvv +wac +wad +wag +wah +wan +war +was +wax +way +web +wed +wee +wei +wet +who +why +wig +wii +win +wit +woe +wok +won +woo +wow +wry +www +wxy +xxx +xyz +yah +yak +yam +yap +yaw +yea +yen +yes +yet +yin +yip +yon +you +yow +yuh +yyy +zag +zan +zap +zen +zig +zip +zit +zoe +zoo +zzz +1st +100 +101 +111 +123 +2nd +200 +222 +234 +3rd +300 +333 +345 +4th +400 +444 +456 +5th +500 +555 +567 +6th +600 +666 +678 +7th +700 +777 +789 +8th +800 +888 +9th +900 +999 +aaaa +abbe +abed +abel +abet +able +abut +ache +acid +acme +acre +acts +adam +adds +aden +afar +afro +aged +agee +ages +ague +ahem +ahoy +aida +aide +aile +aims +ainu +airy +ajar +ajax +akin +alai +alan +alba +alec +alex +alga +alia +ally +alma +aloe +alps +also +alto +alum +alva +amen +ames +amid +ammo +amok +amos +amra +andy +anew +anna +anne +ansi +ante +anti +apex +apse +aqua +arab +arch +area +ares +argo +aria +arid +arms +army +arpa +arts +arty +arum +aryl +ashy +asia +asks +astm +atom +atop +aunt +aura +auto +aver +avid +avis +aviv +avon +avow +away +awry +axes +axis +axle +axon +babe +baby +bach +back +bade +bail +bait +baka +bake +baku +bald +bale +bali +balk +ball +balm +band +bane +bang +bank +barb +bard +bare +bark +barn +barr +bars +base +bash +bask +bass +bate +bath +bats +batt +baud +bawd +bawl +bays +bbbb +bead +beak +beam +bean +bear +beat +beau +beck +beds +beef +been +beep +beer +beet +bela +bell +belt +bema +bend +bent +benz +berg +bern +bert +bess +best +beta +beth +bevy +bhoy +bias +bibb +bide +bien +bike +bile +bilk +bill +bind +bing +bini +bird +bite +bitt +blab +blah +blat +bled +blew +blip +blob +bloc +blog +blot +blow +blue +blum +blur +blvd +boar +boat +boca +bock +bode +body +bogy +bohr +boil +bois +bold +bole +bolo +bolt +bomb +bona +bond +bone +bong +bonn +bony +book +boom +boon +boor +boot +bore +borg +born +bose +boss +both +bout +bowl +boxy +boyd +boys +brad +brae +brag +bran +bray +bred +brew +brig +brim +bros +brow +bruh +bryn +bstj +buck +budd +buff +bulb +bulk +bull +bump +bunk +bunt +buoy +burg +burl +burn +burp +burr +burt +bury +bush +buss +bust +busy +butt +buzz +byrd +byte +cacm +cady +cafe +cage +cain +cake +calf +call +calm +came +camp +cane +cant +cape +capo +caps +card +care +carl +carp +carr +cars +cart +case +cash +cask +cast +cats +cave +cccc +cede +ceil +cell +cent +cern +chad +chai +chan +chao +chap +char +chat +chaw +chef +chen +chew +chic +chin +chip +chit +chop +chou +chow +chub +chug +chum +cite +city +clad +clam +clan +clap +claw +clay +clio +clip +clod +clog +clot +cloy +club +clue +cluj +coal +coat +coax +cobb +coca +coco +coda +code +cody +coed +cohn +coil +coin +coke +cola +cold +cole +colt +coma +comb +come +cone +conn +cony +cook +cool +coop +coot +cope +copy +cord +core +cork +corn +corp +cosh +cost +cosy +coup +cove +cowl +cozy +crab +crag +cram +crap +craw +crew +crib +crop +crow +crud +crux +cruz +cuba +cube +cubs +cuff +cull +cult +cuny +cups +curb +curd +cure +curl +curt +cusp +cute +cuts +cyst +czar +dada +dade +dahl +dais +dale +daly +dame +damn +damp +dana +dane +dang +dank +dare +dark +darn +dart +dash +data +date +daub +dave +davy +dawn +days +daze +dddd +dead +deaf +deal +dean +dear +debt +deck +deed +deem +deep +deer +deft +defy +deja +dell +demo +dent +deny +desk +desu +deus +dewy +dial +dice +dido +died +diem +dies +diet +dill +dime +dine +ding +dint +dire +dirt +disc +dish +disk +diva +dive +dock +dodd +dodo +does +doff +doge +dogs +doki +dole +doll +dolt +dome +done +doom +door +dope +dora +dork +dose +dote +doug +dour +dove +down +doze +drab +drag +dram +draw +dreg +drew +drib +drip +drop +drub +drug +drum +dual +duck +duct +dude +duel +duet +duff +duke +dull +duly +duma +dump +dune +dung +dunk +dunn +dupe +dusk +dust +duty +dyad +dyer +dyke +dyne +each +earl +earn +ease +east +easy +eats +eave +ebay +eben +echo +eddy +eden +edge +edgy +edit +edna +eeee +eeoc +egan +eggs +eire +elan +elba +ella +else +emil +emit +emma +enby +ends +enid +enol +enos +envy +epic +erda +eric +erie +erik +eros +etch +euro +even +ever +evil +exam +exes +exit +eyed +eyes +ezra +face +fact +fade +fail +fain +fair +fake +fall +fame +fang +fans +fare +farm +faro +fast +fate +faun +fawn +faze +fear +feat +feed +feel +fees +feet +fell +felt +fend +fern +fest +fete +feud +ffff +fiat +fide +fief +fife +fifo +fiji +file +fill +film +find +fine +fink +finn +fire +firm +fish +fisk +fist +five +flag +flak +flam +flap +flat +flaw +flax +flea +fled +flee +flew +flex +flip +flit +floc +floe +flog +flop +flow +flub +flue +flux +foal +foam +foci +fogy +foil +fold +folk +fond +font +food +fool +foot +ford +fore +fork +form +fort +foss +foul +four +fowl +foxy +fran +frau +fray +fred +free +fret +frey +frog +from +frye +fuel +fuji +full +fume +fund +funk +furl +fury +fuse +fuss +fuzz +gaff +gage +gail +gain +gait +gala +gale +gall +galt +game +gang +gape +garb +gary +gash +gasp +gate +gaul +gaur +gave +gawk +gaza +gaze +gear +geek +geld +gene +gent +germ +gets +gggg +gibe +gift +gila +gild +gill +gilt +gina +ginn +gino +gird +girl +gist +give +glad +glee +glen +glib +glob +glom +glow +glue +glum +glut +gnat +gnaw +goad +goal +goat +gods +goer +goes +goff +gogh +gogo +gold +golf +gone +gong +good +goof +goon +gore +gory +gosh +gout +gown +grab +grad +gram +gray +greg +grew +grey +grid +grim +grin +grip +grit +grow +grub +guam +gulf +gull +gulp +gunk +guns +guru +gush +gust +guts +guys +gwen +gwyn +gyro +haag +haas +hack +hahn +hail +hair +hale +half +hall +halo +halt +hand +hang +hank +hans +hard +hare +hark +harm +harp +hart +hash +hasp +hast +hate +hath +haul +have +hawk +hays +haze +hazy +head +heal +heap +hear +heat +hebe +heck +heed +heel +heft +heir +held +hell +helm +help +hemp +hera +herb +herd +here +hero +herr +hess +hewn +hhhh +hick +hide +high +hike +hill +hilt +hind +hint +hire +hiss +hits +hive +hoar +hock +hoff +hold +hole +holm +holt +holy +home +hone +hong +honk +hood +hoof +hook +hoop +hoot +hope +horn +hose +host +hour +hove +howe +howl +hoyt +huck +hued +huff +huge +hugh +hugo +hula +hulk +hull +hump +hung +hunk +hunt +hurd +hurl +hurt +hush +hyde +hymn +hype +ibex +ibid +ibis +icky +icon +idea +idle +idly +idol +ieee +iffy +ifni +igor +iiii +inca +inch +indy +into +iota +iowa +ipad +ipod +ipso +iran +iraq +iris +irma +iron +isle +itch +item +ivan +jack +jacm +jade +jail +jake +jane +java +jaws +jazz +jean +jeep +jeff +jerk +jess +jest +jets +jibe +jill +jilt +jinx +jive +jjjj +joan +jobs +jock +joel +joey +john +join +joke +jolt +jose +joss +jove +jowl +juan +judd +jude +judo +judy +juju +juke +july +jump +june +junk +juno +jura +jure +jury +just +jute +kahn +kale +kane +kant +karl +karp +kate +katz +kava +kayo +keel +keen +keep +kelp +kemp +keno +kent +kept +kern +kerr +keys +khan +kick +kids +kiev +kill +kiln +kilt +kind +king +kink +kirk +kiss +kite +kiva +kivu +kiwi +kkkk +knee +knew +knit +knob +knot +know +knox +koch +kola +kong +kudo +kuhn +kurd +kurt +kyle +lace +lack +lacy +lady +laid +lain +lair +lake +lamb +lame +lamp +lana +land +lane +lang +laos +laps +lard +lark +lars +lase +lash +lass +last +late +lath +laud +laue +lava +lawn +laws +laze +lazy +lead +leaf +leak +lean +leap +lear +leek +leer +left +lego +legs +lena +lend +lens +lent +leon +less +lest +lets +levi +levy +lewd +liar +lice +lick +lied +lien +lies +lieu +life +lifo +lift +like +lila +lilt +lily +lima +limb +lime +limp +lind +line +link +lint +lion +lisa +lise +lisp +list +live +llll +lmao +load +loaf +loam +loan +lobe +lobo +loch +loci +lock +loeb +loft +loge +logo +loin +lois +loki +lola +loll +lomb +lome +lone +long +look +loom +loon +loop +loot +lope +lord +lore +lose +loss +lost +lots +loud +love +lowe +luck +lucy +luge +luis +luke +lull +lulu +lump +luna +lund +lung +lura +lure +lurk +lush +lust +lute +lutz +luxe +lyle +lynn +lynx +lyon +lyra +mace +mach +mack +made +magi +maid +mail +maim +main +make +male +mali +mall +malt +mama +mana +mane +mann +mans +many +maps +marc +mare +mark +mars +mart +marx +mary +mash +mask +mass +mast +mate +math +maul +mawr +maya +mayo +maze +mead +meal +mean +meat +meek +meet +mega +meir +meld +melt +meme +memo +mend +menu +meow +mere +mesa +mesh +mess +mete +mica +mice +mien +miff +mike +mila +mild +mile +milk +mill +milt +mimi +mind +mine +mini +mink +mint +mira +mire +miss +mist +mite +mitt +mmmm +moan +moat +mock +mode +moen +mohr +mold +mole +moll +molt +mona +monk +mont +mood +moon +moor +moot +more +morn +mort +moss +most +moth +move +much +muck +mudd +muff +muir +mule +mull +mung +muon +murk +muse +mush +musk +must +mute +mutt +muzo +myel +myra +myth +nagy +nail +nair +name +nape +nary +nasa +nash +nate +nato +nave +navy +ncaa +neal +near +neat +neck +need +neff +neil +neko +nell +neon +nerd +nero +ness +nest +neva +neve +news +newt +next +nibs +nice +nick +nigh +nile +nimh +nina +nine +nnnn +noaa +noah +node +noel +noll +nolo +none +nook +noon +nora +nord +norm +nose +note +noun +nova +novo +ntis +nude +null +numb +oaks +oath +obey +oboe +odin +odor +ogle +ogre +ohio +oily +oink +oint +okay +olaf +olav +oldy +olga +olin +oman +omen +omit +once +ones +only +onto +onus +onyx +oooo +oops +ooze +oozy +opal +opec +opel +open +opus +oral +orin +oslo +otis +otto +ouch +oust +ouzo +oval +oven +over +ovid +owls +owly +owns +oxen +pace +pack +pact +page +paid +pail +pain +pair +pale +pall +palm +palo +pane +pang +pant +papa +pare +park +parr +part +paso +pass +past +pate +path +paul +pave +pawn +peak +peal +pear +peat +peck +peed +peek +peel +peep +peer +pelt +pend +penh +penn +pent +perk +perm +pert +peru +peso +pest +pete +phil +phon +pica +pick +pier +pike +pile +pill +pimp +pine +ping +pink +pint +pion +pipe +pith +pitt +pity +pius +pixy +plan +plat +play +plea +plod +plop +plot +plow +ploy +plug +plum +plus +poem +poet +pogo +poke +pole +polk +poll +polo +pomp +pond +pong +pont +pony +pooh +pool +poop +poor +pope +pore +pork +port +pose +posh +post +posy +pour +pout +pppp +pram +pray +prep +prey +prig +prim +prix +prod +prof +prom +prop +prow +puck +puff +pugh +puke +pull +pulp +puma +pump +punk +punt +puny +pure +purl +purr +push +puts +putt +pyle +pyre +qqqq +quad +quay +quid +quip +quit +quiz +quod +race +rack +racy +raft +rage +raid +rail +rain +rake +ramo +ramp +rams +rand +rang +rank +rant +rapt +rare +rasa +rash +rasp +rata +rate +raul +rave +rays +raze +read +real +ream +reap +rear +reck +reed +reef +reek +reel +reid +rein +rely +rena +rend +rene +rent +reps +rest +reub +rhea +rica +rice +rich +rick +rico +ride +rift +riga +rill +rime +rimy +rind +ring +rink +riot +ripe +rise +risk +rite +ritz +rizz +road +roam +roar +robe +rock +rode +roil +role +roll +rome +romp +rood +roof +rook +room +root +rope +rosa +rose +ross +rosy +rotc +roth +rout +rove +rowe +rrrr +rsvp +rube +ruby +rude +rudy +ruin +rule +rump +rune +rung +runs +runt +ruse +rush +rusk +russ +rust +ruth +ryan +sack +safe +saga +sage +sago +said +sail +sake +sale +salk +salt +same +sana +sand +sane +sang +sank +sans +sara +sari +sash +saud +saul +save +says +scab +scam +scan +scar +scat +scot +scud +scum +seal +seam +sean +sear +seas +seat +sect +seed +seek +seem +seen +seep +sees +self +sell +semi +send +sent +sept +sera +serf +seth +sets +sewn +sexy +shad +shag +shah +sham +shaw +shay +shea +shed +shim +shin +ship +shiv +shod +shoe +shoo +shop +shot +show +shun +shut +sial +siam +sian +sick +side +sift +sigh +sign +silk +sill +silo +silt +sima +sims +sine +sing +sinh +sink +sire +site +sits +situ +siva +size +skat +skew +skid +skim +skin +skip +skit +skye +slab +slag +slam +slap +slat +slav +slaw +slay +sled +slew +slid +slim +slip +slit +slob +sloe +slog +slop +slot +slow +slug +slum +slur +smog +smug +snag +snap +snip +snob +snow +snub +snug +soak +soap +soar +sock +soda +sofa +soft +soil +sold +sole +solo +soma +some +song +sons +sony +soon +soot +sora +sorb +sore +sort +soul +soup +sour +sown +soya +span +spar +spat +spay +spec +sped +spew +spin +spit +spot +spry +spud +spun +spur +ssss +stab +stag +stan +star +stay +stem +step +stew +stir +stop +stow +stub +stud +stun +styx +such +suck +suds +sued +suey +suez +suit +sulk +sung +sunk +suny +sure +surf +swab +swag +swam +swan +swap +swat +sway +swig +swim +swum +tabu +tack +taco +tact +taft +tail +take +talc +tale +talk +tall +tame +tamp +tang +tanh +tank +taos +tapa +tape +taps +tara +tart +task +tass +tate +taut +taxi +teal +team +tear +teat +tech +teem +teen +teet +tell +tend +tent +term +tern +tess +test +tete +text +thai +than +that +thaw +thea +thee +them +then +they +thin +this +thor +thou +thud +thug +thus +tick +tide +tidy +tied +tier +ties +tift +tile +till +tilt +time +tina +tine +tint +tiny +tire +toad +toby +todd +tofu +togo +togs +toil +told +toll +tomb +tome +tone +tong +toni +tonk +tons +tony +took +tool +toot +tore +tori +torn +torr +tort +tory +toss +tote +tour +tout +town +toys +trag +tram +trap +tray +tree +trek +trig +trim +trio +trip +trod +trot +troy +true +tsar +tttt +tuba +tube +tuck +tuff +tuft +tuna +tune +tung +turf +turk +turn +tusk +tutu +twig +twin +twit +tyke +type +typo +ucla +ugly +ulan +undo +unit +unix +upon +urea +urge +uris +ursa +usaf +usda +used +user +uses +usgs +usia +usps +ussr +utah +uuuu +vade +vail +vain +vale +vamp +vane +vary +vase +vast +veal +veda +veer +vega +veil +vein +vend +vent +vera +verb +very +vest +veto +vial +vibe +vice +vida +viet +view +viii +vila +vile +vine +visa +vise +vita +vito +viva +vivo +void +volt +voss +vote +vvvv +wack +waco +wade +wadi +wage +wahl +wail +wait +wake +wale +walk +wall +walt +wand +wane +wang +want +ward +ware +warm +warn +warp +wars +wart +wary +wash +wasp +wast +watt +wave +wavy +waxy +ways +weak +weal +wean +wear +webb +weco +weeb +weed +week +weep +wehr +weir +weld +well +welt +went +wept +were +wert +west +wham +what +whee +when +whet +whig +whim +whip +whir +whit +whiz +whoa +whom +whop +whup +wick +wide +wier +wife +wifi +wild +wile +will +wilt +wily +wimp +wind +wine +wing +wink +wino +wins +winy +wipe +wire +wiry +wise +wish +wisp +with +witt +wive +woke +wold +wolf +womb +wong +wont +wood +woof +wool +word +wore +work +worm +worn +wove +wrap +writ +wwww +wynn +xbox +xxxx +yale +yang +yank +yard +yarn +yawl +yawn +yeah +year +yeet +yell +yelp +ymca +yoga +yogi +yoke +yolk +yond +yore +york +yost +your +yoyo +yuck +yuki +yule +yuri +yves +ywca +yyyy +zeal +zero +zest +zeta +zeus +zinc +zing +zion +zips +zone +zoom +zorn +zzzz +10th +1000 +11th +1111 +12th +1234 +13th +14th +1492 +15th +1500 +16th +1600 +17th +1700 +1776 +18th +1800 +1812 +19th +1900 +1910 +1920 +1925 +1930 +1935 +1940 +1945 +1950 +1955 +1960 +1965 +1970 +1975 +1980 +1985 +1990 +1991 +1992 +1993 +1994 +1995 +1996 +1997 +20th +2000 +2001 +2020 +21st +22nd +2222 +23rd +2345 +24th +2468 +25th +26th +27th +28th +29th +30th +3000 +31st +32nd +33rd +3333 +34th +3456 +35th +36th +37th +38th +39th +40th +4000 +41st +42nd +43rd +4321 +44th +4444 +45th +4567 +46th +47th +48th +49th +50th +5000 +51st +52nd +53rd +54th +55th +5555 +56th +5678 +57th +58th +59th +60th +6000 +61st +62nd +63rd +65th +66th +6666 +67th +6789 +68th +69th +70th +7000 +71st +72nd +73rd +74th +75th +76th +77th +7777 +78th +79th +80th +8000 +81st +82nd +83rd +84th +85th +86th +87th +88th +8888 +89th +90th +9000 +91st +92nd +93rd +94th +95th +96th +97th +98th +9876 +99th +9999 +aaron +ababa +aback +abase +abash +abate +abbas +abbey +abbot +abide +abner +abode +abort +about +above +abram +abyss +accra +acorn +acrid +acton +actor +acute +adage +adair +adams +adapt +added +addis +addle +adele +adept +adieu +adler +admit +admix +adobe +adopt +adore +adorn +adult +aegis +affix +afire +afoot +again +agate +agave +agent +agile +aging +agnes +agnew +agone +agony +agree +agway +ahead +aides +aiken +aires +aisle +akers +akron +alamo +alarm +album +alcoa +alden +alder +aleck +aleph +alert +algae +algal +alger +algol +alias +alibi +alice +alien +align +alike +alive +allah +allan +allay +allen +alley +allis +allot +allow +alloy +allyl +allyn +aloft +aloha +alone +along +aloof +aloud +alpha +alsop +altar +alter +alton +alvin +alway +amass +amaze +amber +amble +amend +amide +amigo +amino +amiss +amity +amman +amoco +among +amort +ampex +ample +amply +amuck +amuse +andes +andre +anent +angel +anger +angie +angle +anglo +angry +angst +angus +anime +anion +anise +anita +ankle +annal +annex +annie +annoy +annul +annum +anode +antic +anton +antsy +anvil +aorta +apart +aphid +apple +apply +april +apron +aptly +araby +arden +arena +argon +argot +argue +argus +arhat +aries +arise +arlen +armco +armed +armor +aroma +arose +array +arrow +arson +artie +aruba +ashen +asher +ashes +aside +askew +aspen +assai +assam +assay +asset +aster +astor +atlas +atone +attic +audio +audit +auger +augur +aural +auric +avail +avert +avery +avoid +await +awake +award +aware +awash +awful +awoke +axial +axiom +ayers +aztec +azure +babel +bacon +baden +badge +badly +bagel +baggy +baird +baked +baldy +balky +balmy +balsa +bambi +banal +bandy +banjo +banks +bantu +barge +baron +barre +barry +barth +basal +basel +basic +basil +basin +basis +bassi +basso +baste +batch +bater +bates +bathe +batik +baton +bator +bauer +bawdy +bayda +bayed +bayou +beach +beady +beard +beast +beaux +bebop +becky +bedim +beebe +beech +beefy +befit +befog +began +beget +begin +begun +beige +being +belch +belie +bella +belle +belly +below +beman +bench +benny +bento +berea +beret +berne +berra +berry +berth +beryl +beset +betel +betsy +bette +betty +bevel +bezel +bible +bicep +biddy +biggs +bigot +bilge +billy +binge +biota +birch +birth +bison +bizet +black +blade +blair +blake +blame +blanc +bland +blank +blare +blast +blatz +blaze +bleak +bleat +bleed +bleep +blend +bless +blest +blimp +blind +bling +blink +blinn +bliss +blitz +bloat +bloch +block +bloke +blond +blood +bloom +bloop +blown +bluet +bluff +blunt +blurb +blurt +blush +board +boast +bobby +bogey +boggy +bogus +boise +boney +bongo +bonus +bonze +booky +boone +boost +booth +boots +booty +booze +boozy +borax +boric +boris +borne +boron +bosch +bosom +boson +botch +bough +bound +bourn +bowel +bowen +bowie +boxer +boyar +boyce +boyle +brace +bract +brady +bragg +braid +brain +brake +brand +brant +brash +brass +braun +brave +bravo +brawl +bread +break +bream +breed +brent +brest +brett +breve +brian +briar +bribe +brice +brick +bride +brief +brine +bring +brink +briny +brisk +broad +brock +broil +broke +bronx +brood +brook +broom +broth +brown +bruce +bruit +bruno +brunt +brush +brute +bryan +bryce +buddy +budge +buena +buggy +bugle +buick +build +built +bulge +bulky +bully +bunch +bundy +bunny +burch +buret +burke +burly +burma +burnt +burro +burst +burtt +busch +bushy +butch +buteo +butte +butyl +buxom +buyer +buzzy +byers +bylaw +byrne +byron +byway +cabal +cabin +cable +cabot +cacao +cache +cacti +caddy +cadet +cadre +cagey +caine +cairn +cairo +caleb +calla +calve +camel +cameo +canal +candy +canis +canna +canny +canoe +canon +canto +caper +carat +caret +carey +cargo +carib +carla +carlo +carne +carob +carol +carry +carte +carve +casey +caste +catch +cater +cathy +catty +caulk +cause +cavil +cease +cecil +cedar +celia +ceres +cetus +chafe +chaff +chain +chair +chalk +champ +chang +chant +chaos +chaps +chard +charm +chart +chase +chasm +cheap +cheat +check +cheek +cheer +chemo +chert +chess +chest +chevy +chewy +chibi +chick +chide +chief +child +chile +chili +chill +chime +chimp +china +chine +chirp +chive +chock +choir +choke +chomp +chord +chore +chose +chris +chuck +chuff +chump +chunk +churn +chute +cider +cigar +cilia +cinch +cindy +circa +circe +civet +civic +civil +claim +clamp +clang +clank +clara +clare +clark +clash +clasp +class +claus +clean +clear +cleat +cleft +clerk +click +cliff +climb +clime +cling +clink +clint +clive +cloak +clock +clomp +clone +close +cloth +cloud +clout +clove +clown +cluck +clump +clung +clyde +coach +coast +cobol +cobra +cocky +cocoa +codon +cohen +colby +colon +color +colza +comet +comfy +comic +comma +conch +coney +congo +conic +cooke +cooky +coors +copra +coral +corey +corny +corps +cosec +coset +costa +cotta +cotty +couch +cough +could +count +coupe +court +coven +cover +covet +cowan +cowry +coypu +cozen +crack +craft +craig +cramp +crane +crank +crash +crass +crate +crave +crawl +craze +crazy +creak +cream +credo +creed +creek +creep +creme +creon +crepe +crept +cress +crest +crete +cried +crier +crime +crimp +crisp +criss +croak +crock +croft +croix +crone +crony +crook +croon +cross +crowd +crown +crude +cruel +crumb +crump +crush +crust +crypt +cubic +culpa +cumin +cupid +curia +curie +curio +curly +curry +curse +curve +curvy +cushy +cycad +cycle +cynic +cyril +cyrus +czech +dacca +daddy +daffy +daily +dairy +daisy +dakar +daley +dally +damon +dance +dandy +danny +dante +dares +darry +dater +datum +daunt +david +davis +davit +dealt +deane +death +debar +debby +debit +debra +debug +debut +decaf +decal +decay +decca +decor +decoy +decry +deere +defer +defog +degas +degum +deify +deign +deity +delay +delft +delhi +delia +della +delta +delve +demit +demon +demur +deneb +denim +denny +dense +depot +depth +derby +derek +deter +deuce +devil +devon +dewar +dewey +dhabi +diana +diane +diary +dicta +diego +diety +dietz +digit +dimly +dinah +diner +dingo +dingy +diode +dirac +dirge +dirty +disco +ditch +ditto +ditty +ditzy +divan +dixie +dixon +dizzy +dobbs +dodge +dodgy +dogma +doily +doing +dolan +dolce +dolly +donna +donor +donut +doozy +doria +doric +doris +doubt +douce +dough +douse +dowel +downs +dowry +doyle +dozen +draco +draft +drain +drake +drama +drank +drape +drawl +drawn +dread +dream +dress +dried +drier +drift +drill +drink +drive +droll +drone +drool +droop +dross +drove +drown +druid +drunk +drury +dryad +duane +dubhe +ducat +ducky +duffy +dugan +dully +dulse +dumpy +dunce +durer +dusky +dusty +dutch +duvet +dwarf +dweeb +dwell +dwelt +dwyer +dying +dylan +eagan +eager +eagle +early +earth +easel +eaten +eater +eaton +ebony +ebook +ecard +eclat +ecole +eddie +edgar +edict +edify +edith +edwin +eerie +effie +egret +egypt +eider +eight +eject +elate +elbow +elder +eldon +elect +elegy +elena +elfin +elgin +elide +eliot +elite +ellen +ellis +elmer +elope +elsie +elton +elude +elute +elves +email +embed +ember +emcee +emery +emile +emily +emory +emote +empty +enact +ended +endow +enemy +engel +engle +enjoy +enoch +ensue +enter +entry +envoy +epoch +epoxy +epsom +equal +equip +erase +erato +erich +ernie +ernst +erode +errol +error +erupt +ervin +erwin +essay +essen +essex +ester +estes +estop +ethan +ethel +ether +ethic +ethos +ethyl +etude +eucre +euler +evade +evans +event +every +evict +evoke +ewing +exact +exalt +excel +exert +exile +exist +expel +extol +extra +exude +exult +exxon +faber +fable +facet +facto +faery +fahey +faint +fairy +faith +false +fancy +farad +farce +fargo +fatal +fatty +fault +fauna +faust +feast +feign +feint +felix +felon +femur +fence +fermi +ferry +fetal +fetch +fetid +fetus +fever +fiber +fiche +field +fiend +fiery +fifth +fifty +fight +filch +filet +filly +filmy +filth +final +finch +finer +finny +first +fishy +fiske +fitch +fjord +flack +flail +flair +flake +flaky +flame +flank +flare +flash +flask +fleck +fleet +flesh +flick +flier +fling +flint +flirt +float +flock +flood +floor +flora +floss +flour +flout +flown +floyd +fluff +fluid +fluke +flung +flush +flute +flyer +flynn +foamy +focal +focus +foggy +foist +foley +folic +folio +folly +foote +foray +force +forge +forte +forth +forty +forum +found +fount +fovea +foyer +frail +frame +franc +frank +franz +fraud +frays +freak +freed +freer +freon +fresh +freud +freya +friar +frick +fried +frill +frisk +fritz +frock +front +frost +froth +frown +froze +fruit +fuchs +fudge +fugal +fugue +fully +fungi +funny +furry +furze +fussy +fusty +fuzzy +gable +gabon +gaffe +gains +galen +gamin +gamma +gamut +garry +garth +gassy +gates +gator +gaudy +gauge +gaunt +gauss +gauze +gavel +gavin +gawky +gecko +geese +geigy +gemma +genie +genii +genoa +genre +gents +genus +gerry +getty +getup +ghana +ghent +ghost +ghoul +giant +gibbs +gibby +giddy +giles +gills +gimpy +girth +given +giver +gizmo +glade +gland +glans +glare +glass +glaze +gleam +glean +glenn +glide +glint +gloat +globe +gloom +glory +gloss +glove +glued +gluey +glyph +gnarl +gnash +gnome +going +golly +goode +goody +gooey +goofy +goose +goren +gorge +gorky +gorse +gouda +gouge +gould +gourd +grace +grade +grady +graff +graft +grail +grain +grand +grant +grape +graph +grasp +grass +grata +grate +grave +gravy +graze +great +grebe +greed +greek +green +greer +greet +gregg +greta +grief +grill +grime +grimm +grimy +grind +gripe +grist +groan +groat +groin +groom +grope +gross +group +grout +grove +growl +grown +gruff +grunt +guano +guard +guess +guest +guide +guild +guile +guilt +guise +gules +gully +gumbo +gummy +gunky +gunny +gusto +gusty +gutsy +gyaru +habib +habit +hades +hagen +hager +hague +haifa +haiku +hairy +haiti +haley +halma +halve +hamal +handy +haney +hanky +hanna +hanoi +happy +hardy +harem +harpy +harry +harsh +haste +hasty +hatch +hater +haunt +haven +havoc +haydn +hayes +hazel +heady +healy +heard +heart +heath +heave +heavy +hedge +hefty +heigh +heine +heinz +helen +helga +helix +hello +hence +henna +henri +henry +herbs +heron +hertz +hesse +hetty +hiatt +hicks +hilly +hilum +hindu +hines +hinge +hippo +hippy +hiram +hitch +hoagy +hoard +hobbs +hobby +hodge +hogan +hokan +holly +holst +honda +hondo +honey +hooch +horde +horny +horse +horus +hotel +hough +hound +house +hovel +hover +howdy +hubby +huber +human +humid +humor +humus +hunch +huron +hurry +hurst +hurty +husky +hutch +hydra +hydro +hyena +hying +hyman +icing +idaho +ideal +idiom +idyll +igloo +ileum +iliac +iliad +ilona +image +imbue +impel +imply +inane +inapt +incel +incur +index +india +inept +inert +infer +infix +infra +ingot +inlay +inlet +inman +inner +input +inset +inter +inure +ionic +irate +irene +irish +irony +irvin +irwin +isaac +ising +islam +issue +italy +ivory +jacky +jacob +jaime +james +janet +janos +janus +japan +jason +jaunt +jawed +jazzy +jeans +jelly +jenny +jeres +jerky +jerry +jesse +jesus +jewel +jiffy +jimmy +johns +joint +jolla +jolly +jonas +jones +jorge +josef +joule +joust +jowly +joyce +judas +judge +juice +juicy +jukes +julep +jules +julia +julie +julio +jumbo +jumpy +junco +junky +junta +juror +kabob +kabul +kafka +kajar +kapok +kappa +karen +karma +karol +kathy +katie +kazoo +keats +kebab +keith +kelly +kenya +kerry +ketch +kevin +keyed +keyes +khaki +khmer +kidde +kinky +kiosk +kiowa +kirby +kirov +kitty +klaus +klein +kline +knack +knapp +knead +kneel +knelt +knick +knife +knock +knoll +knott +known +knurl +koala +kodak +kombu +kooky +koran +korea +kraft +kraut +krebs +kruse +kudos +kudzu +kulak +kyoto +laban +label +labor +laden +ladle +lager +lagos +laity +lamar +lance +lange +lanka +lanky +lapel +lapse +larch +lares +large +larry +larva +lasso +latch +later +latex +lathe +latin +latus +laugh +laura +layer +layup +leach +leafy +leaky +leapt +learn +lease +leash +least +leave +ledge +leech +leeds +leery +lefty +legal +leggy +leigh +leila +lemma +lemon +lenin +lenny +leona +leone +leper +leroy +lethe +levee +level +lever +levin +levis +lewis +libel +libya +light +liken +lilac +lilly +limbo +limes +limit +linda +linen +lingo +linus +lipid +lisle +lithe +lived +liven +liver +livid +livre +lloyd +loamy +loath +lobar +lobby +local +locke +locus +lodge +loess +lofty +logan +logic +loire +lolly +loose +lopez +loren +lossy +lotte +lotus +louis +louse +lousy +lower +lowry +loyal +lucas +lucia +lucid +lucky +lucre +luger +lumen +lumpy +lunar +lunch +lunge +lurch +lurid +lusty +luzon +lydia +lying +lykes +lyman +lymph +lynch +lyons +lyric +mabel +macaw +macho +macon +macro +madam +magic +magma +magna +magog +maier +maine +major +maker +malay +malta +mambo +mamma +manga +mange +mango +mangy +mania +manic +manly +manna +manor +manse +maori +maple +march +marco +marcy +mardi +margo +maria +marie +marin +mario +marks +marry +marsh +marty +maser +mason +match +mateo +mater +matte +mauve +mavis +maxim +maybe +mayer +mayor +mayst +mazda +mccoy +mcgee +mckay +mckee +mealy +meant +meaty +mecca +mecum +medal +medea +media +medic +meier +melee +melon +menlo +merck +mercy +merge +merit +merle +merry +meson +messy +metal +meter +metro +meyer +mezzo +miami +micky +micro +midas +midge +midst +might +milan +milch +miles +milky +mills +mimic +mince +minim +minor +minos +minot +minsk +minus +mirth +miser +missy +misty +mitre +mixed +mixup +mizar +mobil +mocha +modal +model +modem +moire +moist +molal +molar +molly +mommy +monad +mondo +monel +money +monic +monte +month +monty +moody +moore +moose +moral +moran +morel +morse +moser +moses +mossy +motel +motet +motif +motor +motto +mould +mound +mount +mourn +mouse +mousy +mouth +movie +mower +moyer +mucus +muddy +muggy +mugho +mulch +mulct +multi +mumbo +mummy +mumps +munch +muong +mural +murky +murre +mushy +music +musky +musty +muzak +myers +mylar +mynah +myron +myrrh +naacp +nacho +nadir +naiad +naive +naked +nancy +nanny +naomi +nappy +nasal +nasty +natal +natty +naval +navel +neath +needy +nehru +nepal +nerve +nervy +never +newel +niche +niece +nifty +niger +night +nikko +ninja +ninth +niobe +nitty +nixon +nobel +noble +nodal +noise +noisy +nolan +nomad +nonce +noose +norma +north +notch +notre +novak +novel +nubia +nudge +nurse +nutty +nylon +nymph +oaken +oases +oasis +obese +objet +occur +ocean +octal +octet +odium +offal +offer +often +ogden +ohmic +olden +olive +olsen +olson +omaha +omega +onion +onset +opera +opium +optic +orate +orbit +order +organ +orion +orono +osaka +oscar +osier +otaku +other +otter +ought +ounce +outer +ouvre +ouzel +ovary +ovate +overt +owens +owing +owner +oxeye +oxide +ozark +ozone +pablo +pabst +paced +paddy +padre +paean +pagan +pager +paine +paint +palsy +pampa +panda +panel +panic +pansy +pants +paoli +papal +papaw +paper +pappy +papua +parch +paris +parka +parke +parks +parry +parse +party +pasha +passe +pasta +paste +pasty +patch +pater +patio +patsy +patti +patty +paula +pauli +paulo +pause +paver +payee +payer +payne +peace +peach +peaky +peale +pearl +pease +pecan +pecos +pedal +pedro +peepy +peggy +penal +pence +penna +penny +peony +peppy +pepsi +perch +percy +perez +peril +perky +perle +perry +perth +pesky +peste +petal +peter +petit +petri +petty +pewee +phage +phase +phlox +phone +phony +photo +phyla +piano +picky +piece +piety +piggy +pilot +pinch +pinto +piotr +pious +piper +pique +pitch +pithy +pivot +pixel +pizza +place +plaid +plain +plane +plank +plant +plasm +plate +plato +playa +plaza +plead +pleat +pliny +pluck +plumb +plume +plump +plunk +plush +pluto +poach +pobox +podge +podia +poesy +point +poise +poker +polar +polio +polis +polka +ponce +pooch +poole +poppy +porch +porte +porto +poser +posey +posit +posse +potts +pouch +pound +power +prado +prank +pratt +preen +press +prexy +priam +price +prick +pride +pried +prima +prime +primp +print +prior +prism +privy +prize +probe +prone +prong +proof +props +prose +proud +prove +prowl +proxy +prude +prune +psalm +psych +puffy +pulse +punch +punic +punky +pupal +pupil +puppy +purge +purse +pusan +pusey +pushy +putty +pygmy +pyrex +qatar +quack +quaff +quail +quake +qualm +quark +quart +quash +quasi +queen +queer +quell +query +quest +queue +quick +quiet +quill +quilt +quinn +quint +quirk +quirt +quite +quito +quota +quote +rabat +rabbi +rabid +rabin +radar +radii +radio +radix +radon +rainy +raise +rajah +rally +ralph +raman +ranch +randy +range +rangy +rants +raoul +rapid +rater +ratio +ravel +raven +razor +reach +ready +realm +reave +rebel +rebut +recur +reedy +reese +reeve +refer +regal +regis +rehab +reich +reign +relax +relay +relic +reman +remit +remix +remus +renal +renew +repel +reply +rerun +reset +resin +retch +retry +reuse +revel +rever +revet +rheum +rhine +rhino +rhoda +rhode +rhyme +ridge +rifle +rigel +riggs +right +rigid +rigor +riley +rilly +rinse +ripen +risen +risky +ritzy +rival +riven +river +rivet +roach +roast +robin +robot +rocky +rodeo +roger +rogue +roman +romeo +rondo +rooky +roomy +roost +rosen +rotor +rouge +rough +round +rouse +route +rover +rowdy +royal +royce +ruben +rubin +ruddy +rufus +rumen +rummy +rumor +runge +runic +runny +runty +rupee +rural +russo +rusty +rutty +ryder +sable +sabra +sachs +sadie +sadly +saggy +saint +salad +salem +salle +sally +salon +salsa +salty +salve +salvo +samba +sammy +samoa +sandy +santa +santo +sappy +sarah +saran +sassy +satan +satin +satyr +sauce +saucy +saudi +sault +sauna +saute +saved +savor +savoy +savvy +saxon +scala +scald +scale +scalp +scamp +scant +scare +scarf +scary +scaup +scene +scent +scion +scoff +scold +scone +scoop +scoot +scope +scops +score +scorn +scott +scour +scout +scowl +scram +scrap +screw +scrim +scrub +scuba +scuff +scull +seamy +sears +sedan +seder +sedge +seedy +seize +selma +senor +sense +seoul +sepal +sepia +sepoy +septa +serge +serif +serum +serve +servo +seton +setup +seven +sever +shack +shade +shady +shaft +shake +shako +shaky +shale +shall +shame +shank +shape +shard +share +shari +shark +sharp +shave +shawl +sheaf +shear +sheen +sheep +sheer +sheet +sheik +shelf +shell +shied +shift +shill +shine +shiny +shire +shirk +shirt +shish +shoal +shock +shoji +shone +shook +shoot +shore +short +shout +shove +shown +showy +shred +shrew +shrub +shrug +shuck +shunt +shush +sibyl +sidle +siege +siena +sieve +sight +sigma +silas +silky +silly +silty +simon +sinai +since +sinew +singe +sinus +sioux +siren +sisal +situs +sixth +sixty +skate +skeet +skied +skier +skies +skiff +skill +skimp +skirt +skulk +skull +skunk +skype +slack +slain +slake +slang +slant +slash +slate +sleek +sleep +sleet +slept +slice +slick +slide +slime +slimy +sling +sloan +sloop +slope +slosh +sloth +slump +slung +slurp +slush +smack +small +smart +smash +smear +smell +smelt +smile +smirk +smite +smith +smock +smoke +smoky +snack +snafu +snail +snake +snare +snark +snarl +sneak +sneer +snell +snick +snide +sniff +snipe +snook +snoop +snore +snort +snout +snowy +snuff +soapy +sober +sofia +soggy +solar +solid +solon +solve +somal +sonar +sonic +sonny +sooth +sorry +sough +sound +sousa +south +space +spade +spain +spare +spark +spasm +spate +spawn +speak +spear +speck +speed +spell +spend +spent +sperm +spica +spice +spicy +spied +spike +spiky +spill +spilt +spine +spiny +spire +spiro +spite +spitz +splat +splay +split +spoil +spoke +spoof +spook +spool +spoon +spore +sport +spout +spray +spree +sprig +sprue +spume +spunk +spurn +spurt +squad +squat +squaw +squid +stack +stacy +staff +stage +stagy +stahl +staid +stain +stair +stake +stale +stalk +stall +stamp +stand +stank +staph +stare +stark +starr +start +stash +state +stave +stays +stead +steak +steal +steam +steed +steel +steen +steep +steer +stein +stern +steve +stick +stiff +stile +still +stilt +sting +stink +stint +stock +stoic +stoke +stole +stomp +stone +stony +stood +stool +stoop +store +stork +storm +story +stout +stove +strap +straw +stray +strep +strip +strom +strop +strum +strut +stuck +study +stuff +stump +stung +stunk +stunt +sturm +style +styli +suave +sudan +sugar +suing +suite +sulfa +sulky +sully +sumac +sunny +super +supra +surge +susan +sushi +susie +swain +swami +swamp +swank +swarm +swart +swath +swear +sweat +swede +sweep +sweet +swell +swelt +swept +swift +swine +swing +swipe +swirl +swish +swiss +swoop +sword +swore +sworn +swung +sybil +sykes +sylow +synge +synod +syria +syrup +tabby +table +taboo +tacit +tacky +taffy +tahoe +taint +taken +talky +tally +talon +talus +tamer +tampa +tango +tangy +tansy +tanya +taper +tapir +tapis +tappa +tardy +tarot +tarry +taste +tasty +tater +tatty +taunt +tawny +teach +tease +tecum +teddy +teeth +telex +tempo +tempt +tenet +tenon +tenor +tense +tenth +tepee +tepid +terra +terre +terry +terse +testy +texan +texas +thank +theft +their +theme +there +these +theta +thick +thief +thigh +thine +thing +think +third +thong +thorn +those +three +threw +throb +throw +thrum +thule +thumb +thump +thyme +tiara +tiber +tibet +tibia +tidal +tiger +tight +tilde +tilth +timex +timid +timon +tinge +tioga +tippy +tipsy +tired +titan +tithe +title +titus +toady +toast +today +token +tokyo +tommy +tonal +tonic +tooth +topaz +topic +topsy +torah +torch +torso +torus +total +totem +touch +tough +towel +tower +toxic +toxin +trace +track +tract +tracy +trade +trail +train +trait +tramp +trans +traps +trash +trawl +tread +treat +trend +tress +triad +trial +tribe +trick +tried +trill +tripe +trite +troll +troop +trout +truce +truck +trudy +truly +trump +trunk +truss +trust +truth +tubby +tudor +tulip +tulle +tulsa +tummy +tunic +tunis +tuple +turin +turvy +tutor +twain +tweak +tweed +tweet +twerp +twice +twill +twine +twins +twirl +twist +tying +tyler +typic +tyson +udder +ulcer +ultra +umber +umbra +unary +uncle +uncut +under +unify +union +unite +unity +unlit +untie +until +unwed +unzip +upend +upper +upset +upton +urban +urine +usage +usher +usual +usurp +usury +utica +utile +utter +vacua +vacuo +vaduz +vague +valet +valid +value +valve +vance +vapor +vault +veery +vegan +velar +veldt +vella +venal +venom +venue +venus +verde +verdi +verge +verna +verne +versa +verse +verve +vetch +vibes +vicar +vichy +vicky +video +vigil +villa +vinyl +viola +viper +viral +virgo +virus +visit +visor +vista +vitae +vital +vitro +vivid +vixen +vocal +vogel +vogue +voice +volta +volvo +vomit +voter +vouch +vowed +vowel +vying +waals +wacke +wacky +wafer +waged +wager +wages +wagon +waifu +waist +waite +waive +waken +waldo +walls +wally +walsh +waltz +warty +washy +waste +watch +water +watts +waxen +wayne +weary +weave +weber +wedge +weedy +weeks +weigh +weird +weiss +welch +wells +welsh +wendy +whack +whale +wharf +wheat +wheel +whelk +whelm +whelp +where +which +whiff +while +whine +whiny +whirl +whisk +white +whole +whoop +whose +widen +widow +width +wield +wiley +willa +wills +wilma +wince +winch +windy +wired +wishy +wispy +witch +withe +withy +witty +wolfe +wolff +wolve +woman +women +woods +woody +woozy +wordy +world +wormy +worry +worse +worst +worth +wotan +would +wound +woven +wrack +wrath +wreak +wreck +wrest +wring +wrist +write +wrong +wrote +wuhan +wyatt +wyeth +wylie +wyman +wyner +xenon +xerox +xylem +yacht +yahoo +yalta +yaqui +yates +yearn +yeast +yeats +yemen +yield +yodel +yoder +yokel +young +youth +yucca +yukon +yummy +zaire +zazen +zebra +zeiss +zesty +zilch +zippy +zloty +zomba +100th +101st +bubbly +chuuni +cuddle +cuddly +dragon +katana +kawaii +kitten +matcha +plural +rigged +ruined +sakura +senpai +social +soften +solemn +sonora +source +sparge +specks +speech +sperry +sphere +sphinx +spider +spiffy +spinal +spiral +spirit +spleen +splice +spline +spoils +spoken +sponge +spongy +spooky +sports +sporty +spotty +spouse +sprain +sprang +sprawl +spread +spring +sprint +sprite +sprout +spruce +sprung +squall +square +squash +squeak +squibb +squint +squire +squirt +stable +stairs +stance +staple +starch +starry +static +statue +status +steele +stella +stench +stereo +stifle +stingy +stinky +stitch +stooge +storey +strafe +streak +stream +street +stress +strewn +strict +stride +strife +strike +strive +strobe +strode +stroll +strong +struck +strung +stuart +stucco +studio +stuffy +stupor +sturdy +stylus +sublet +submit +subpar +subtly +suburb +subway +sudden +sudoku +suffer +suffix +suitor +sulfur +sullen +sultry +summer +summon +sunset +supper +supply +surely +surfer +survey +sutton +swampy +sweaty +swerve +switch +swivel +swoosh +sylvan +symbol +system +tables +tablet +tabula +tackle +tacoma +taking +talcum +talent +tallow +tamale +tamper +tanned +target +tariff +tarmac +tartar +tartly +tassel +tattle +tattoo +tavern +teensy +tenant +tenney +tennis +tensor +theory +thesis +thinly +thirty +thorny +thrash +thread +thrift +thrill +thrive +throat +throes +throng +ticket +tidbit +tiling +timber +timing +tingle +tingly +tinker +tinsel +tipoff +tipped +tipper +tiptop +tiring +tissue +toilet +tomato +tongue +tonsil +topple +toward +tragic +trance +travel +treble +tremor +trench +triage +tricky +trifle +tripod +triton +trophy +trough +trowel +trudge +trunks +tulane +tumble +tunnel +turban +turkey +turret +turtle +tussle +twelve +twenty +twisty +twitch +tyburn +tycoon +umpire +unable +unbend +unbent +unclad +unclip +unclog +uncork +undead +undone +unease +uneasy +uneven +unfair +unfold +unglue +unholy +unhook +unique +unison +unkind +unless +unlock +unmade +unpack +unpaid +unplug +unread +unreal +unrest +unripe +unroll +unruly +unsafe +unsaid +unseen +unsent +unsnap +unsold +unsure +untidy +untold +untrue +unused +unveil +unwary +unwell +unwind +unworn +upbeat +update +upheld +uphill +uphold +upload +uproar +uproot +upside +uptake +uptown +upward +upwind +urbane +urchin +urgent +urging +usable +useful +utmost +utopia +vacant +vacate +vacuum +valeur +valium +valley +vanish +vanity +varied +vastly +veggie +velcro +vellum +velvet +vendor +venial +verify +verity +versus +vessel +viable +viewer +violet +violin +virgil +vision +visual +vivian +volley +volume +voting +voyage +vulcan +waffle +waggle +waking +walkie +walnut +walrus +walton +wanted +warmth +warren +wasabi +washed +washer +waving +wealth +weapon +weasel +whacky +whinny +whoops +whoosh +widely +widget +wilder +wildly +wilkes +willed +willow +window +winner +winnie +winter +wiring +wisdom +wizard +wobble +wobbly +wonder +wooing +wreath +wrench +writhe +yamaha +yearly +yeasty +yellow +yippee +yogurt +yonder +zealot +zodiac +zombie +zoning +zurich diff --git a/internal/pwhash/pwhash.go b/internal/pwhash/pwhash.go new file mode 100644 index 0000000..576d052 --- /dev/null +++ b/internal/pwhash/pwhash.go @@ -0,0 +1,18 @@ +package pwhash + +import ( + "crypto/pbkdf2" + "crypto/sha512" +) + +const SaltSize = 8 + +const defaultIter = 12059332 // from tools/finditer + +func HashIter(password string, salt []byte, iter int) ([]byte, error) { + return pbkdf2.Key(sha512.New, password, salt, iter, 32) +} + +func Hash(password string, salt []byte) ([]byte, error) { + return HashIter(password, salt, defaultIter) +} diff --git a/internal/wordlist/wordlist.go b/internal/wordlist/wordlist.go deleted file mode 100644 index de929bc..0000000 --- a/internal/wordlist/wordlist.go +++ /dev/null @@ -1,11 +0,0 @@ -package wordlist - -import ( - _ "embed" - "strings" -) - -//go:embed wordlist.txt -var wordList string - -var Words = strings.Split(strings.TrimSuffix(wordList, "\n"), "\n") diff --git a/internal/wordlist/wordlist.txt b/internal/wordlist/wordlist.txt deleted file mode 100644 index 5e304ce..0000000 --- a/internal/wordlist/wordlist.txt +++ /dev/null @@ -1,8192 +0,0 @@ -a -b -c -d -e -f -g -h -i -j -k -l -m -n -o -p -q -r -s -t -u -v -w -x -y -z -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -aa -ab -ac -ad -ae -af -ag -ah -ai -aj -ak -al -am -an -ao -ap -aq -ar -as -at -au -av -aw -ax -ay -az -a2 -a3 -a4 -a5 -a6 -a7 -a8 -a9 -ba -bb -bc -bd -be -bf -bg -bh -bi -bj -bk -bl -bm -bn -bo -bp -bq -br -bs -bt -bu -bv -bw -bx -by -bz -b2 -b3 -b4 -b5 -b6 -b7 -b8 -b9 -ca -cb -cc -cd -ce -cf -cg -ch -ci -cj -ck -cl -cm -cn -co -cp -cq -cr -cs -ct -cu -cv -cw -cx -cy -cz -c2 -c3 -c4 -c5 -c6 -c7 -c8 -c9 -da -db -dc -dd -de -df -dg -dh -di -dj -dk -dl -dm -dn -do -dp -dq -dr -ds -dt -du -dv -dw -dx -dy -dz -d2 -d3 -d4 -d5 -d6 -d7 -d8 -d9 -ea -eb -ec -ed -ee -ef -eg -eh -ei -ej -ek -el -em -en -eo -ep -eq -er -es -et -eu -ev -ew -ex -ey -ez -e2 -e3 -e4 -e5 -e6 -e7 -e8 -e9 -fa -fb -fc -fd -fe -ff -fg -fh -fi -fj -fk -fl -fm -fn -fo -fp -fq -fr -fs -ft -fu -fv -fw -fx -fy -fz -f2 -f3 -f4 -f5 -f6 -f7 -f8 -f9 -ga -gb -gc -gd -ge -gf -gg -gh -gi -gj -gk -gl -gm -gn -go -gp -gq -gr -gs -gt -gu -gv -gw -gx -gy -gz -g2 -g3 -g4 -g5 -g6 -g7 -g8 -g9 -ha -hb -hc -hd -he -hf -hg -hh -hi -hj -hk -hl -hm -hn -ho -hp -hq -hr -hs -ht -hu -hv -hw -hx -hy -hz -h2 -h3 -h4 -h5 -h6 -h7 -h8 -h9 -ia -ib -ic -id -ie -if -ig -ih -ii -ij -ik -il -im -in -io -ip -iq -ir -is -it -iu -iv -iw -ix -iy -iz -i2 -i3 -i4 -i5 -i6 -i7 -i8 -i9 -ja -jb -jc -jd -je -jf -jg -jh -ji -jj -jk -jl -jm -jn -jo -jp -jq -jr -js -jt -ju -jv -jw -jx -jy -jz -j2 -j3 -j4 -j5 -j6 -j7 -j8 -j9 -ka -kb -kc -kd -ke -kf -kg -kh -ki -kj -kk -kl -km -kn -ko -kp -kq -kr -ks -kt -ku -kv -kw -kx -ky -kz -k2 -k3 -k4 -k5 -k6 -k7 -k8 -k9 -la -lb -lc -ld -le -lf -lg -lh -li -lj -lk -ll -lm -ln -lo -lp -lq -lr -ls -lt -lu -lv -lw -lx -ly -lz -l2 -l3 -l4 -l5 -l6 -l7 -l8 -l9 -ma -mb -mc -md -me -mf -mg -mh -mi -mj -mk -ml -mm -mn -mo -mp -mq -mr -ms -mt -mu -mv -mw -mx -my -mz -m2 -m3 -m4 -m5 -m6 -m7 -m8 -m9 -na -nb -nc -nd -ne -nf -ng -nh -ni -nj -nk -nl -nm -nn -no -np -nq -nr -ns -nt -nu -nv -nw -nx -ny -nz -n2 -n3 -n4 -n5 -n6 -n7 -n8 -n9 -oa -ob -oc -od -oe -of -og -oh -oi -oj -ok -ol -om -on -oo -op -oq -or -os -ot -ou -ov -ow -ox -oy -oz -o2 -o3 -o4 -o5 -o6 -o7 -o8 -o9 -pa -pb -pc -pd -pe -pf -pg -ph -pi -pj -pk -pl -pm -pn -po -pp -pq -pr -ps -pt -pu -pv -pw -px -py -pz -p2 -p3 -p4 -p5 -p6 -p7 -p8 -p9 -qa -qb -qc -qd -qe -qf -qg -qh -qi -qj -qk -ql -qm -qn -qo -qp -qq -qr -qs -qt -qu -qv -qw -qx -qy -qz -q2 -q3 -q4 -q5 -q6 -q7 -q8 -q9 -ra -rb -rc -rd -re -rf -rg -rh -ri -rj -rk -rl -rm -rn -ro -rp -rq -rr -rs -rt -ru -rv -rw -rx -ry -rz -r2 -r3 -r4 -r5 -r6 -r7 -r8 -r9 -sa -sb -sc -sd -se -sf -sg -sh -si -sj -sk -sl -sm -sn -so -sp -sq -sr -ss -st -su -sv -sw -sx -sy -sz -s2 -s3 -s4 -s5 -s6 -s7 -s8 -s9 -ta -tb -tc -td -te -tf -tg -th -ti -tj -tk -tl -tm -tn -to -tp -tq -tr -ts -tt -tu -tv -tw -tx -ty -tz -t2 -t3 -t4 -t5 -t6 -t7 -t8 -t9 -ua -ub -uc -ud -ue -uf -ug -uh -ui -uj -uk -ul -um -un -uo -up -uq -ur -us -ut -uu -uv -uw -ux -uy -uz -u2 -u3 -u4 -u5 -u6 -u7 -u8 -u9 -va -vb -vc -vd -ve -vf -vg -vh -vi -vj -vk -vl -vm -vn -vo -vp -vq -vr -vs -vt -vu -vv -vw -vx -vy -vz -v2 -v3 -v4 -v5 -v6 -v7 -v8 -v9 -wa -wb -wc -wd -we -wf -wg -wh -wi -wj -wk -wl -wm -wn -wo -wp -wq -wr -ws -wt -wu -wv -ww -wx -wy -wz -w2 -w3 -w4 -w5 -w6 -w7 -w8 -w9 -xa -xb -xc -xd -xe -xf -xg -xh -xi -xj -xk -xl -xm -xn -xo -xp -xq -xr -xs -xt -xu -xv -xw -xx -xy -xz -x2 -x3 -x4 -x5 -x6 -x7 -x8 -x9 -ya -yb -yc -yd -ye -yf -yg -yh -yi -yj -yk -yl -ym -yn -yo -yp -yq -yr -ys -yt -yu -yv -yw -yx -yy -yz -y2 -y3 -y4 -y5 -y6 -y7 -y8 -y9 -za -zb -zc -zd -ze -zf -zg -zh -zi -zj -zk -zl -zm -zn -zo -zp -zq -zr -zs -zt -zu -zv -zw -zx -zy -zz -z2 -z3 -z4 -z5 -z6 -z7 -z8 -z9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -2a -2b -2c -2d -2e -2f -2g -2h -2i -2j -2k -2l -2m -2n -2o -2p -2q -2r -2s -2t -2u -2v -2w -2x -2y -2z -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -3a -3b -3c -3d -3e -3f -3g -3h -3i -3j -3k -3l -3m -3n -3o -3p -3q -3r -3s -3t -3u -3v -3w -3x -3y -3z -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 -4a -4b -4c -4d -4e -4f -4g -4h -4i -4j -4k -4l -4m -4n -4o -4p -4q -4r -4s -4t -4u -4v -4w -4x -4y -4z -40 -41 -42 -43 -44 -45 -46 -47 -48 -49 -5a -5b -5c -5d -5e -5f -5g -5h -5i -5j -5k -5l -5m -5n -5o -5p -5q -5r -5s -5t -5u -5v -5w -5x -5y -5z -50 -51 -52 -53 -54 -55 -56 -57 -58 -59 -6a -6b -6c -6d -6e -6f -6g -6h -6i -6j -6k -6l -6m -6n -6o -6p -6q -6r -6s -6t -6u -6v -6w -6x -6y -6z -60 -61 -62 -63 -64 -65 -66 -67 -68 -69 -7a -7b -7c -7d -7e -7f -7g -7h -7i -7j -7k -7l -7m -7n -7o -7p -7q -7r -7s -7t -7u -7v -7w -7x -7y -7z -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 -8a -8b -8c -8d -8e -8f -8g -8h -8i -8j -8k -8l -8m -8n -8o -8p -8q -8r -8s -8t -8u -8v -8w -8x -8y -8z -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -9a -9b -9c -9d -9e -9f -9g -9h -9i -9j -9k -9l -9m -9n -9o -9p -9q -9r -9s -9t -9u -9v -9w -9x -9y -9z -90 -91 -92 -93 -94 -95 -96 -97 -98 -99 -aaa -aba -abc -abe -abo -ace -acm -act -ada -add -ado -aft -age -ago -aid -ail -aim -air -ala -alb -ale -ali -all -alp -ama -ami -amp -amy -ana -and -ani -ann -ant -any -aok -ape -apt -arc -are -ark -arm -art -ash -ask -ass -ate -aug -auk -ave -awe -awl -awn -axe -aye -bad -bag -bah -bam -ban -bar -bat -bay -bbb -bcd -bed -bee -beg -bel -ben -bet -bey -bib -bid -big -bin -bit -biz -bmw -boa -bob -bog -bon -boo -bop -bow -box -boy -btl -bub -bud -bug -bum -bun -bus -but -buy -bye -cab -cal -cam -can -cap -car -cat -caw -cbs -ccc -cdc -chi -cia -cis -cod -cog -col -con -coo -cop -cos -cot -cow -cox -coy -cpa -crt -cry -cub -cud -cue -cup -cur -cut -dab -dad -dam -dan -dar -day -ddd -dec -dee -def -del -den -des -dew -dey -did -die -dig -dim -din -dip -dis -dna -dod -doe -dog -don -dot -dow -dry -dub -dud -due -dug -duh -dun -duo -dye -ear -eat -ebb -edt -eee -eel -efg -eft -egg -ego -eke -elf -eli -elk -ell -elm -ely -emu -end -eng -epa -era -ere -erg -err -est -eta -etc -eva -eve -ewe -eye -faa -fad -fan -far -fat -fax -fay -fbi -fcc -fda -feb -fed -fee -few -fff -fgh -fib -fig -fin -fir -fit -fix -flo -flu -fly -fmc -fob -foe -fog -fop -for -fox -fpc -fro -fry -ftc -fum -fun -fur -gab -gad -gag -gal -gam -gao -gap -gar -gas -gay -gee -gel -gem -get -ggg -ghi -gig -gil -gin -gmt -gnp -gnu -goa -gob -god -gog -goo -gop -got -gpo -gsa -gum -gun -gus -gut -guy -gym -gyp -had -hal -ham -han -hap -has -hat -haw -hay -hem -hen -her -hew -hex -hey -hhh -hid -hij -him -hip -his -hit -hob -hoc -hoe -hog -hoi -hop -hot -how -hoy -hub -hue -hug -huh -hum -hun -hut -ian -ibm -ibn -icc -ice -icy -ida -iii -ijk -ike -ill -imp -inc -ink -inn -ion -ira -ire -irk -irs -ito -its -itt -ive -ivy -jab -jag -jam -jan -jar -jaw -jay -jed -jet -jew -jig -jim -jjj -jkl -job -joe -jog -jon -jot -joy -jug -jut -kay -keg -ken -key -kid -kim -kin -kit -klm -lab -lac -lad -lag -lam -lao -lap -law -lax -lay -lea -led -lee -leg -len -leo -let -lev -lew -lid -lie -lin -lip -lit -liu -liz -lll -lmn -lob -log -lol -lop -los -lot -lou -low -loy -lsi -ltv -lug -lux -lye -mac -mad -mae -man -mao -map -mar -mat -maw -max -may -mba -meg -mel -men -met -mew -mid -mig -min -mit -mix -mmm -mno -mob -moe -mom -moo -mop -mot -mow -mph -mrs -mud -mug -mum -nab -nag -nan -nap -nat -nay -nbc -nbs -ncr -ned -nee -neo -net -new -nib -nih -nil -nip -nit -nnn -nob -nod -non -nop -nor -not -nov -now -nrc -nsf -nun -nut -nyc -nyu -oaf -oak -oar -oat -oct -odd -ode -off -oft -ohm -oil -old -one -oof -ooo -opt -orb -ore -orr -ott -our -out -ova -owe -owl -own -pad -pal -pam -pan -pap -par -pat -paw -pax -pay -paz -pbs -pea -pee -peg -pen -pep -per -pet -pew -phd -phi -pie -pig -pin -pip -pit -ply -pod -poe -pog -poi -pol -pop -pot -pow -pox -ppm -ppp -pqr -pro -pry -psi -pta -pub -pug -pun -pup -pus -put -pvc -qed -qqq -qrs -qua -quo -rae -rag -raj -ram -ran -rap -rat -raw -ray -rca -reb -red -rep -ret -rev -rex -rho -rib -rid -rig -rim -rio -rip -rob -rod -roe -ron -rot -row -roy -rpm -rrr -rst -rub -rue -rug -rum -run -rut -rye -sac -sad -sag -sal -sam -san -sao -sap -sat -saw -sax -say -scm -sea -sec -see -sen -set -sew -sex -she -shu -shy -sib -sic -sin -sip -sir -sis -sit -six -ski -sky -sly -sob -sod -sol -son -sop -sos -sou -sow -soy -spa -spy -sri -sss -sst -stu -sub -sud -sue -sum -sun -sup -sus -tab -tad -tag -tam -tan -tao -tap -tar -tat -tau -tax -tea -ted -tee -ten -the -thy -tic -tid -tie -til -tim -tin -tip -tnt -toe -tog -tom -ton -too -top -tor -tot -tow -toy -trw -try -ttl -ttt -tty -tub -tug -tum -tun -tuv -tux -tva -twa -two -twx -ugh -uri -urn -usa -usc -use -usn -uuu -uvw -uwu -van -vat -vee -vet -vex -via -vie -vii -vis -viz -von -vow -vvv -wac -wad -wag -wah -wan -war -was -wax -way -web -wed -wee -wei -wet -who -why -wig -wii -win -wit -woe -wok -won -woo -wow -wry -www -wxy -xxx -xyz -yah -yak -yam -yap -yaw -yea -yen -yes -yet -yin -yip -yon -you -yow -yuh -yyy -zag -zan -zap -zen -zig -zip -zit -zoe -zoo -zzz -1st -100 -101 -111 -123 -2nd -200 -222 -234 -3rd -300 -333 -345 -4th -400 -444 -456 -5th -500 -555 -567 -6th -600 -666 -678 -7th -700 -777 -789 -8th -800 -888 -9th -900 -999 -aaaa -abbe -abed -abel -abet -able -abut -ache -acid -acme -acre -acts -adam -adds -aden -afar -afro -aged -agee -ages -ague -ahem -ahoy -aida -aide -aile -aims -ainu -airy -ajar -ajax -akin -alai -alan -alba -alec -alex -alga -alia -ally -alma -aloe -alps -also -alto -alum -alva -amen -ames -amid -ammo -amok -amos -amra -andy -anew -anna -anne -ansi -ante -anti -apex -apse -aqua -arab -arch -area -ares -argo -aria -arid -arms -army -arpa -arts -arty -arum -aryl -ashy -asia -asks -astm -atom -atop -aunt -aura -auto -aver -avid -avis -aviv -avon -avow -away -awry -axes -axis -axle -axon -babe -baby -bach -back -bade -bail -bait -baka -bake -baku -bald -bale -bali -balk -ball -balm -band -bane -bang -bank -barb -bard -bare -bark -barn -barr -bars -base -bash -bask -bass -bate -bath -bats -batt -baud -bawd -bawl -bays -bbbb -bead -beak -beam -bean -bear -beat -beau -beck -beds -beef -been -beep -beer -beet -bela -bell -belt -bema -bend -bent -benz -berg -bern -bert -bess -best -beta -beth -bevy -bhoy -bias -bibb -bide -bien -bike -bile -bilk -bill -bind -bing -bini -bird -bite -bitt -blab -blah -blat -bled -blew -blip -blob -bloc -blog -blot -blow -blue -blum -blur -blvd -boar -boat -boca -bock -bode -body -bogy -bohr -boil -bois -bold -bole -bolo -bolt -bomb -bona -bond -bone -bong -bonn -bony -book -boom -boon -boor -boot -bore -borg -born -bose -boss -both -bout -bowl -boxy -boyd -boys -brad -brae -brag -bran -bray -bred -brew -brig -brim -bros -brow -bruh -bryn -bstj -buck -budd -buff -bulb -bulk -bull -bump -bunk -bunt -buoy -burg -burl -burn -burp -burr -burt -bury -bush -buss -bust -busy -butt -buzz -byrd -byte -cacm -cady -cafe -cage -cain -cake -calf -call -calm -came -camp -cane -cant -cape -capo -caps -card -care -carl -carp -carr -cars -cart -case -cash -cask -cast -cats -cave -cccc -cede -ceil -cell -cent -cern -chad -chai -chan -chao -chap -char -chat -chaw -chef -chen -chew -chic -chin -chip -chit -chop -chou -chow -chub -chug -chum -cite -city -clad -clam -clan -clap -claw -clay -clio -clip -clod -clog -clot -cloy -club -clue -cluj -coal -coat -coax -cobb -coca -coco -coda -code -cody -coed -cohn -coil -coin -coke -cola -cold -cole -colt -coma -comb -come -cone -conn -cony -cook -cool -coop -coot -cope -copy -cord -core -cork -corn -corp -cosh -cost -cosy -coup -cove -cowl -cozy -crab -crag -cram -crap -craw -crew -crib -crop -crow -crud -crux -cruz -cuba -cube -cubs -cuff -cull -cult -cuny -cups -curb -curd -cure -curl -curt -cusp -cute -cuts -cyst -czar -dada -dade -dahl -dais -dale -daly -dame -damn -damp -dana -dane -dang -dank -dare -dark -darn -dart -dash -data -date -daub -dave -davy -dawn -days -daze -dddd -dead -deaf -deal -dean -dear -debt -deck -deed -deem -deep -deer -deft -defy -deja -dell -demo -dent -deny -desk -desu -deus -dewy -dial -dice -dido -died -diem -dies -diet -dill -dime -dine -ding -dint -dire -dirt -disc -dish -disk -diva -dive -dock -dodd -dodo -does -doff -doge -dogs -doki -dole -doll -dolt -dome -done -doom -door -dope -dora -dork -dose -dote -doug -dour -dove -down -doze -drab -drag -dram -draw -dreg -drew -drib -drip -drop -drub -drug -drum -dual -duck -duct -dude -duel -duet -duff -duke -dull -duly -duma -dump -dune -dung -dunk -dunn -dupe -dusk -dust -duty -dyad -dyer -dyke -dyne -each -earl -earn -ease -east -easy -eats -eave -ebay -eben -echo -eddy -eden -edge -edgy -edit -edna -eeee -eeoc -egan -eggs -eire -elan -elba -ella -else -emil -emit -emma -enby -ends -enid -enol -enos -envy -epic -erda -eric -erie -erik -eros -etch -euro -even -ever -evil -exam -exes -exit -eyed -eyes -ezra -face -fact -fade -fail -fain -fair -fake -fall -fame -fang -fans -fare -farm -faro -fast -fate -faun -fawn -faze -fear -feat -feed -feel -fees -feet -fell -felt -fend -fern -fest -fete -feud -ffff -fiat -fide -fief -fife -fifo -fiji -file -fill -film -find -fine -fink -finn -fire -firm -fish -fisk -fist -five -flag -flak -flam -flap -flat -flaw -flax -flea -fled -flee -flew -flex -flip -flit -floc -floe -flog -flop -flow -flub -flue -flux -foal -foam -foci -fogy -foil -fold -folk -fond -font -food -fool -foot -ford -fore -fork -form -fort -foss -foul -four -fowl -foxy -fran -frau -fray -fred -free -fret -frey -frog -from -frye -fuel -fuji -full -fume -fund -funk -furl -fury -fuse -fuss -fuzz -gaff -gage -gail -gain -gait -gala -gale -gall -galt -game -gang -gape -garb -gary -gash -gasp -gate -gaul -gaur -gave -gawk -gaza -gaze -gear -geek -geld -gene -gent -germ -gets -gggg -gibe -gift -gila -gild -gill -gilt -gina -ginn -gino -gird -girl -gist -give -glad -glee -glen -glib -glob -glom -glow -glue -glum -glut -gnat -gnaw -goad -goal -goat -gods -goer -goes -goff -gogh -gogo -gold -golf -gone -gong -good -goof -goon -gore -gory -gosh -gout -gown -grab -grad -gram -gray -greg -grew -grey -grid -grim -grin -grip -grit -grow -grub -guam -gulf -gull -gulp -gunk -guns -guru -gush -gust -guts -guys -gwen -gwyn -gyro -haag -haas -hack -hahn -hail -hair -hale -half -hall -halo -halt -hand -hang -hank -hans -hard -hare -hark -harm -harp -hart -hash -hasp -hast -hate -hath -haul -have -hawk -hays -haze -hazy -head -heal -heap -hear -heat -hebe -heck -heed -heel -heft -heir -held -hell -helm -help -hemp -hera -herb -herd -here -hero -herr -hess -hewn -hhhh -hick -hide -high -hike -hill -hilt -hind -hint -hire -hiss -hits -hive -hoar -hock -hoff -hold -hole -holm -holt -holy -home -hone -hong -honk -hood -hoof -hook -hoop -hoot -hope -horn -hose -host -hour -hove -howe -howl -hoyt -huck -hued -huff -huge -hugh -hugo -hula -hulk -hull -hump -hung -hunk -hunt -hurd -hurl -hurt -hush -hyde -hymn -hype -ibex -ibid -ibis -icky -icon -idea -idle -idly -idol -ieee -iffy -ifni -igor -iiii -inca -inch -indy -into -iota -iowa -ipad -ipod -ipso -iran -iraq -iris -irma -iron -isle -itch -item -ivan -jack -jacm -jade -jail -jake -jane -java -jaws -jazz -jean -jeep -jeff -jerk -jess -jest -jets -jibe -jill -jilt -jinx -jive -jjjj -joan -jobs -jock -joel -joey -john -join -joke -jolt -jose -joss -jove -jowl -juan -judd -jude -judo -judy -juju -juke -july -jump -june -junk -juno -jura -jure -jury -just -jute -kahn -kale -kane -kant -karl -karp -kate -katz -kava -kayo -keel -keen -keep -kelp -kemp -keno -kent -kept -kern -kerr -keys -khan -kick -kids -kiev -kill -kiln -kilt -kind -king -kink -kirk -kiss -kite -kiva -kivu -kiwi -kkkk -knee -knew -knit -knob -knot -know -knox -koch -kola -kong -kudo -kuhn -kurd -kurt -kyle -lace -lack -lacy -lady -laid -lain -lair -lake -lamb -lame -lamp -lana -land -lane -lang -laos -laps -lard -lark -lars -lase -lash -lass -last -late -lath -laud -laue -lava -lawn -laws -laze -lazy -lead -leaf -leak -lean -leap -lear -leek -leer -left -lego -legs -lena -lend -lens -lent -leon -less -lest -lets -levi -levy -lewd -liar -lice -lick -lied -lien -lies -lieu -life -lifo -lift -like -lila -lilt -lily -lima -limb -lime -limp -lind -line -link -lint -lion -lisa -lise -lisp -list -live -llll -lmao -load -loaf -loam -loan -lobe -lobo -loch -loci -lock -loeb -loft -loge -logo -loin -lois -loki -lola -loll -lomb -lome -lone -long -look -loom -loon -loop -loot -lope -lord -lore -lose -loss -lost -lots -loud -love -lowe -luck -lucy -luge -luis -luke -lull -lulu -lump -luna -lund -lung -lura -lure -lurk -lush -lust -lute -lutz -luxe -lyle -lynn -lynx -lyon -lyra -mace -mach -mack -made -magi -maid -mail -maim -main -make -male -mali -mall -malt -mama -mana -mane -mann -mans -many -maps -marc -mare -mark -mars -mart -marx -mary -mash -mask -mass -mast -mate -math -maul -mawr -maya -mayo -maze -mead -meal -mean -meat -meek -meet -mega -meir -meld -melt -meme -memo -mend -menu -meow -mere -mesa -mesh -mess -mete -mica -mice -mien -miff -mike -mila -mild -mile -milk -mill -milt -mimi -mind -mine -mini -mink -mint -mira -mire -miss -mist -mite -mitt -mmmm -moan -moat -mock -mode -moen -mohr -mold -mole -moll -molt -mona -monk -mont -mood -moon -moor -moot -more -morn -mort -moss -most -moth -move -much -muck -mudd -muff -muir -mule -mull -mung -muon -murk -muse -mush -musk -must -mute -mutt -muzo -myel -myra -myth -nagy -nail -nair -name -nape -nary -nasa -nash -nate -nato -nave -navy -ncaa -neal -near -neat -neck -need -neff -neil -neko -nell -neon -nerd -nero -ness -nest -neva -neve -news -newt -next -nibs -nice -nick -nigh -nile -nimh -nina -nine -nnnn -noaa -noah -node -noel -noll -nolo -none -nook -noon -nora -nord -norm -nose -note -noun -nova -novo -ntis -nude -null -numb -oaks -oath -obey -oboe -odin -odor -ogle -ogre -ohio -oily -oink -oint -okay -olaf -olav -oldy -olga -olin -oman -omen -omit -once -ones -only -onto -onus -onyx -oooo -oops -ooze -oozy -opal -opec -opel -open -opus -oral -orin -oslo -otis -otto -ouch -oust -ouzo -oval -oven -over -ovid -owls -owly -owns -oxen -pace -pack -pact -page -paid -pail -pain -pair -pale -pall -palm -palo -pane -pang -pant -papa -pare -park -parr -part -paso -pass -past -pate -path -paul -pave -pawn -peak -peal -pear -peat -peck -peed -peek -peel -peep -peer -pelt -pend -penh -penn -pent -perk -perm -pert -peru -peso -pest -pete -phil -phon -pica -pick -pier -pike -pile -pill -pimp -pine -ping -pink -pint -pion -pipe -pith -pitt -pity -pius -pixy -plan -plat -play -plea -plod -plop -plot -plow -ploy -plug -plum -plus -poem -poet -pogo -poke -pole -polk -poll -polo -pomp -pond -pong -pont -pony -pooh -pool -poop -poor -pope -pore -pork -port -pose -posh -post -posy -pour -pout -pppp -pram -pray -prep -prey -prig -prim -prix -prod -prof -prom -prop -prow -puck -puff -pugh -puke -pull -pulp -puma -pump -punk -punt -puny -pure -purl -purr -push -puts -putt -pyle -pyre -qqqq -quad -quay -quid -quip -quit -quiz -quod -race -rack -racy -raft -rage -raid -rail -rain -rake -ramo -ramp -rams -rand -rang -rank -rant -rapt -rare -rasa -rash -rasp -rata -rate -raul -rave -rays -raze -read -real -ream -reap -rear -reck -reed -reef -reek -reel -reid -rein -rely -rena -rend -rene -rent -reps -rest -reub -rhea -rica -rice -rich -rick -rico -ride -rift -riga -rill -rime -rimy -rind -ring -rink -riot -ripe -rise -risk -rite -ritz -rizz -road -roam -roar -robe -rock -rode -roil -role -roll -rome -romp -rood -roof -rook -room -root -rope -rosa -rose -ross -rosy -rotc -roth -rout -rove -rowe -rrrr -rsvp -rube -ruby -rude -rudy -ruin -rule -rump -rune -rung -runs -runt -ruse -rush -rusk -russ -rust -ruth -ryan -sack -safe -saga -sage -sago -said -sail -sake -sale -salk -salt -same -sana -sand -sane -sang -sank -sans -sara -sari -sash -saud -saul -save -says -scab -scam -scan -scar -scat -scot -scud -scum -seal -seam -sean -sear -seas -seat -sect -seed -seek -seem -seen -seep -sees -self -sell -semi -send -sent -sept -sera -serf -seth -sets -sewn -sexy -shad -shag -shah -sham -shaw -shay -shea -shed -shim -shin -ship -shiv -shod -shoe -shoo -shop -shot -show -shun -shut -sial -siam -sian -sick -side -sift -sigh -sign -silk -sill -silo -silt -sima -sims -sine -sing -sinh -sink -sire -site -sits -situ -siva -size -skat -skew -skid -skim -skin -skip -skit -skye -slab -slag -slam -slap -slat -slav -slaw -slay -sled -slew -slid -slim -slip -slit -slob -sloe -slog -slop -slot -slow -slug -slum -slur -smog -smug -snag -snap -snip -snob -snow -snub -snug -soak -soap -soar -sock -soda -sofa -soft -soil -sold -sole -solo -soma -some -song -sons -sony -soon -soot -sora -sorb -sore -sort -soul -soup -sour -sown -soya -span -spar -spat -spay -spec -sped -spew -spin -spit -spot -spry -spud -spun -spur -ssss -stab -stag -stan -star -stay -stem -step -stew -stir -stop -stow -stub -stud -stun -styx -such -suck -suds -sued -suey -suez -suit -sulk -sung -sunk -suny -sure -surf -swab -swag -swam -swan -swap -swat -sway -swig -swim -swum -tabu -tack -taco -tact -taft -tail -take -talc -tale -talk -tall -tame -tamp -tang -tanh -tank -taos -tapa -tape -taps -tara -tart -task -tass -tate -taut -taxi -teal -team -tear -teat -tech -teem -teen -teet -tell -tend -tent -term -tern -tess -test -tete -text -thai -than -that -thaw -thea -thee -them -then -they -thin -this -thor -thou -thud -thug -thus -tick -tide -tidy -tied -tier -ties -tift -tile -till -tilt -time -tina -tine -tint -tiny -tire -toad -toby -todd -tofu -togo -togs -toil -told -toll -tomb -tome -tone -tong -toni -tonk -tons -tony -took -tool -toot -tore -tori -torn -torr -tort -tory -toss -tote -tour -tout -town -toys -trag -tram -trap -tray -tree -trek -trig -trim -trio -trip -trod -trot -troy -true -tsar -tttt -tuba -tube -tuck -tuff -tuft -tuna -tune -tung -turf -turk -turn -tusk -tutu -twig -twin -twit -tyke -type -typo -ucla -ugly -ulan -undo -unit -unix -upon -urea -urge -uris -ursa -usaf -usda -used -user -uses -usgs -usia -usps -ussr -utah -uuuu -vade -vail -vain -vale -vamp -vane -vary -vase -vast -veal -veda -veer -vega -veil -vein -vend -vent -vera -verb -very -vest -veto -vial -vibe -vice -vida -viet -view -viii -vila -vile -vine -visa -vise -vita -vito -viva -vivo -void -volt -voss -vote -vvvv -wack -waco -wade -wadi -wage -wahl -wail -wait -wake -wale -walk -wall -walt -wand -wane -wang -want -ward -ware -warm -warn -warp -wars -wart -wary -wash -wasp -wast -watt -wave -wavy -waxy -ways -weak -weal -wean -wear -webb -weco -weeb -weed -week -weep -wehr -weir -weld -well -welt -went -wept -were -wert -west -wham -what -whee -when -whet -whig -whim -whip -whir -whit -whiz -whoa -whom -whop -whup -wick -wide -wier -wife -wifi -wild -wile -will -wilt -wily -wimp -wind -wine -wing -wink -wino -wins -winy -wipe -wire -wiry -wise -wish -wisp -with -witt -wive -woke -wold -wolf -womb -wong -wont -wood -woof -wool -word -wore -work -worm -worn -wove -wrap -writ -wwww -wynn -xbox -xxxx -yale -yang -yank -yard -yarn -yawl -yawn -yeah -year -yeet -yell -yelp -ymca -yoga -yogi -yoke -yolk -yond -yore -york -yost -your -yoyo -yuck -yuki -yule -yuri -yves -ywca -yyyy -zeal -zero -zest -zeta -zeus -zinc -zing -zion -zips -zone -zoom -zorn -zzzz -10th -1000 -11th -1111 -12th -1234 -13th -14th -1492 -15th -1500 -16th -1600 -17th -1700 -1776 -18th -1800 -1812 -19th -1900 -1910 -1920 -1925 -1930 -1935 -1940 -1945 -1950 -1955 -1960 -1965 -1970 -1975 -1980 -1985 -1990 -1991 -1992 -1993 -1994 -1995 -1996 -1997 -20th -2000 -2001 -2020 -21st -22nd -2222 -23rd -2345 -24th -2468 -25th -26th -27th -28th -29th -30th -3000 -31st -32nd -33rd -3333 -34th -3456 -35th -36th -37th -38th -39th -40th -4000 -41st -42nd -43rd -4321 -44th -4444 -45th -4567 -46th -47th -48th -49th -50th -5000 -51st -52nd -53rd -54th -55th -5555 -56th -5678 -57th -58th -59th -60th -6000 -61st -62nd -63rd -65th -66th -6666 -67th -6789 -68th -69th -70th -7000 -71st -72nd -73rd -74th -75th -76th -77th -7777 -78th -79th -80th -8000 -81st -82nd -83rd -84th -85th -86th -87th -88th -8888 -89th -90th -9000 -91st -92nd -93rd -94th -95th -96th -97th -98th -9876 -99th -9999 -aaron -ababa -aback -abase -abash -abate -abbas -abbey -abbot -abide -abner -abode -abort -about -above -abram -abyss -accra -acorn -acrid -acton -actor -acute -adage -adair -adams -adapt -added -addis -addle -adele -adept -adieu -adler -admit -admix -adobe -adopt -adore -adorn -adult -aegis -affix -afire -afoot -again -agate -agave -agent -agile -aging -agnes -agnew -agone -agony -agree -agway -ahead -aides -aiken -aires -aisle -akers -akron -alamo -alarm -album -alcoa -alden -alder -aleck -aleph -alert -algae -algal -alger -algol -alias -alibi -alice -alien -align -alike -alive -allah -allan -allay -allen -alley -allis -allot -allow -alloy -allyl -allyn -aloft -aloha -alone -along -aloof -aloud -alpha -alsop -altar -alter -alton -alvin -alway -amass -amaze -amber -amble -amend -amide -amigo -amino -amiss -amity -amman -amoco -among -amort -ampex -ample -amply -amuck -amuse -andes -andre -anent -angel -anger -angie -angle -anglo -angry -angst -angus -anime -anion -anise -anita -ankle -annal -annex -annie -annoy -annul -annum -anode -antic -anton -antsy -anvil -aorta -apart -aphid -apple -apply -april -apron -aptly -araby -arden -arena -argon -argot -argue -argus -arhat -aries -arise -arlen -armco -armed -armor -aroma -arose -array -arrow -arson -artie -aruba -ashen -asher -ashes -aside -askew -aspen -assai -assam -assay -asset -aster -astor -atlas -atone -attic -audio -audit -auger -augur -aural -auric -avail -avert -avery -avoid -await -awake -award -aware -awash -awful -awoke -axial -axiom -ayers -aztec -azure -babel -bacon -baden -badge -badly -bagel -baggy -baird -baked -baldy -balky -balmy -balsa -bambi -banal -bandy -banjo -banks -bantu -barge -baron -barre -barry -barth -basal -basel -basic -basil -basin -basis -bassi -basso -baste -batch -bater -bates -bathe -batik -baton -bator -bauer -bawdy -bayda -bayed -bayou -beach -beady -beard -beast -beaux -bebop -becky -bedim -beebe -beech -beefy -befit -befog -began -beget -begin -begun -beige -being -belch -belie -bella -belle -belly -below -beman -bench -benny -bento -berea -beret -berne -berra -berry -berth -beryl -beset -betel -betsy -bette -betty -bevel -bezel -bible -bicep -biddy -biggs -bigot -bilge -billy -binge -biota -birch -birth -bison -bizet -black -blade -blair -blake -blame -blanc -bland -blank -blare -blast -blatz -blaze -bleak -bleat -bleed -bleep -blend -bless -blest -blimp -blind -bling -blink -blinn -bliss -blitz -bloat -bloch -block -bloke -blond -blood -bloom -bloop -blown -bluet -bluff -blunt -blurb -blurt -blush -board -boast -bobby -bogey -boggy -bogus -boise -boney -bongo -bonus -bonze -booky -boone -boost -booth -boots -booty -booze -boozy -borax -boric -boris -borne -boron -bosch -bosom -boson -botch -bough -bound -bourn -bowel -bowen -bowie -boxer -boyar -boyce -boyle -brace -bract -brady -bragg -braid -brain -brake -brand -brant -brash -brass -braun -brave -bravo -brawl -bread -break -bream -breed -brent -brest -brett -breve -brian -briar -bribe -brice -brick -bride -brief -brine -bring -brink -briny -brisk -broad -brock -broil -broke -bronx -brood -brook -broom -broth -brown -bruce -bruit -bruno -brunt -brush -brute -bryan -bryce -buddy -budge -buena -buggy -bugle -buick -build -built -bulge -bulky -bully -bunch -bundy -bunny -burch -buret -burke -burly -burma -burnt -burro -burst -burtt -busch -bushy -butch -buteo -butte -butyl -buxom -buyer -buzzy -byers -bylaw -byrne -byron -byway -cabal -cabin -cable -cabot -cacao -cache -cacti -caddy -cadet -cadre -cagey -caine -cairn -cairo -caleb -calla -calve -camel -cameo -canal -candy -canis -canna -canny -canoe -canon -canto -caper -carat -caret -carey -cargo -carib -carla -carlo -carne -carob -carol -carry -carte -carve -casey -caste -catch -cater -cathy -catty -caulk -cause -cavil -cease -cecil -cedar -celia -ceres -cetus -chafe -chaff -chain -chair -chalk -champ -chang -chant -chaos -chaps -chard -charm -chart -chase -chasm -cheap -cheat -check -cheek -cheer -chemo -chert -chess -chest -chevy -chewy -chibi -chick -chide -chief -child -chile -chili -chill -chime -chimp -china -chine -chirp -chive -chock -choir -choke -chomp -chord -chore -chose -chris -chuck -chuff -chump -chunk -churn -chute -cider -cigar -cilia -cinch -cindy -circa -circe -civet -civic -civil -claim -clamp -clang -clank -clara -clare -clark -clash -clasp -class -claus -clean -clear -cleat -cleft -clerk -click -cliff -climb -clime -cling -clink -clint -clive -cloak -clock -clomp -clone -close -cloth -cloud -clout -clove -clown -cluck -clump -clung -clyde -coach -coast -cobol -cobra -cocky -cocoa -codon -cohen -colby -colon -color -colza -comet -comfy -comic -comma -conch -coney -congo -conic -cooke -cooky -coors -copra -coral -corey -corny -corps -cosec -coset -costa -cotta -cotty -couch -cough -could -count -coupe -court -coven -cover -covet -cowan -cowry -coypu -cozen -crack -craft -craig -cramp -crane -crank -crash -crass -crate -crave -crawl -craze -crazy -creak -cream -credo -creed -creek -creep -creme -creon -crepe -crept -cress -crest -crete -cried -crier -crime -crimp -crisp -criss -croak -crock -croft -croix -crone -crony -crook -croon -cross -crowd -crown -crude -cruel -crumb -crump -crush -crust -crypt -cubic -culpa -cumin -cupid -curia -curie -curio -curly -curry -curse -curve -curvy -cushy -cycad -cycle -cynic -cyril -cyrus -czech -dacca -daddy -daffy -daily -dairy -daisy -dakar -daley -dally -damon -dance -dandy -danny -dante -dares -darry -dater -datum -daunt -david -davis -davit -dealt -deane -death -debar -debby -debit -debra -debug -debut -decaf -decal -decay -decca -decor -decoy -decry -deere -defer -defog -degas -degum -deify -deign -deity -delay -delft -delhi -delia -della -delta -delve -demit -demon -demur -deneb -denim -denny -dense -depot -depth -derby -derek -deter -deuce -devil -devon -dewar -dewey -dhabi -diana -diane -diary -dicta -diego -diety -dietz -digit -dimly -dinah -diner -dingo -dingy -diode -dirac -dirge -dirty -disco -ditch -ditto -ditty -ditzy -divan -dixie -dixon -dizzy -dobbs -dodge -dodgy -dogma -doily -doing -dolan -dolce -dolly -donna -donor -donut -doozy -doria -doric -doris -doubt -douce -dough -douse -dowel -downs -dowry -doyle -dozen -draco -draft -drain -drake -drama -drank -drape -drawl -drawn -dread -dream -dress -dried -drier -drift -drill -drink -drive -droll -drone -drool -droop -dross -drove -drown -druid -drunk -drury -dryad -duane -dubhe -ducat -ducky -duffy -dugan -dully -dulse -dumpy -dunce -durer -dusky -dusty -dutch -duvet -dwarf -dweeb -dwell -dwelt -dwyer -dying -dylan -eagan -eager -eagle -early -earth -easel -eaten -eater -eaton -ebony -ebook -ecard -eclat -ecole -eddie -edgar -edict -edify -edith -edwin -eerie -effie -egret -egypt -eider -eight -eject -elate -elbow -elder -eldon -elect -elegy -elena -elfin -elgin -elide -eliot -elite -ellen -ellis -elmer -elope -elsie -elton -elude -elute -elves -email -embed -ember -emcee -emery -emile -emily -emory -emote -empty -enact -ended -endow -enemy -engel -engle -enjoy -enoch -ensue -enter -entry -envoy -epoch -epoxy -epsom -equal -equip -erase -erato -erich -ernie -ernst -erode -errol -error -erupt -ervin -erwin -essay -essen -essex -ester -estes -estop -ethan -ethel -ether -ethic -ethos -ethyl -etude -eucre -euler -evade -evans -event -every -evict -evoke -ewing -exact -exalt -excel -exert -exile -exist -expel -extol -extra -exude -exult -exxon -faber -fable -facet -facto -faery -fahey -faint -fairy -faith -false -fancy -farad -farce -fargo -fatal -fatty -fault -fauna -faust -feast -feign -feint -felix -felon -femur -fence -fermi -ferry -fetal -fetch -fetid -fetus -fever -fiber -fiche -field -fiend -fiery -fifth -fifty -fight -filch -filet -filly -filmy -filth -final -finch -finer -finny -first -fishy -fiske -fitch -fjord -flack -flail -flair -flake -flaky -flame -flank -flare -flash -flask -fleck -fleet -flesh -flick -flier -fling -flint -flirt -float -flock -flood -floor -flora -floss -flour -flout -flown -floyd -fluff -fluid -fluke -flung -flush -flute -flyer -flynn -foamy -focal -focus -foggy -foist -foley -folic -folio -folly -foote -foray -force -forge -forte -forth -forty -forum -found -fount -fovea -foyer -frail -frame -franc -frank -franz -fraud -frays -freak -freed -freer -freon -fresh -freud -freya -friar -frick -fried -frill -frisk -fritz -frock -front -frost -froth -frown -froze -fruit -fuchs -fudge -fugal -fugue -fully -fungi -funny -furry -furze -fussy -fusty -fuzzy -gable -gabon -gaffe -gains -galen -gamin -gamma -gamut -garry -garth -gassy -gates -gator -gaudy -gauge -gaunt -gauss -gauze -gavel -gavin -gawky -gecko -geese -geigy -gemma -genie -genii -genoa -genre -gents -genus -gerry -getty -getup -ghana -ghent -ghost -ghoul -giant -gibbs -gibby -giddy -giles -gills -gimpy -girth -given -giver -gizmo -glade -gland -glans -glare -glass -glaze -gleam -glean -glenn -glide -glint -gloat -globe -gloom -glory -gloss -glove -glued -gluey -glyph -gnarl -gnash -gnome -going -golly -goode -goody -gooey -goofy -goose -goren -gorge -gorky -gorse -gouda -gouge -gould -gourd -grace -grade -grady -graff -graft -grail -grain -grand -grant -grape -graph -grasp -grass -grata -grate -grave -gravy -graze -great -grebe -greed -greek -green -greer -greet -gregg -greta -grief -grill -grime -grimm -grimy -grind -gripe -grist -groan -groat -groin -groom -grope -gross -group -grout -grove -growl -grown -gruff -grunt -guano -guard -guess -guest -guide -guild -guile -guilt -guise -gules -gully -gumbo -gummy -gunky -gunny -gusto -gusty -gutsy -gyaru -habib -habit -hades -hagen -hager -hague -haifa -haiku -hairy -haiti -haley -halma -halve -hamal -handy -haney -hanky -hanna -hanoi -happy -hardy -harem -harpy -harry -harsh -haste -hasty -hatch -hater -haunt -haven -havoc -haydn -hayes -hazel -heady -healy -heard -heart -heath -heave -heavy -hedge -hefty -heigh -heine -heinz -helen -helga -helix -hello -hence -henna -henri -henry -herbs -heron -hertz -hesse -hetty -hiatt -hicks -hilly -hilum -hindu -hines -hinge -hippo -hippy -hiram -hitch -hoagy -hoard -hobbs -hobby -hodge -hogan -hokan -holly -holst -honda -hondo -honey -hooch -horde -horny -horse -horus -hotel -hough -hound -house -hovel -hover -howdy -hubby -huber -human -humid -humor -humus -hunch -huron -hurry -hurst -hurty -husky -hutch -hydra -hydro -hyena -hying -hyman -icing -idaho -ideal -idiom -idyll -igloo -ileum -iliac -iliad -ilona -image -imbue -impel -imply -inane -inapt -incel -incur -index -india -inept -inert -infer -infix -infra -ingot -inlay -inlet -inman -inner -input -inset -inter -inure -ionic -irate -irene -irish -irony -irvin -irwin -isaac -ising -islam -issue -italy -ivory -jacky -jacob -jaime -james -janet -janos -janus -japan -jason -jaunt -jawed -jazzy -jeans -jelly -jenny -jeres -jerky -jerry -jesse -jesus -jewel -jiffy -jimmy -johns -joint -jolla -jolly -jonas -jones -jorge -josef -joule -joust -jowly -joyce -judas -judge -juice -juicy -jukes -julep -jules -julia -julie -julio -jumbo -jumpy -junco -junky -junta -juror -kabob -kabul -kafka -kajar -kapok -kappa -karen -karma -karol -kathy -katie -kazoo -keats -kebab -keith -kelly -kenya -kerry -ketch -kevin -keyed -keyes -khaki -khmer -kidde -kinky -kiosk -kiowa -kirby -kirov -kitty -klaus -klein -kline -knack -knapp -knead -kneel -knelt -knick -knife -knock -knoll -knott -known -knurl -koala -kodak -kombu -kooky -koran -korea -kraft -kraut -krebs -kruse -kudos -kudzu -kulak -kyoto -laban -label -labor -laden -ladle -lager -lagos -laity -lamar -lance -lange -lanka -lanky -lapel -lapse -larch -lares -large -larry -larva -lasso -latch -later -latex -lathe -latin -latus -laugh -laura -layer -layup -leach -leafy -leaky -leapt -learn -lease -leash -least -leave -ledge -leech -leeds -leery -lefty -legal -leggy -leigh -leila -lemma -lemon -lenin -lenny -leona -leone -leper -leroy -lethe -levee -level -lever -levin -levis -lewis -libel -libya -light -liken -lilac -lilly -limbo -limes -limit -linda -linen -lingo -linus -lipid -lisle -lithe -lived -liven -liver -livid -livre -lloyd -loamy -loath -lobar -lobby -local -locke -locus -lodge -loess -lofty -logan -logic -loire -lolly -loose -lopez -loren -lossy -lotte -lotus -louis -louse -lousy -lower -lowry -loyal -lucas -lucia -lucid -lucky -lucre -luger -lumen -lumpy -lunar -lunch -lunge -lurch -lurid -lusty -luzon -lydia -lying -lykes -lyman -lymph -lynch -lyons -lyric -mabel -macaw -macho -macon -macro -madam -magic -magma -magna -magog -maier -maine -major -maker -malay -malta -mambo -mamma -manga -mange -mango -mangy -mania -manic -manly -manna -manor -manse -maori -maple -march -marco -marcy -mardi -margo -maria -marie -marin -mario -marks -marry -marsh -marty -maser -mason -match -mateo -mater -matte -mauve -mavis -maxim -maybe -mayer -mayor -mayst -mazda -mccoy -mcgee -mckay -mckee -mealy -meant -meaty -mecca -mecum -medal -medea -media -medic -meier -melee -melon -menlo -merck -mercy -merge -merit -merle -merry -meson -messy -metal -meter -metro -meyer -mezzo -miami -micky -micro -midas -midge -midst -might -milan -milch -miles -milky -mills -mimic -mince -minim -minor -minos -minot -minsk -minus -mirth -miser -missy -misty -mitre -mixed -mixup -mizar -mobil -mocha -modal -model -modem -moire -moist -molal -molar -molly -mommy -monad -mondo -monel -money -monic -monte -month -monty -moody -moore -moose -moral -moran -morel -morse -moser -moses -mossy -motel -motet -motif -motor -motto -mould -mound -mount -mourn -mouse -mousy -mouth -movie -mower -moyer -mucus -muddy -muggy -mugho -mulch -mulct -multi -mumbo -mummy -mumps -munch -muong -mural -murky -murre -mushy -music -musky -musty -muzak -myers -mylar -mynah -myron -myrrh -naacp -nacho -nadir -naiad -naive -naked -nancy -nanny -naomi -nappy -nasal -nasty -natal -natty -naval -navel -neath -needy -nehru -nepal -nerve -nervy -never -newel -niche -niece -nifty -niger -night -nikko -ninja -ninth -niobe -nitty -nixon -nobel -noble -nodal -noise -noisy -nolan -nomad -nonce -noose -norma -north -notch -notre -novak -novel -nubia -nudge -nurse -nutty -nylon -nymph -oaken -oases -oasis -obese -objet -occur -ocean -octal -octet -odium -offal -offer -often -ogden -ohmic -olden -olive -olsen -olson -omaha -omega -onion -onset -opera -opium -optic -orate -orbit -order -organ -orion -orono -osaka -oscar -osier -otaku -other -otter -ought -ounce -outer -ouvre -ouzel -ovary -ovate -overt -owens -owing -owner -oxeye -oxide -ozark -ozone -pablo -pabst -paced -paddy -padre -paean -pagan -pager -paine -paint -palsy -pampa -panda -panel -panic -pansy -pants -paoli -papal -papaw -paper -pappy -papua -parch -paris -parka -parke -parks -parry -parse -party -pasha -passe -pasta -paste -pasty -patch -pater -patio -patsy -patti -patty -paula -pauli -paulo -pause -paver -payee -payer -payne -peace -peach -peaky -peale -pearl -pease -pecan -pecos -pedal -pedro -peepy -peggy -penal -pence -penna -penny -peony -peppy -pepsi -perch -percy -perez -peril -perky -perle -perry -perth -pesky -peste -petal -peter -petit -petri -petty -pewee -phage -phase -phlox -phone -phony -photo -phyla -piano -picky -piece -piety -piggy -pilot -pinch -pinto -piotr -pious -piper -pique -pitch -pithy -pivot -pixel -pizza -place -plaid -plain -plane -plank -plant -plasm -plate -plato -playa -plaza -plead -pleat -pliny -pluck -plumb -plume -plump -plunk -plush -pluto -poach -pobox -podge -podia -poesy -point -poise -poker -polar -polio -polis -polka -ponce -pooch -poole -poppy -porch -porte -porto -poser -posey -posit -posse -potts -pouch -pound -power -prado -prank -pratt -preen -press -prexy -priam -price -prick -pride -pried -prima -prime -primp -print -prior -prism -privy -prize -probe -prone -prong -proof -props -prose -proud -prove -prowl -proxy -prude -prune -psalm -psych -puffy -pulse -punch -punic -punky -pupal -pupil -puppy -purge -purse -pusan -pusey -pushy -putty -pygmy -pyrex -qatar -quack -quaff -quail -quake -qualm -quark -quart -quash -quasi -queen -queer -quell -query -quest -queue -quick -quiet -quill -quilt -quinn -quint -quirk -quirt -quite -quito -quota -quote -rabat -rabbi -rabid -rabin -radar -radii -radio -radix -radon -rainy -raise -rajah -rally -ralph -raman -ranch -randy -range -rangy -rants -raoul -rapid -rater -ratio -ravel -raven -razor -reach -ready -realm -reave -rebel -rebut -recur -reedy -reese -reeve -refer -regal -regis -rehab -reich -reign -relax -relay -relic -reman -remit -remix -remus -renal -renew -repel -reply -rerun -reset -resin -retch -retry -reuse -revel -rever -revet -rheum -rhine -rhino -rhoda -rhode -rhyme -ridge -rifle -rigel -riggs -right -rigid -rigor -riley -rilly -rinse -ripen -risen -risky -ritzy -rival -riven -river -rivet -roach -roast -robin -robot -rocky -rodeo -roger -rogue -roman -romeo -rondo -rooky -roomy -roost -rosen -rotor -rouge -rough -round -rouse -route -rover -rowdy -royal -royce -ruben -rubin -ruddy -rufus -rumen -rummy -rumor -runge -runic -runny -runty -rupee -rural -russo -rusty -rutty -ryder -sable -sabra -sachs -sadie -sadly -saggy -saint -salad -salem -salle -sally -salon -salsa -salty -salve -salvo -samba -sammy -samoa -sandy -santa -santo -sappy -sarah -saran -sassy -satan -satin -satyr -sauce -saucy -saudi -sault -sauna -saute -saved -savor -savoy -savvy -saxon -scala -scald -scale -scalp -scamp -scant -scare -scarf -scary -scaup -scene -scent -scion -scoff -scold -scone -scoop -scoot -scope -scops -score -scorn -scott -scour -scout -scowl -scram -scrap -screw -scrim -scrub -scuba -scuff -scull -seamy -sears -sedan -seder -sedge -seedy -seize -selma -senor -sense -seoul -sepal -sepia -sepoy -septa -serge -serif -serum -serve -servo -seton -setup -seven -sever -shack -shade -shady -shaft -shake -shako -shaky -shale -shall -shame -shank -shape -shard -share -shari -shark -sharp -shave -shawl -sheaf -shear -sheen -sheep -sheer -sheet -sheik -shelf -shell -shied -shift -shill -shine -shiny -shire -shirk -shirt -shish -shoal -shock -shoji -shone -shook -shoot -shore -short -shout -shove -shown -showy -shred -shrew -shrub -shrug -shuck -shunt -shush -sibyl -sidle -siege -siena -sieve -sight -sigma -silas -silky -silly -silty -simon -sinai -since -sinew -singe -sinus -sioux -siren -sisal -situs -sixth -sixty -skate -skeet -skied -skier -skies -skiff -skill -skimp -skirt -skulk -skull -skunk -skype -slack -slain -slake -slang -slant -slash -slate -sleek -sleep -sleet -slept -slice -slick -slide -slime -slimy -sling -sloan -sloop -slope -slosh -sloth -slump -slung -slurp -slush -smack -small -smart -smash -smear -smell -smelt -smile -smirk -smite -smith -smock -smoke -smoky -snack -snafu -snail -snake -snare -snark -snarl -sneak -sneer -snell -snick -snide -sniff -snipe -snook -snoop -snore -snort -snout -snowy -snuff -soapy -sober -sofia -soggy -solar -solid -solon -solve -somal -sonar -sonic -sonny -sooth -sorry -sough -sound -sousa -south -space -spade -spain -spare -spark -spasm -spate -spawn -speak -spear -speck -speed -spell -spend -spent -sperm -spica -spice -spicy -spied -spike -spiky -spill -spilt -spine -spiny -spire -spiro -spite -spitz -splat -splay -split -spoil -spoke -spoof -spook -spool -spoon -spore -sport -spout -spray -spree -sprig -sprue -spume -spunk -spurn -spurt -squad -squat -squaw -squid -stack -stacy -staff -stage -stagy -stahl -staid -stain -stair -stake -stale -stalk -stall -stamp -stand -stank -staph -stare -stark -starr -start -stash -state -stave -stays -stead -steak -steal -steam -steed -steel -steen -steep -steer -stein -stern -steve -stick -stiff -stile -still -stilt -sting -stink -stint -stock -stoic -stoke -stole -stomp -stone -stony -stood -stool -stoop -store -stork -storm -story -stout -stove -strap -straw -stray -strep -strip -strom -strop -strum -strut -stuck -study -stuff -stump -stung -stunk -stunt -sturm -style -styli -suave -sudan -sugar -suing -suite -sulfa -sulky -sully -sumac -sunny -super -supra -surge -susan -sushi -susie -swain -swami -swamp -swank -swarm -swart -swath -swear -sweat -swede -sweep -sweet -swell -swelt -swept -swift -swine -swing -swipe -swirl -swish -swiss -swoop -sword -swore -sworn -swung -sybil -sykes -sylow -synge -synod -syria -syrup -tabby -table -taboo -tacit -tacky -taffy -tahoe -taint -taken -talky -tally -talon -talus -tamer -tampa -tango -tangy -tansy -tanya -taper -tapir -tapis -tappa -tardy -tarot -tarry -taste -tasty -tater -tatty -taunt -tawny -teach -tease -tecum -teddy -teeth -telex -tempo -tempt -tenet -tenon -tenor -tense -tenth -tepee -tepid -terra -terre -terry -terse -testy -texan -texas -thank -theft -their -theme -there -these -theta -thick -thief -thigh -thine -thing -think -third -thong -thorn -those -three -threw -throb -throw -thrum -thule -thumb -thump -thyme -tiara -tiber -tibet -tibia -tidal -tiger -tight -tilde -tilth -timex -timid -timon -tinge -tioga -tippy -tipsy -tired -titan -tithe -title -titus -toady -toast -today -token -tokyo -tommy -tonal -tonic -tooth -topaz -topic -topsy -torah -torch -torso -torus -total -totem -touch -tough -towel -tower -toxic -toxin -trace -track -tract -tracy -trade -trail -train -trait -tramp -trans -traps -trash -trawl -tread -treat -trend -tress -triad -trial -tribe -trick -tried -trill -tripe -trite -troll -troop -trout -truce -truck -trudy -truly -trump -trunk -truss -trust -truth -tubby -tudor -tulip -tulle -tulsa -tummy -tunic -tunis -tuple -turin -turvy -tutor -twain -tweak -tweed -tweet -twerp -twice -twill -twine -twins -twirl -twist -tying -tyler -typic -tyson -udder -ulcer -ultra -umber -umbra -unary -uncle -uncut -under -unify -union -unite -unity -unlit -untie -until -unwed -unzip -upend -upper -upset -upton -urban -urine -usage -usher -usual -usurp -usury -utica -utile -utter -vacua -vacuo -vaduz -vague -valet -valid -value -valve -vance -vapor -vault -veery -vegan -velar -veldt -vella -venal -venom -venue -venus -verde -verdi -verge -verna -verne -versa -verse -verve -vetch -vibes -vicar -vichy -vicky -video -vigil -villa -vinyl -viola -viper -viral -virgo -virus -visit -visor -vista -vitae -vital -vitro -vivid -vixen -vocal -vogel -vogue -voice -volta -volvo -vomit -voter -vouch -vowed -vowel -vying -waals -wacke -wacky -wafer -waged -wager -wages -wagon -waifu -waist -waite -waive -waken -waldo -walls -wally -walsh -waltz -warty -washy -waste -watch -water -watts -waxen -wayne -weary -weave -weber -wedge -weedy -weeks -weigh -weird -weiss -welch -wells -welsh -wendy -whack -whale -wharf -wheat -wheel -whelk -whelm -whelp -where -which -whiff -while -whine -whiny -whirl -whisk -white -whole -whoop -whose -widen -widow -width -wield -wiley -willa -wills -wilma -wince -winch -windy -wired -wishy -wispy -witch -withe -withy -witty -wolfe -wolff -wolve -woman -women -woods -woody -woozy -wordy -world -wormy -worry -worse -worst -worth -wotan -would -wound -woven -wrack -wrath -wreak -wreck -wrest -wring -wrist -write -wrong -wrote -wuhan -wyatt -wyeth -wylie -wyman -wyner -xenon -xerox -xylem -yacht -yahoo -yalta -yaqui -yates -yearn -yeast -yeats -yemen -yield -yodel -yoder -yokel -young -youth -yucca -yukon -yummy -zaire -zazen -zebra -zeiss -zesty -zilch -zippy -zloty -zomba -100th -101st -bubbly -chuuni -cuddle -cuddly -dragon -katana -kawaii -kitten -matcha -plural -rigged -ruined -sakura -senpai -social -soften -solemn -sonora -source -sparge -specks -speech -sperry -sphere -sphinx -spider -spiffy -spinal -spiral -spirit -spleen -splice -spline -spoils -spoken -sponge -spongy -spooky -sports -sporty -spotty -spouse -sprain -sprang -sprawl -spread -spring -sprint -sprite -sprout -spruce -sprung -squall -square -squash -squeak -squibb -squint -squire -squirt -stable -stairs -stance -staple -starch -starry -static -statue -status -steele -stella -stench -stereo -stifle -stingy -stinky -stitch -stooge -storey -strafe -streak -stream -street -stress -strewn -strict -stride -strife -strike -strive -strobe -strode -stroll -strong -struck -strung -stuart -stucco -studio -stuffy -stupor -sturdy -stylus -sublet -submit -subpar -subtly -suburb -subway -sudden -sudoku -suffer -suffix -suitor -sulfur -sullen -sultry -summer -summon -sunset -supper -supply -surely -surfer -survey -sutton -swampy -sweaty -swerve -switch -swivel -swoosh -sylvan -symbol -system -tables -tablet -tabula -tackle -tacoma -taking -talcum -talent -tallow -tamale -tamper -tanned -target -tariff -tarmac -tartar -tartly -tassel -tattle -tattoo -tavern -teensy -tenant -tenney -tennis -tensor -theory -thesis -thinly -thirty -thorny -thrash -thread -thrift -thrill -thrive -throat -throes -throng -ticket -tidbit -tiling -timber -timing -tingle -tingly -tinker -tinsel -tipoff -tipped -tipper -tiptop -tiring -tissue -toilet -tomato -tongue -tonsil -topple -toward -tragic -trance -travel -treble -tremor -trench -triage -tricky -trifle -tripod -triton -trophy -trough -trowel -trudge -trunks -tulane -tumble -tunnel -turban -turkey -turret -turtle -tussle -twelve -twenty -twisty -twitch -tyburn -tycoon -umpire -unable -unbend -unbent -unclad -unclip -unclog -uncork -undead -undone -unease -uneasy -uneven -unfair -unfold -unglue -unholy -unhook -unique -unison -unkind -unless -unlock -unmade -unpack -unpaid -unplug -unread -unreal -unrest -unripe -unroll -unruly -unsafe -unsaid -unseen -unsent -unsnap -unsold -unsure -untidy -untold -untrue -unused -unveil -unwary -unwell -unwind -unworn -upbeat -update -upheld -uphill -uphold -upload -uproar -uproot -upside -uptake -uptown -upward -upwind -urbane -urchin -urgent -urging -usable -useful -utmost -utopia -vacant -vacate -vacuum -valeur -valium -valley -vanish -vanity -varied -vastly -veggie -velcro -vellum -velvet -vendor -venial -verify -verity -versus -vessel -viable -viewer -violet -violin -virgil -vision -visual -vivian -volley -volume -voting -voyage -vulcan -waffle -waggle -waking -walkie -walnut -walrus -walton -wanted -warmth -warren -wasabi -washed -washer -waving -wealth -weapon -weasel -whacky -whinny -whoops -whoosh -widely -widget -wilder -wildly -wilkes -willed -willow -window -winner -winnie -winter -wiring -wisdom -wizard -wobble -wobbly -wonder -wooing -wreath -wrench -writhe -yamaha -yearly -yeasty -yellow -yippee -yogurt -yonder -zealot -zodiac -zombie -zoning -zurich diff --git a/roseh.moe.go b/roseh.moe.go index 140b1de..d3e96bf 100644 --- a/roseh.moe.go +++ b/roseh.moe.go @@ -8,7 +8,6 @@ import ( "crypto/subtle" "embed" "encoding/base64" - "encoding/binary" "encoding/hex" "flag" "fmt" @@ -21,7 +20,8 @@ import ( "sync" "time" - "gitlab.com/rhogenson/roseh.moe/internal/wordlist" + "gitlab.com/rhogenson/roseh.moe/internal/hole" + "gitlab.com/rhogenson/roseh.moe/internal/pwhash" ) var ( @@ -131,19 +131,8 @@ type wormholeTemplateArgs struct { Hole string } -func makeHole() string { - const nWords = 10 - buf := make([]byte, 2*nWords) - rand.Read(buf) - words := make([]string, nWords) - for i := range words { - words[i] = wordlist.Words[binary.NativeEndian.Uint16(buf[2*i:])&0x1fff] - } - return strings.Join(words, "-") -} - func wormhole(w http.ResponseWriter, r *http.Request) { - if err := wormholeTemplate.Execute(w, wormholeTemplateArgs{Self: *selfURL, Hole: makeHole()}); err != nil { + if err := wormholeTemplate.Execute(w, wormholeTemplateArgs{Self: *selfURL, Hole: hole.New()}); err != nil { log.Printf("Warning: wormhole: %s", err) } } @@ -358,6 +347,12 @@ func checkCSRFToken(r *http.Request) error { return nil } +func checkPassword(password string) bool { + expectedHash, salt := notepadPassword[:len(notepadPassword)-pwhash.SaltSize], notepadPassword[len(notepadPassword)-pwhash.SaltSize:] + hash, err := pwhash.Hash(password, salt) + return err == nil && subtle.ConstantTimeCompare(hash, expectedHash) != 0 +} + var ( //go:embed templates/login.html.template loginTemplateString string @@ -380,8 +375,7 @@ func login(w http.ResponseWriter, r *http.Request) { http.Error(w, "bad CSRF token", http.StatusBadRequest) return } - hash := sha256.Sum256([]byte(r.FormValue("password"))) - if subtle.ConstantTimeCompare(notepadPassword, hash[:]) == 0 { + if !checkPassword(r.FormValue("password")) { if err := loginTemplate.Execute(w, loginTemplateArgs{ Error: true, CSRFToken: r.FormValue("csrf-token"), diff --git a/tools/finditer/finditer.go b/tools/finditer/finditer.go new file mode 100644 index 0000000..fbd0363 --- /dev/null +++ b/tools/finditer/finditer.go @@ -0,0 +1,43 @@ +package main + +import ( + "encoding/hex" + "fmt" + "sort" + "testing" + "time" + + "gitlab.com/rhogenson/roseh.moe/internal/pwhash" +) + +func mustHex(s string) []byte { + b, err := hex.DecodeString(s) + if err != nil { + panic(err) + } + return b +} + +const password = "emcee polio cardiac disclose superglue clapper cruelness stonework tingly unarmored" + +var salt = mustHex("a0aa6971f38827e5") + +var iterations int + +func BenchmarkHashIter(b *testing.B) { + for b.Loop() { + pwhash.HashIter(password, salt, iterations) + } +} + +func main() { + const targetDuration = 5 * time.Second + for iterations = 8192; time.Duration(testing.Benchmark(BenchmarkHashIter).NsPerOp()) < targetDuration; iterations *= 2 { + } + lo := iterations / 2 + hi := iterations + fmt.Println(lo + sort.Search(hi-lo, func(i int) bool { + iterations = lo + i + return time.Duration(testing.Benchmark(BenchmarkHashIter).NsPerOp()) > targetDuration + })) +} diff --git a/tools/hashpw/hashpw.go b/tools/hashpw/hashpw.go new file mode 100644 index 0000000..c75fa2e --- /dev/null +++ b/tools/hashpw/hashpw.go @@ -0,0 +1,34 @@ +package main + +import ( + "crypto/rand" + "fmt" + "os" + + "gitlab.com/rhogenson/roseh.moe/internal/pwhash" + "golang.org/x/term" +) + +func hashpw() error { + fmt.Fprint(os.Stderr, "Enter password: ") + password, err := term.ReadPassword(int(os.Stdin.Fd())) + fmt.Fprintln(os.Stderr) + if err != nil { + return err + } + salt := make([]byte, pwhash.SaltSize) + rand.Read(salt) + hash, err := pwhash.Hash(string(password), salt) + if err != nil { + return err + } + fmt.Printf("%x%x\n", hash, salt) + return nil +} + +func main() { + if err := hashpw(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} diff --git a/tools/hole/hole.go b/tools/hole/hole.go index d701c40..c6946f0 100644 --- a/tools/hole/hole.go +++ b/tools/hole/hole.go @@ -1,36 +1,54 @@ +// The hole command is a CLI uploader tool for the roseh.moe wormhole. +// +// # Magic wormhole +// +// The name is inspired by the original "magic wormhole" library. The goal is to +// get a file from one computer to another without a USB stick, Including cases +// where scp might not be available. This includes transferring files to your +// phone, for example, although a USB cord might still be more convenient when +// moving many files. It should also work over restrictive firewalls. You should +// be able to use the wormhole as long as you can access http://roseh.moe in +// a browser. +// +// # Usage example +// +// The following shows a typical interaction with the tool +// +// $ hole file.pdf +// https://roseh.moe/wormhole/dv-32-ethos-aztec-shako-spoils-2y-dwarf-sand-any +// Waiting for upload... +// +// +// Then, on another machine: +// +// $ curl https://roseh.moe/wormhole/dv-32-ethos-aztec-shako-spoils-2y-dwarf-sand-any > file.pdf +// +// # Web interface +// +// There's also a web interface available for the wormhole, available at +// https://roseh.moe/wormhole. package main import ( - "crypto/rand" - "encoding/binary" "flag" "fmt" "io" "mime/multipart" "net/http" "os" - "strings" - "gitlab.com/rhogenson/roseh.moe/internal/wordlist" + "gitlab.com/rhogenson/roseh.moe/internal/hole" ) var url = flag.String("url", "https://roseh.moe", "server URL") -func makeHole() string { - const nWords = 10 - buf := make([]byte, 2*nWords) - rand.Read(buf) - words := make([]string, nWords) - for i := range words { - words[i] = wordlist.Words[binary.NativeEndian.Uint16(buf[2*i:])&0x1fff] - } - return strings.Join(words, "-") -} - -func hole() error { +func upload() error { args := flag.Args() - if len(args) != 1 { - return fmt.Errorf("usage error") + if len(args) == 0 { + return fmt.Errorf("usage error: missing filename") + } + if len(args) > 1 { + return fmt.Errorf("usage error: too many positional arguments") } fileName := args[0] f, err := os.Open(fileName) @@ -38,18 +56,19 @@ func hole() error { return err } defer f.Close() - hole := makeHole() + hole := hole.New() fmt.Println(*url + "/wormhole/" + hole) + fmt.Fprintln(os.Stderr, "Waiting for upload...") resp, err := http.Get(*url + "/wormhole/" + hole + "/ready") if err != nil { - return err + return fmt.Errorf("check wormhole ready: %s", err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - return fmt.Errorf("%s", resp.Status) + return fmt.Errorf("check wormhole ready: status: %s", resp.Status) } if _, err := io.Copy(io.Discard, resp.Body); err != nil { - return err + return fmt.Errorf("check wormhole ready: read response: %s", err) } pipeReader, pipeWriter := io.Pipe() multipartWriter := multipart.NewWriter(pipeWriter) @@ -57,15 +76,15 @@ func hole() error { defer pipeWriter.Close() part, err := multipartWriter.CreateFormFile("file", fileName) if err != nil { - fmt.Fprintln(os.Stderr, err) + pipeWriter.CloseWithError(fmt.Errorf("create multipart reader: %s", err)) return } if _, err := io.Copy(part, f); err != nil { - fmt.Fprintln(os.Stderr, err) + pipeWriter.CloseWithError(fmt.Errorf("write body: %s", err)) return } if err := multipartWriter.Close(); err != nil { - fmt.Fprintln(os.Stderr, err) + pipeWriter.CloseWithError(fmt.Errorf("write trailer: %s", err)) return } }() @@ -75,7 +94,7 @@ func hole() error { } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - return fmt.Errorf("%s", resp.Status) + return fmt.Errorf("upload: status: %s", resp.Status) } io.Copy(os.Stderr, resp.Body) fmt.Fprintln(os.Stderr) @@ -83,9 +102,28 @@ func hole() error { } func main() { + flag.Usage = func() { + fmt.Fprint(os.Stderr, `Usage: hole FILE +Create a one-time wormhole that allows a specific client to download a +file. Prints the URL to download the file and then hangs until the file +is downloaded. + +Example: + $ hole file.pdf + https://roseh.moe/wormhole/dv-32-ethos-aztec-shako-spoils-2y-dwarf-sand-any + Waiting for upload... + + +Then, on another machine: + $ curl https://roseh.moe/wormhole/dv-32-ethos-aztec-shako-spoils-2y-dwarf-sand-any > file.pdf + +Flags: +`) + flag.PrintDefaults() + } flag.Parse() - if err := hole(); err != nil { - fmt.Fprintln(os.Stderr, err) + if err := upload(); err != nil { + fmt.Fprintf(os.Stderr, "hole: %s\n", err) os.Exit(1) } } -- cgit v1.3.1