commit dac995a33eb8d546839d0a91614b0d1bd7d1dd6a Author: root Date: Tue Mar 24 14:44:15 2026 -0700 initial commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..51ee92d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +# ---------- Dockerfile ---------- +# Base image – PHP + Apache +FROM php:apache + +# Install Python, NGINX, Supervisor and pip +RUN apt-get update && apt-get install -y \ + python3 \ + python3-pip \ + nginx \ + supervisor \ + && rm -rf /var/lib/apt/lists/* + +# Install Python dependencies +# (add any other libraries you need here) +RUN pip3 install --no-cache-dir \ + flask \ + pyyaml + +# Copy your application code & config files +# Website Files +COPY www/ /var/www/html +# Python files +COPY api/ /usr/src/app/ +# Config Files +COPY apache_ports.conf /etc/apache2/ports.conf +COPY apache_vhost.conf /etc/apache2/sites-available/000-default.conf +COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf + +# Expose the ports you care about +EXPOSE 80 + +# Start Supervisor +CMD ["/usr/bin/supervisord", "-n"] \ No newline at end of file diff --git a/apache_ports.conf b/apache_ports.conf new file mode 100644 index 0000000..b1422ea --- /dev/null +++ b/apache_ports.conf @@ -0,0 +1,5 @@ +# Listen on 8080 inside the container +Listen 8080 + +# If you still want Apache to listen on 80 (rare), add it back: +# Listen 80 \ No newline at end of file diff --git a/apache_vhost.conf b/apache_vhost.conf new file mode 100644 index 0000000..07a9be5 --- /dev/null +++ b/apache_vhost.conf @@ -0,0 +1,14 @@ + + ServerAdmin webmaster@localhost + DocumentRoot /var/www/html + + # Log files + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + # If you need PHP processing + + AllowOverride All + Require all granted + + \ No newline at end of file diff --git a/api/app.py b/api/app.py new file mode 100644 index 0000000..54b691f --- /dev/null +++ b/api/app.py @@ -0,0 +1,430 @@ +#!/usr/bin/env python3 + +# yo dawg i heard you like libraries +from __future__ import annotations +import random +import string +import yaml +from datetime import datetime +from pathlib import Path +from typing import List, Iterable, Set, Dict, Any +from flask import Flask, jsonify, request, Response +import json, time, hashlib + +# System Variables +words = [] +simple_words = [] +HASH_FILE = "/opt/pwdgen/hash_record.txt" +password_hashes =set() +SPECIAL_SET = "!@#$%^&*(),.<>?~`;:|][}{=-+_" +WORDS_FILE = "dict.yaml" +password_types = [ + "generate_standard_password", + "generate_windows_ad_password", + "generate_simple_password" +] + +################################################# +# Hash Record Functions +################################################# +if not HASH_FILE.exists(): + # Nothing to load – create an empty file for future use + HASH_FILE.touch(exist_ok=True) +try: + with HASH_FILE.open("r", encoding="utf-8") as fh: + password_hashes = {line.strip() for line in fh if line.strip()} +except OSError as exc: + # If we cannot read the file we fall back to an empty set; the + # application will continue to work, but any persisted hashes + # will be lost. + print(f"Warning: cannot read hash file {HASH_FILE!s}: {exc}") + password_hashes = set() + +def save_hashes() -> None: + # Write to a temporary file first + tmp_path = HASH_FILE.with_name(HASH_FILE.name + ".tmp") + try: + with tmp_path.open("w", encoding="utf-8") as fh: + for h in sorted(password_hashes): + fh.write(f"{h}\n") + # Replace the original file atomically + tmp_path.replace(HASH_FILE) + except OSError as exc: + print(f"Error: could not write hash file {HASH_FILE!s}: {exc}") + +################################################# +# YAML Handler +################################################# +with open(WORDS_FILE, "r", encoding="utf-8") as fh: + data = yaml.safe_load(fh) + +# Ensure the key exists and is a list; otherwise return empty list. +raw_words = data.get("words") if isinstance(data, dict) else None +if not isinstance(words, list): + raise ValueError(f"YAML file {path!s} must contain a top-level 'words' list") + +# Ensure the key exists and is a list; otherwise return empty list. +raw_simple_words = data.get("simple_words") if isinstance(data, dict) else None +if not isinstance(words, list): + raise ValueError(f"YAML file {path!s} must contain a top-level 'words' list") + +# Strip whitespace and keep only non-empty words +words = [w.strip() for w in raw_words if isinstance(w, str) and w.strip()] +simple_words = [w.strip() for w in raw_simple_words if isinstance(w, str) and w.strip()] +total_words = len(words) + len(simple_words) + +# Declare Descriptor after loading words + +password_function_descriptor= { + "generate_standard_password": { + "name": "Standard Password", + "type": "0", + "description": f"From word lists totalling {total_words} word this algorithm selects 60 of these words that are less than 13 characters. From these 60, it uses the one with the index of the current second, and depending on this word length, it may or may not select additional words from the 60. It then randomly selects an integer and some special characters and randomly puts these all together into one string that is this password." + } + , + "generate_windows_ad_password": { + "name": "Windows AD Password", + "type": "1", + "description": "This password is always in the following format: $Word1Word2Number$
- Each word is less than 7 characters, the number is 3 digits, and the $ represents a Special Charater." + } + , + "generate_simple_password": { + "name": "Simple Password", + "type": "2", + "description": f"This simple password is in the following format: !Password123 - this pulls from a list of {len(simple_words)} simple words." + } +} + +################################################# +# Flask Routes and Helpers +################################################# +app = Flask(__name__) + +@app.route('/get_password', methods=['GET']) +def get_password(): + pwd_index = request.args.get('pwd_index') + # Check for presence + if pwd_index is None: + print("Missing required query parameter 'pwd_index'") + return jsonify({ + "error": "Missing required query parameter 'pwd_index'" + }), 400 # 400 Bad Request + # Check for int + try: + index = int(pwd_index) + except ValueError: + print(f"Parameter 'index' must be an integer, got '{pwd_index}'") + return jsonify({ + "error": f"Parameter 'index' must be an integer, got '{pwd_index}'" + }), 400 + # Check bounds + if index < 0 or index >= len(password_types): + print(f"Index {index} is out of bounds (0 ≤ index < {len(password_types)})") + return jsonify({ + "error": f"Index {index} is out of bounds (0 ≤ index < {len(password_types)})", + "password_types": password_types + }), 404 # 404 Not Found + + # Success – return the password + return jsonify({ + "password": get_password_by_index(index) + }), 200 + +@app.route('/verbose_password', methods=['GET']) +def verbose_password(): + pwd_index = request.args.get('pwd_index') + # Check for presence + if pwd_index is None: + return jsonify({ + "error": "Missing required query parameter 'pwd_index'" + }), 400 # 400 Bad Request + # Check for int + try: + index = int(pwd_index) + except ValueError: + return jsonify({ + "error": f"Parameter 'index' must be an integer, got '{pwd_index}'" + }), 400 + # Check bounds + if index < 0 or index >= len(password_types): + return jsonify({ + "error": f"Index {index} is out of bounds (0 ≤ index < {len(password_types)})", + "password_types": password_types + }), 404 # 404 Not Found + # Success – return the result + result = { + "password": get_password_by_index(index), + "descriptor": password_function_descriptor[password_types[index]], + "password count": len(password_hashes) + } + return jsonify(result), 200 + +@app.route('/custom_password', methods=['POST']) +def custom_password(): + if not request.is_json: + return jsonify(error="Request body must be JSON"), 400 + + payload = request.get_json() + + # Basic presence check – you can relax this if you want defaults + required_keys = {"w_min", "w_max", "w_count", "s_char", "num_len"} + missing = required_keys - payload.keys() + if missing: + return jsonify(error=f"Missing keys: {', '.join(missing)}"), 400 + + try: + password = generate_custom_password(payload) + except ValueError as exc: + return jsonify(error=str(exc)), 400 + + return jsonify({ + "password": password + }), 200 + +@app.route('/get_types', methods=['GET']) +def get_types(): + return jsonify(password_function_descriptor) + +@app.route('/get_count', methods=['GET']) +def get_count(): + password_count = len(password_hashes) + result = { + "total_passwords": password_count + } + return jsonify(result) + + +def get_password_by_index(pwd_index: int): + if pwd_index < 0 or pwd_index >= len(password_types): + raise IndexError(f"Index {pwd_index} is out of range for list of length {len(password_types)}") + func_name = password_types[pwd_index] + # Look up the actual function object in the module namespace. + func = globals().get(func_name) + if not callable(func): + raise ValueError(f"Function name '{func_name}' does not refer to a callable") + return func() + +################################################# +# Password Generators +################################################# +# Standard Password Generator +# This is excessively complicated +def generate_standard_password() -> str: + candidates = [w for w in words if len(w) < 13] + if not candidates: + raise ValueError("No words of length < 13 found") + # Shuffle the list and grab the first 60 + random.shuffle(candidates) + candidates = candidates[:60] + # Grab a random-ish word based on the time + sec = int(time.time()) + word1 = candidates[sec % len(candidates)] + len1 = len(word1) + # Start building the password + password = "" + # If it picked a short word, add more stuff + if len1 < 5: + word2 = random.choice(words) + len2 = len(word2) + # If this picked a really short word, add moar things + if len2 < 4: + word3 = random.choice(words) + return type3(word1, word2, word3) + password = type2(word1, word2) + # If it picked a really long word, this will be fine + if len1 > 8: + password = type1(word1) + # If the first word is medium-sized, get one more + word2 = random.choice(words) + password = type2(word1, word2) + # Check, and return password + if check_and_add_hash(password): + return password + else: + return "Somehow a password was duplicated" + +# Standard Password Helper Functions +# For one really long word +def type1(w1: str) -> str: + num1 = rand_int(100, 9999) + sym = rand_symbol_set(SPECIAL_SET, 3) + components = [ucfirst(w1), str(num1)] + sym + shuffle_list(components) + return "".join(components) +# For two medium-sized words +def type2(w1: str, w2: str) -> str: + num2 = rand_int(100, 9999) + sym = rand_symbol_set(SPECIAL_SET, 3) + components = [ucfirst(w1), ucfirst(w2), str(num2)] + sym + shuffle_list(components) + return "".join(components) +# At least two tiny words +def type3(w1: str, w2: str, w3: str) -> str: + num3 = rand_int(100, 9999) + sym = rand_symbol_set(SPECIAL_SET, 4) + components = [ucfirst(w1), ucfirst(w2), ucfirst(w3), str(num3)] + sym + shuffle_list(components) + return "".join(components) + +# Windows AD Password +def generate_windows_ad_password() -> str: + short_words = [w for w in simple_words if len(w) < 7] + if len(short_words) < 2: + raise ValueError("Need at least two words of length < 7") + # Get two words + w1, w2 = random.sample(short_words, 2) + # Get two symbols and a 3-digit number + sym_set = "!@#$%^&*()[]{}|-+<>?" + symbols = rand_symbol_set(sym_set, 2) + number = rand_int(100, 999) + # Build, check, and return password + password = f"{symbols[0]}{ucfirst(w1)}{ucfirst(w2)}{number}{symbols[1]}" + if check_and_add_hash(password): + return password + else: + return "Somehow a password was duplicated" + +# Simple Password +def generate_simple_password() -> str: + candidates = [w for w in words if 7 <= len(w) <= 12] + if not candidates: + raise ValueError("No words of length 7-12 found") + # Get a random word, number, and SC + word = random.choice(candidates) + symbol = random.choice("!@#$%^&*()") + number = rand_int(100, 999) + # Build, check, and return password + password = f"{symbol}{ucfirst(word)}{number}" + if check_and_add_hash(password): + return password + else: + return "Somehow a password was duplicated" + + +################################################# +# Custom Password Generator +################################################# + +def generate_custom_password(params: Dict[str, Any]) -> str: + + # Helper function for range + def _num_range(num_len: int) -> tuple[int, int] | None: + mapping = { + 0: None, + 1: (0, 9), + 2: (10, 99), + 3: (100, 999), + 4: (1000, 9999), + 5: (10000, 99999), + 6: (100000, 999999), + 7: (1000000, 9999999), + 8: (10000000, 99999999), + } + return mapping.get(num_len) + + # 2.1 Pull and validate parameters + w_min = int(params.get('w_min', 3)) + w_max = int(params.get('w_max', 10)) + w_count = int(params.get('w_count', 2)) + s_char = int(params.get('s_char', 2)) + num_len = int(params.get('num_len', 3)) + words_raw = list(params.get('words', [])) + + # Basic sanity checks + if not (3 <= w_min <= 10): + raise ValueError("w_min must be between 3 and 10") + if not (3 <= w_max <= 10): + raise ValueError("w_max must be between 3 and 10") + if w_min > w_max: + raise ValueError("w_min cannot be greater than w_max") + if not (1 <= w_count <= 5): + raise ValueError("w_count must be between 1 and 5") + if not (0 <= s_char <= 4): + raise ValueError("s_char must be between 0 and 4") + if not (0 <= num_len <= 8): + raise ValueError("num_len must be between 0 and 8") + + # 2.2 Filter the word list by length + candidates = [w for w in words if w_min <= len(w) <= w_max] + if len(candidates) < w_count: + raise ValueError( + f"Not enough words of length {w_min}-{w_max}. " + f"Need {w_count}, found {len(candidates)}." + ) + + # 2.3 Randomly pick words and capitalize first letter + rng = random.SystemRandom() # cryptographically secure PRNG + selected_words = rng.sample(candidates, w_count) + selected_words = [w.capitalize() for w in selected_words] + + # Generate the numeric block (if required) + num_part = "" + num_range = _num_range(num_len) + if num_range: + low, high = num_range + num_part = str(rng.randint(low, high)) + + # --------------------------------------------------------------------- # + # Pick special characters + # --------------------------------------------------------------------- # + special_chars = "!@#$%^&*()[]{}|-+<>?" + shuffled_specials = list(special_chars) + rng.shuffle(shuffled_specials) + specials = "".join(shuffled_specials[:s_char]) + + # --------------------------------------------------------------------- # + # Assemble all pieces into a list, shuffle, and join + # --------------------------------------------------------------------- # + all_parts: List[str] = selected_words + if num_part: + all_parts.append(num_part) + if specials: + # We insert specials as individual characters (mirroring PHP code) + all_parts.extend(list(specials)) + + rng.shuffle(all_parts) + password = "".join(all_parts) + + return password + +################################################# +# Password helper functions +################################################# + +# Return the word with its first character capitalised +def ucfirst(word: str) -> str: + return word[0].upper() + word[1:] if word else "" + +def shuffle_list(items: List[str]) -> None: + random.shuffle(items) + +def rand_int(low: int, high: int) -> int: + return random.randint(low, high) + +def rand_symbol_set(symbols: str, n: int) -> List[str]: + return random.sample(symbols, n) + +# Return True when password is unused +def check_and_add_hash(password: str) -> bool: + def sha256_hex(s: str) -> str: + return hashlib.sha256(s.encode('utf-8')).hexdigest() + hash_value = sha256_hex(password) + if hash_value in password_hashes: + return False + # Hash was missing – add it and report that it was newly inserted. + password_hashes.add(hash_value) + save_hashes() + return True + +################################################# +# Main Function +################################################# + +if __name__ == "__main__": + + ###################################### + # Flask API + ###################################### + + app.run(debug=False, host='0.0.0.0', port=5000) + diff --git a/api/dict.yaml b/api/dict.yaml new file mode 100644 index 0000000..a4ce0b5 --- /dev/null +++ b/api/dict.yaml @@ -0,0 +1,9074 @@ +--- + +words: +- abacus +- abdomen +- abdominal +- abide +- abiding +- ability +- ablaze +- able +- abnormal +- abrasion +- abrasive +- abreast +- abridge +- abroad +- abruptly +- absence +- absentee +- absently +- absinthe +- absolute +- absolve +- abstain +- abstract +- absurd +- accent +- acclaim +- acclimate +- accompany +- account +- accuracy +- accurate +- accustom +- acetone +- achiness +- aching +- acid +- acorn +- acquaint +- acquire +- acre +- acrobat +- acronym +- acting +- action +- activate +- activator +- active +- activism +- activist +- activity +- actress +- acts +- acutely +- acuteness +- aeration +- aerobics +- aerosol +- aerospace +- afar +- affair +- affected +- affecting +- affection +- affidavit +- affiliate +- affirm +- affix +- afflicted +- affluent +- afford +- affront +- aflame +- afloat +- aflutter +- afoot +- afraid +- afterglow +- afterlife +- aftermath +- aftermost +- afternoon +- aged +- ageless +- agency +- agenda +- agent +- aggregate +- aghast +- agile +- agility +- aging +- agnostic +- agonize +- agonizing +- agony +- agreeable +- agreeably +- agreed +- agreeing +- agreement +- aground +- ahead +- ahoy +- aide +- aids +- aim +- ajar +- alabaster +- alarm +- albatross +- album +- alfalfa +- algebra +- algorithm +- alias +- alibi +- alienable +- alienate +- aliens +- alike +- alive +- alkaline +- alkalize +- almanac +- almighty +- almost +- aloe +- aloft +- aloha +- alone +- alongside +- aloof +- alphabet +- alright +- although +- altitude +- alto +- aluminum +- alumni +- always +- amaretto +- amaze +- amazingly +- amber +- ambiance +- ambiguity +- ambiguous +- ambition +- ambitious +- ambulance +- ambush +- amendable +- amendment +- amends +- amenity +- amiable +- amicably +- amid +- amigo +- amino +- amiss +- ammonia +- ammonium +- amnesty +- amniotic +- among +- amount +- amperage +- ample +- amplifier +- amplify +- amply +- amuck +- amulet +- amusable +- amused +- amusement +- amuser +- amusing +- anaconda +- anaerobic +- anagram +- anatomist +- anatomy +- anchor +- anchovy +- ancient +- android +- anemia +- anemic +- aneurism +- anew +- angelfish +- angelic +- anger +- angled +- angler +- angles +- angling +- angrily +- angriness +- anguished +- angular +- animal +- animate +- animating +- animation +- animator +- anime +- animosity +- ankle +- annex +- annotate +- announcer +- annoying +- annually +- annuity +- anointer +- another +- answering +- antacid +- antarctic +- anteater +- antelope +- antennae +- anthem +- anthill +- anthology +- antibody +- antics +- antidote +- antihero +- antiquely +- antiques +- antiquity +- antirust +- antitoxic +- antitrust +- antiviral +- antivirus +- antler +- antonym +- antsy +- anvil +- anybody +- anyhow +- anymore +- anyone +- anyplace +- anything +- anytime +- anyway +- anywhere +- aorta +- apache +- apostle +- appealing +- appear +- appease +- appeasing +- appendage +- appendix +- appetite +- appetizer +- applaud +- applause +- apple +- appliance +- applicant +- applied +- apply +- appointee +- appraisal +- appraiser +- apprehend +- approach +- approval +- approve +- apricot +- april +- apron +- aptitude +- aptly +- aqua +- aqueduct +- arbitrary +- arbitrate +- ardently +- area +- arena +- arguable +- arguably +- argue +- arise +- armadillo +- armband +- armchair +- armed +- armful +- armhole +- arming +- armless +- armoire +- armored +- armory +- armrest +- army +- aroma +- arose +- around +- arousal +- arrange +- array +- arrest +- arrival +- arrive +- arrogance +- arrogant +- arson +- art +- ascend +- ascension +- ascent +- ascertain +- ashamed +- ashen +- ashes +- ashy +- aside +- askew +- asleep +- asparagus +- aspect +- aspirate +- aspire +- aspirin +- astonish +- astound +- astride +- astrology +- astronaut +- astronomy +- astute +- atlantic +- atlas +- atom +- atonable +- atop +- atrium +- atrocious +- atrophy +- attach +- attain +- attempt +- attendant +- attendee +- attention +- attentive +- attest +- attic +- attire +- attitude +- attractor +- attribute +- atypical +- auction +- audacious +- audacity +- audible +- audibly +- audience +- audio +- audition +- augmented +- august +- authentic +- author +- autism +- autistic +- autograph +- automaker +- automated +- automatic +- autopilot +- available +- avalanche +- avatar +- avenge +- avenging +- avenue +- average +- aversion +- avert +- aviation +- aviator +- avid +- avoid +- await +- awaken +- award +- aware +- awhile +- awkward +- awning +- awoke +- awry +- axis +- babble +- babbling +- babied +- baboon +- backache +- backboard +- backboned +- backdrop +- backed +- backer +- backfield +- backfire +- backhand +- backing +- backlands +- backlash +- backless +- backlight +- backlit +- backlog +- backpack +- backpedal +- backrest +- backroom +- backshift +- backside +- backslid +- backspace +- backspin +- backstab +- backstage +- backtalk +- backtrack +- backup +- backward +- backwash +- backwater +- backyard +- bacon +- bacteria +- bacterium +- badass +- badge +- badland +- badly +- badness +- baffle +- baffling +- bagel +- bagful +- baggage +- bagged +- baggie +- bagginess +- bagging +- baggy +- bagpipe +- baguette +- baked +- bakery +- bakeshop +- baking +- balance +- balancing +- balcony +- balmy +- balsamic +- bamboo +- banana +- banish +- banister +- banjo +- bankable +- bankbook +- banked +- banker +- banking +- banknote +- bankroll +- banner +- bannister +- banshee +- banter +- barbecue +- barbed +- barbell +- barber +- barcode +- barge +- bargraph +- barista +- baritone +- barley +- barmaid +- barman +- barn +- barometer +- barrack +- barracuda +- barrel +- barrette +- barricade +- barrier +- barstool +- bartender +- barterer +- bash +- basically +- basics +- basil +- basin +- basis +- basket +- batboy +- batch +- bath +- baton +- bats +- battalion +- battered +- battering +- battery +- batting +- battle +- bauble +- bazooka +- blabber +- bladder +- blade +- blah +- blame +- blaming +- blanching +- blandness +- blank +- blaspheme +- blasphemy +- blast +- blatancy +- blatantly +- blazer +- blazing +- bleach +- bleak +- bleep +- blemish +- blend +- bless +- blighted +- blimp +- bling +- blinked +- blinker +- blinking +- blinks +- blip +- blissful +- blitz +- blizzard +- bloated +- bloating +- blob +- blog +- bloomers +- blooming +- blooper +- blot +- blouse +- blubber +- bluff +- bluish +- blunderer +- blunt +- blurb +- blurred +- blurry +- blurt +- blush +- blustery +- boaster +- boastful +- boasting +- boat +- bobbed +- bobbing +- bobble +- bobcat +- bobsled +- bobtail +- bodacious +- body +- bogged +- boggle +- bogus +- boil +- bok +- bolster +- bolt +- bonanza +- bonded +- bonding +- bondless +- boned +- bonehead +- boneless +- bonelike +- boney +- bonfire +- bonnet +- bonsai +- bonus +- bony +- boogeyman +- boogieman +- book +- boondocks +- booted +- booth +- bootie +- booting +- bootlace +- bootleg +- boots +- boozy +- borax +- boring +- borough +- borrower +- borrowing +- boss +- botanical +- botanist +- botany +- botch +- both +- bottle +- bottling +- bottom +- bounce +- bouncing +- bouncy +- bounding +- boundless +- bountiful +- bovine +- boxcar +- boxer +- boxing +- boxlike +- boxy +- breach +- breath +- breeches +- breeching +- breeder +- breeding +- breeze +- breezy +- brethren +- brewery +- brewing +- briar +- bribe +- brick +- bride +- bridged +- brigade +- bright +- brilliant +- brim +- bring +- brink +- brisket +- briskly +- briskness +- bristle +- brittle +- broadband +- broadcast +- broaden +- broadly +- broadness +- broadside +- broadways +- broiler +- broiling +- broken +- broker +- bronchial +- bronco +- bronze +- bronzing +- brook +- broom +- brought +- browbeat +- brownnose +- browse +- browsing +- bruising +- brunch +- brunette +- brunt +- brush +- brussels +- brute +- brutishly +- bubble +- bubbling +- bubbly +- buccaneer +- bucked +- bucket +- buckle +- buckshot +- buckskin +- bucktooth +- buckwheat +- buddhism +- buddhist +- budding +- buddy +- budget +- buffalo +- buffed +- buffer +- buffing +- buffoon +- buggy +- bulb +- bulge +- bulginess +- bulgur +- bulk +- bulldog +- bulldozer +- bullfight +- bullfrog +- bullhorn +- bullion +- bullish +- bullpen +- bullring +- bullseye +- bullwhip +- bully +- bunch +- bundle +- bungee +- bunion +- bunkbed +- bunkhouse +- bunkmate +- bunny +- bunt +- busboy +- bush +- busily +- busload +- bust +- busybody +- buzz +- cabana +- cabbage +- cabbie +- cabdriver +- cable +- caboose +- cache +- cackle +- cacti +- cactus +- caddie +- caddy +- cadet +- cadillac +- cadmium +- cage +- cahoots +- cake +- calamari +- calamity +- calcium +- calculate +- calculus +- caliber +- calibrate +- calm +- caloric +- calorie +- calzone +- camcorder +- cameo +- camera +- camisole +- camper +- campfire +- camping +- campsite +- campus +- canal +- canary +- cancel +- candied +- candle +- candy +- cane +- canine +- canister +- cannabis +- canned +- canning +- cannon +- cannot +- canola +- canon +- canopener +- canopy +- canteen +- canyon +- capable +- capably +- capacity +- cape +- capillary +- capital +- capitol +- capped +- capricorn +- capsize +- capsule +- caption +- captivate +- captive +- captivity +- capture +- caramel +- carat +- caravan +- carbon +- cardboard +- carded +- cardiac +- cardigan +- cardinal +- cardstock +- carefully +- caregiver +- careless +- caress +- caretaker +- cargo +- caring +- carless +- carload +- carmaker +- carnage +- carnation +- carnival +- carnivore +- carol +- carpenter +- carpentry +- carpool +- carport +- carried +- carrot +- carrousel +- carry +- cartel +- cartload +- carton +- cartoon +- cartridge +- cartwheel +- carve +- carving +- carwash +- cascade +- case +- cash +- casing +- casino +- casket +- cassette +- casually +- casualty +- catacomb +- catalog +- catalyst +- catalyze +- catapult +- cataract +- catatonic +- catcall +- catchable +- catcher +- catching +- catchy +- caterer +- catering +- catfight +- catfish +- cathedral +- cathouse +- catlike +- catnap +- catnip +- catsup +- cattail +- cattishly +- cattle +- catty +- catwalk +- caucasian +- caucus +- causal +- causation +- cause +- causing +- cauterize +- caution +- cautious +- cavalier +- cavalry +- caviar +- cavity +- cedar +- celery +- celestial +- celibacy +- celibate +- celtic +- cement +- census +- ceramics +- ceremony +- certainly +- certainty +- certified +- certify +- cesarean +- cesspool +- chafe +- chaffing +- chain +- chair +- chalice +- challenge +- chamber +- chamomile +- champion +- chance +- change +- channel +- chant +- chaos +- chaperone +- chaplain +- chapped +- chaps +- chapter +- character +- charbroil +- charcoal +- charger +- charging +- chariot +- charity +- charm +- charred +- charter +- charting +- chase +- chasing +- chaste +- chastise +- chastity +- chatroom +- chatter +- chatting +- chatty +- cheating +- cheddar +- cheek +- cheer +- cheese +- cheesy +- chef +- chemicals +- chemist +- chemo +- cherisher +- cherub +- chess +- chest +- chevron +- chevy +- chewable +- chewer +- chewing +- chewy +- chief +- chihuahua +- childcare +- childhood +- childish +- childless +- childlike +- chili +- chill +- chimp +- chip +- chirping +- chirpy +- chitchat +- chivalry +- chive +- chloride +- chlorine +- choice +- chokehold +- choking +- chomp +- chooser +- choosing +- choosy +- chop +- chosen +- chowder +- chowtime +- chrome +- chubby +- chuck +- chug +- chummy +- chump +- chunk +- churn +- chute +- cider +- cilantro +- cinch +- cinema +- cinnamon +- circle +- circling +- circular +- circulate +- circus +- citable +- citadel +- citation +- citizen +- citric +- citrus +- city +- civic +- civil +- clad +- claim +- clambake +- clammy +- clamor +- clamp +- clamshell +- clang +- clanking +- clapped +- clapper +- clapping +- clarify +- clarinet +- clarity +- clash +- clasp +- class +- clatter +- clause +- clavicle +- claw +- clay +- clean +- clear +- cleat +- cleaver +- cleft +- clench +- clergyman +- clerical +- clerk +- clever +- clicker +- client +- climate +- climatic +- cling +- clinic +- clinking +- clip +- clique +- cloak +- clobber +- clock +- clone +- cloning +- closable +- closure +- clothes +- clothing +- cloud +- clover +- clubbed +- clubbing +- clubhouse +- clump +- clumsily +- clumsy +- clunky +- clustered +- clutch +- clutter +- coach +- coagulant +- coastal +- coaster +- coasting +- coastland +- coastline +- coat +- coauthor +- cobalt +- cobbler +- cobweb +- cocoa +- coconut +- cod +- coeditor +- coerce +- coexist +- coffee +- cofounder +- cognition +- cognitive +- cogwheel +- coherence +- coherent +- cohesive +- coil +- coke +- cola +- cold +- coleslaw +- coliseum +- collage +- collapse +- collar +- collected +- collector +- collide +- collie +- collision +- colonial +- colonist +- colonize +- colony +- colossal +- colt +- coma +- come +- comfort +- comfy +- comic +- coming +- comma +- commence +- commend +- comment +- commerce +- commode +- commodity +- commodore +- common +- commotion +- commute +- commuting +- compacted +- compacter +- compactly +- compactor +- companion +- company +- compare +- compel +- compile +- comply +- component +- composed +- composer +- composite +- compost +- composure +- compound +- compress +- comprised +- computer +- computing +- comrade +- concave +- conceal +- conceded +- concept +- concerned +- concert +- conch +- concierge +- concise +- conclude +- concrete +- concur +- condense +- condiment +- condition +- condone +- conducive +- conductor +- conduit +- cone +- confess +- confetti +- confidant +- confident +- confider +- confiding +- configure +- confined +- confining +- confirm +- conflict +- conform +- confound +- confront +- confused +- confusing +- confusion +- congenial +- congested +- congrats +- congress +- conical +- conjoined +- conjure +- conjuror +- connected +- connector +- consensus +- consent +- console +- consoling +- consonant +- constable +- constant +- constrain +- constrict +- construct +- consult +- consumer +- consuming +- contact +- container +- contempt +- contend +- contented +- contently +- contents +- contest +- context +- contort +- contour +- contrite +- control +- contusion +- convene +- convent +- copartner +- cope +- copied +- copier +- copilot +- coping +- copious +- copper +- copy +- coral +- cork +- cornball +- cornbread +- corncob +- cornea +- corned +- corner +- cornfield +- cornflake +- cornhusk +- cornmeal +- cornstalk +- corny +- coronary +- coroner +- corporal +- corporate +- corral +- correct +- corridor +- corrode +- corroding +- corrosive +- corsage +- corset +- cortex +- cosigner +- cosmetics +- cosmic +- cosmos +- cosponsor +- cost +- cottage +- cotton +- couch +- cough +- could +- countable +- countdown +- counting +- countless +- country +- county +- courier +- covenant +- cover +- coveted +- coveting +- coyness +- cozily +- coziness +- cozy +- crabbing +- crabgrass +- crablike +- crabmeat +- cradle +- cradling +- crafter +- craftily +- craftsman +- craftwork +- crafty +- cramp +- cranberry +- crane +- cranial +- cranium +- crank +- crate +- crave +- craving +- crawfish +- crawlers +- crawling +- crayfish +- crayon +- crazed +- crazily +- craziness +- crazy +- creamed +- creamer +- creamlike +- crease +- creasing +- creatable +- create +- creation +- creative +- creature +- credible +- credibly +- credit +- creed +- creme +- creole +- crepe +- crept +- crescent +- crested +- cresting +- crestless +- crevice +- crewless +- crewman +- crewmate +- crib +- cricket +- cried +- crier +- crimp +- crimson +- cringe +- cringing +- crinkle +- crinkly +- crisped +- crisping +- crisply +- crispness +- crispy +- criteria +- critter +- croak +- crock +- crook +- croon +- crop +- cross +- crouch +- crouton +- crowbar +- crowd +- crown +- crucial +- crudely +- crudeness +- cruelly +- cruelness +- cruelty +- crumb +- crummiest +- crummy +- crumpet +- crumpled +- cruncher +- crunching +- crunchy +- crusader +- crushable +- crushed +- crusher +- crushing +- crust +- crux +- crying +- cryptic +- crystal +- cubbyhole +- cube +- cubical +- cubicle +- cucumber +- cuddle +- cuddly +- cufflink +- culinary +- culminate +- culpable +- culprit +- cultivate +- cultural +- culture +- cupbearer +- cupcake +- cupid +- cupped +- cupping +- curable +- curator +- curdle +- cure +- curfew +- curing +- curled +- curler +- curliness +- curling +- curly +- curry +- curse +- cursive +- cursor +- curtain +- curtly +- curtsy +- curvature +- curve +- curvy +- cushy +- cusp +- cussed +- custard +- custodian +- custody +- customary +- customer +- customize +- customs +- cut +- cycle +- cyclic +- cycling +- cyclist +- cylinder +- cymbal +- cytoplasm +- cytoplast +- dab +- dad +- daffodil +- dagger +- daily +- daintily +- dainty +- dairy +- daisy +- dallying +- dance +- dancing +- dandelion +- dander +- dandruff +- dandy +- danger +- dangle +- dangling +- daredevil +- dares +- daringly +- darkened +- darkening +- darkish +- darkness +- darkroom +- darling +- darn +- dart +- darwinism +- dash +- dastardly +- data +- datebook +- dating +- daughter +- daunting +- dawdler +- dawn +- daybed +- daybreak +- daycare +- daydream +- daylight +- daylong +- dayroom +- daytime +- dazzler +- dazzling +- deacon +- deafening +- deafness +- dealer +- dealing +- dealmaker +- dealt +- dean +- debatable +- debate +- debating +- debit +- debrief +- debtless +- debtor +- debug +- debunk +- decade +- decaf +- decal +- decathlon +- decay +- deceased +- deceit +- deceiver +- deceiving +- december +- decency +- decent +- deception +- deceptive +- decibel +- decidable +- decimal +- decimeter +- decipher +- deck +- declared +- decline +- decode +- decompose +- decorated +- decorator +- decoy +- decrease +- decree +- dedicate +- dedicator +- deduce +- deduct +- deed +- deem +- deepen +- deeply +- deepness +- deface +- defacing +- defame +- default +- defeat +- defection +- defective +- defendant +- defender +- defense +- defensive +- deferral +- deferred +- defiance +- defiant +- defile +- defiling +- define +- definite +- deflate +- deflation +- deflator +- deflected +- deflector +- defog +- deforest +- defraud +- defrost +- deftly +- defuse +- defy +- degraded +- degrading +- degrease +- degree +- dehydrate +- deity +- dejected +- delay +- delegate +- delegator +- delete +- deletion +- delicacy +- delicate +- delicious +- delighted +- delirious +- delirium +- deliverer +- delivery +- delouse +- delta +- deluge +- delusion +- deluxe +- demanding +- demeaning +- demeanor +- demise +- democracy +- democrat +- demote +- demotion +- demystify +- denatured +- deniable +- denial +- denim +- denote +- dense +- density +- dental +- dentist +- denture +- deny +- deodorant +- deodorize +- departed +- departure +- depict +- deplete +- depletion +- deplored +- deploy +- deport +- depose +- depraved +- depravity +- deprecate +- depress +- deprive +- depth +- deputize +- deputy +- derail +- deranged +- derby +- derived +- desecrate +- deserve +- deserving +- designate +- designed +- designer +- designing +- deskbound +- desktop +- deskwork +- desolate +- despair +- despise +- despite +- destiny +- destitute +- destruct +- detached +- detail +- detection +- detective +- detector +- detention +- detergent +- detest +- detonate +- detonator +- detoxify +- detract +- deuce +- devalue +- deviancy +- deviant +- deviate +- deviation +- deviator +- device +- devious +- devotedly +- devotee +- devotion +- devourer +- devouring +- devoutly +- dexterity +- dexterous +- diabetes +- diabetic +- diabolic +- diagnoses +- diagnosis +- diagram +- dial +- diameter +- diaper +- diaphragm +- diary +- dice +- dicing +- dictate +- dictation +- dictator +- difficult +- diffused +- diffuser +- diffusion +- diffusive +- dig +- dilation +- diligence +- diligent +- dill +- dilute +- dime +- diminish +- dimly +- dimmed +- dimmer +- dimness +- dimple +- diner +- dingbat +- dinghy +- dinginess +- dingo +- dingy +- dining +- dinner +- diocese +- dioxide +- diploma +- dipped +- dipper +- dipping +- directed +- direction +- directive +- directly +- directory +- direness +- dirtiness +- disabled +- disagree +- disallow +- disarm +- disarray +- disaster +- disband +- disbelief +- disburse +- discard +- discern +- discharge +- disclose +- discolor +- discount +- discourse +- discover +- discuss +- disdain +- disengage +- disfigure +- disgrace +- dish +- disinfect +- disjoin +- disk +- dislike +- disliking +- dislocate +- dislodge +- disloyal +- dismantle +- dismay +- dismiss +- dismount +- disobey +- disorder +- disown +- disparate +- disparity +- dispatch +- dispense +- dispersal +- dispersed +- disperser +- displace +- display +- displease +- disposal +- dispose +- disprove +- dispute +- disregard +- disrupt +- dissuade +- distance +- distant +- distaste +- distill +- distinct +- distort +- distract +- distress +- district +- distrust +- ditch +- ditto +- ditzy +- dividable +- divided +- dividend +- dividers +- dividing +- divinely +- diving +- divinity +- divisible +- divisibly +- division +- divisive +- divorcee +- dizziness +- dizzy +- doable +- docile +- dock +- doctrine +- document +- dodge +- dodgy +- doily +- doing +- dole +- dollar +- dollhouse +- dollop +- dolly +- dolphin +- domain +- domelike +- domestic +- dominion +- dominoes +- donated +- donation +- donator +- donor +- donut +- doodle +- doorbell +- doorframe +- doorknob +- doorman +- doormat +- doornail +- doorpost +- doorstep +- doorstop +- doorway +- doozy +- dork +- dormitory +- dorsal +- dosage +- dose +- dotted +- doubling +- douche +- dove +- down +- dowry +- doze +- drab +- dragging +- dragonfly +- dragonish +- dragster +- drainable +- drainage +- drained +- drainer +- drainpipe +- dramatic +- dramatize +- drank +- drapery +- drastic +- draw +- dreaded +- dreadful +- dreadlock +- dreamboat +- dreamily +- dreamland +- dreamless +- dreamlike +- dreamt +- dreamy +- drearily +- dreary +- drench +- dress +- drew +- dribble +- dried +- drier +- drift +- driller +- drilling +- drinkable +- drinking +- dripping +- drippy +- drivable +- driven +- driver +- driveway +- driving +- drizzle +- drizzly +- drone +- drool +- droop +- drop-down +- dropbox +- dropkick +- droplet +- dropout +- dropper +- drove +- drown +- drowsily +- drudge +- drum +- dry +- dubbed +- dubiously +- duchess +- duckbill +- ducking +- duckling +- ducktail +- ducky +- duct +- dude +- duffel +- dugout +- duh +- duke +- duller +- dullness +- duly +- dumping +- dumpling +- dumpster +- duo +- dupe +- duplex +- duplicate +- duplicity +- durable +- durably +- duration +- duress +- during +- dusk +- dust +- dutiful +- duty +- duvet +- dwarf +- dweeb +- dwelled +- dweller +- dwelling +- dwindle +- dwindling +- dynamic +- dynamite +- dynasty +- dyslexia +- dyslexic +- each +- eagle +- earache +- eardrum +- earflap +- earful +- earlobe +- early +- earmark +- earmuff +- earphone +- earpiece +- earplugs +- earring +- earshot +- earthen +- earthlike +- earthling +- earthly +- earthworm +- earthy +- earwig +- easeful +- easel +- easiest +- easily +- easiness +- easing +- eastbound +- eastcoast +- easter +- eastward +- eatable +- eaten +- eatery +- eating +- eats +- ebay +- ebony +- ebook +- ecard +- eccentric +- echo +- eclair +- eclipse +- ecologist +- ecology +- economic +- economist +- economy +- ecosphere +- ecosystem +- edge +- edginess +- edging +- edgy +- edition +- editor +- educated +- education +- educator +- eel +- effective +- effects +- efficient +- effort +- eggbeater +- egging +- eggnog +- eggplant +- eggshell +- egomaniac +- egotism +- egotistic +- either +- eject +- elaborate +- elastic +- elated +- elbow +- eldercare +- elderly +- eldest +- electable +- election +- elective +- elephant +- elevate +- elevating +- elevation +- elevator +- eleven +- elf +- eligible +- eligibly +- eliminate +- elite +- elitism +- elixir +- elk +- ellipse +- elliptic +- elm +- elongated +- elope +- eloquence +- eloquent +- elsewhere +- elude +- elusive +- elves +- email +- embargo +- embark +- embassy +- embattled +- embellish +- ember +- embezzle +- emblaze +- emblem +- embody +- embolism +- emboss +- embroider +- emcee +- emerald +- emergency +- emission +- emit +- emote +- emoticon +- emotion +- empathic +- empathy +- emperor +- emphases +- emphasis +- emphasize +- emphatic +- empirical +- employed +- employee +- employer +- emporium +- empower +- emptier +- emptiness +- empty +- emu +- enable +- enactment +- enamel +- enchanted +- enchilada +- encircle +- enclose +- enclosure +- encode +- encore +- encounter +- encourage +- encroach +- encrust +- encrypt +- endanger +- endeared +- endearing +- ended +- ending +- endless +- endnote +- endocrine +- endorphin +- endorse +- endowment +- endpoint +- endurable +- endurance +- enduring +- energetic +- energize +- energy +- enforced +- enforcer +- engaged +- engaging +- engine +- engorge +- engraved +- engraver +- engraving +- engross +- engulf +- enhance +- enigmatic +- enjoyable +- enjoyably +- enjoyer +- enjoying +- enjoyment +- enlarged +- enlarging +- enlighten +- enlisted +- enquirer +- enrage +- enrich +- enroll +- enslave +- ensnare +- ensure +- entail +- entangled +- entering +- entertain +- enticing +- entire +- entitle +- entity +- entomb +- entourage +- entrap +- entree +- entrench +- entrust +- entryway +- entwine +- enunciate +- envelope +- enviable +- enviably +- envious +- envision +- envoy +- envy +- enzyme +- epic +- epidemic +- epidermal +- epidermis +- epidural +- epilepsy +- epileptic +- epilogue +- epiphany +- episode +- equal +- equate +- equation +- equator +- equinox +- equipment +- equity +- equivocal +- eradicate +- erasable +- erased +- eraser +- erasure +- ergonomic +- errand +- errant +- erratic +- error +- erupt +- escalate +- escalator +- escapable +- escapade +- escapist +- escargot +- eskimo +- esophagus +- espionage +- espresso +- esquire +- essay +- essence +- essential +- establish +- estate +- esteemed +- estimate +- estimator +- estranged +- estrogen +- etching +- eternal +- eternity +- ethanol +- ether +- ethically +- ethics +- euphemism +- evacuate +- evacuee +- evade +- evaluate +- evaluator +- evaporate +- evasion +- evasive +- even +- everglade +- evergreen +- everybody +- everyday +- everyone +- evict +- evidence +- evident +- evil +- evoke +- evolution +- evolve +- exact +- exalted +- example +- excavate +- excavator +- exceeding +- exception +- excess +- exchange +- excitable +- exciting +- exclaim +- exclude +- excluding +- exclusion +- exclusive +- excretion +- excretory +- excursion +- excusable +- excusably +- excuse +- exemplary +- exemplify +- exemption +- exerciser +- exert +- exes +- exfoliate +- exhale +- exhaust +- exhume +- exile +- existing +- exit +- exodus +- exonerate +- exorcism +- exorcist +- expand +- expanse +- expansion +- expansive +- expectant +- expedited +- expediter +- expel +- expend +- expenses +- expensive +- expert +- expire +- expiring +- explain +- expletive +- explicit +- explode +- exploit +- explore +- exploring +- exponent +- exporter +- exposable +- expose +- exposure +- express +- expulsion +- exquisite +- extended +- extending +- extent +- extenuate +- exterior +- external +- extinct +- extortion +- extradite +- extras +- extrovert +- extrude +- extruding +- exuberant +- fable +- fabric +- fabulous +- facebook +- facecloth +- facedown +- faceless +- facelift +- faceplate +- faceted +- facial +- facility +- facing +- facsimile +- faction +- factoid +- factor +- factsheet +- factual +- faculty +- fade +- fading +- failing +- falcon +- fall +- FALSE +- falsify +- fame +- familiar +- family +- famine +- famished +- fanatic +- fancied +- fanciness +- fancy +- fanfare +- fang +- fanning +- fantasize +- fantastic +- fantasy +- fascism +- fastball +- faster +- fasting +- fastness +- faucet +- favorable +- favorably +- favored +- favoring +- favorite +- fax +- feast +- federal +- fedora +- feeble +- feed +- feel +- feisty +- feline +- felt-tip +- feminine +- feminism +- feminist +- feminize +- femur +- fence +- fencing +- fender +- ferment +- fernlike +- ferocious +- ferocity +- ferret +- ferris +- ferry +- fervor +- fester +- festival +- festive +- festivity +- fetal +- fetch +- fever +- fiber +- fiction +- fiddle +- fiddling +- fidelity +- fidgeting +- fidgety +- fifteen +- fifth +- fiftieth +- fifty +- figment +- figure +- figurine +- filing +- filled +- filler +- filling +- film +- filter +- filth +- filtrate +- finale +- finalist +- finalize +- finally +- finance +- financial +- finch +- fineness +- finer +- finicky +- finished +- finisher +- finishing +- finite +- finless +- finlike +- fiscally +- fit +- flaccid +- flagman +- flagpole +- flagship +- flagstick +- flagstone +- flail +- flakily +- flaky +- flame +- flammable +- flanked +- flanking +- flannels +- flap +- flaring +- flashback +- flashbulb +- flashcard +- flashily +- flashing +- flashy +- flask +- flatbed +- flatfoot +- flatly +- flatness +- flatten +- flattered +- flatterer +- flattery +- flattop +- flatware +- flatworm +- flavored +- flavorful +- flavoring +- flaxseed +- fled +- fleshed +- fleshy +- flick +- flier +- flight +- flinch +- fling +- flint +- flip +- flirt +- float +- flock +- flogging +- flop +- floral +- florist +- floss +- flounder +- flyable +- flyaway +- flyer +- flying +- flyover +- flypaper +- foam +- foe +- fog +- foil +- folic +- folk +- follicle +- follow +- fondly +- fondness +- fondue +- font +- food +- fool +- footage +- football +- footbath +- footboard +- footer +- footgear +- foothill +- foothold +- footing +- footless +- footman +- footnote +- footpad +- footpath +- footprint +- footrest +- footsie +- footsore +- footwear +- footwork +- fossil +- foster +- founder +- founding +- fountain +- fox +- foyer +- fraction +- fracture +- fragile +- fragility +- fragment +- fragrance +- fragrant +- frail +- frame +- framing +- frantic +- fraternal +- frayed +- fraying +- frays +- freckled +- freckles +- freebase +- freebee +- freebie +- freedom +- freefall +- freehand +- freeing +- freeload +- freely +- freemason +- freeness +- freestyle +- freeware +- freeway +- freewill +- freezable +- freezing +- freight +- french +- frenzied +- frenzy +- frequency +- frequent +- fresh +- fretful +- fretted +- friction +- friday +- fridge +- fried +- friend +- frighten +- frightful +- frigidity +- frigidly +- frill +- fringe +- frisbee +- frisk +- fritter +- frivolous +- frolic +- from +- front +- frostbite +- frosted +- frostily +- frosting +- frostlike +- frosty +- froth +- frown +- frozen +- fructose +- frugality +- frugally +- fruit +- frustrate +- frying +- gab +- gaffe +- gag +- gainfully +- gaining +- gains +- gala +- gallantly +- galleria +- gallery +- galley +- gallon +- gallows +- gallstone +- galore +- galvanize +- gambling +- game +- gaming +- gamma +- gander +- gangly +- gangrene +- gangway +- gap +- garage +- garbage +- garden +- gargle +- garland +- garlic +- garment +- garnet +- garnish +- garter +- gas +- gatherer +- gathering +- gating +- gauging +- gauntlet +- gauze +- gave +- gawk +- gazing +- gear +- gecko +- geek +- geiger +- gem +- gender +- generic +- generous +- genetics +- genre +- gentile +- gentleman +- gently +- gents +- geography +- geologic +- geologist +- geology +- geometric +- geometry +- geranium +- gerbil +- geriatric +- germicide +- germinate +- germless +- germproof +- gestate +- gestation +- gesture +- getaway +- getting +- getup +- giant +- gibberish +- giblet +- giddily +- giddiness +- giddy +- gift +- gigabyte +- gigahertz +- gigantic +- giggle +- giggling +- giggly +- gigolo +- gilled +- gills +- gimmick +- girdle +- giveaway +- given +- giver +- giving +- gizmo +- gizzard +- glacial +- glacier +- glade +- gladiator +- gladly +- glamorous +- glamour +- glance +- glancing +- glandular +- glare +- glaring +- glass +- glaucoma +- glazing +- gleaming +- gleeful +- glider +- gliding +- glimmer +- glimpse +- glisten +- glitch +- glitter +- glitzy +- gloater +- gloating +- gloomily +- gloomy +- glorified +- glorifier +- glorify +- glorious +- glory +- gloss +- glove +- glowing +- glowworm +- glucose +- glue +- gluten +- glutinous +- glutton +- gnarly +- gnat +- goal +- goatskin +- goes +- goggles +- going +- goldfish +- goldmine +- goldsmith +- golf +- goliath +- gonad +- gondola +- gone +- gong +- good +- gooey +- goofball +- goofiness +- goofy +- google +- goon +- gopher +- gore +- gorged +- gorgeous +- gory +- gosling +- gossip +- gothic +- gotten +- gout +- gown +- grab +- graceful +- graceless +- gracious +- gradation +- graded +- grader +- gradient +- grading +- gradually +- graduate +- graffiti +- grafted +- grafting +- grain +- granddad +- grandkid +- grandly +- grandma +- grandpa +- grandson +- granite +- granny +- granola +- grant +- granular +- grape +- graph +- grapple +- grappling +- grasp +- grass +- gratified +- gratify +- grating +- gratitude +- gratuity +- gravel +- graveness +- graves +- graveyard +- gravitate +- gravity +- gravy +- gray +- grazing +- greasily +- greedily +- greedless +- greedy +- green +- greeter +- greeting +- grew +- greyhound +- grid +- grief +- grievance +- grieving +- grievous +- grill +- grimace +- grimacing +- grime +- griminess +- grimy +- grinch +- grinning +- grip +- gristle +- grit +- groggily +- groggy +- groin +- groom +- groove +- grooving +- groovy +- grope +- ground +- grouped +- grout +- grove +- grower +- growing +- growl +- grub +- grudge +- grudging +- grueling +- gruffly +- grumble +- grumbling +- grumbly +- grumpily +- grunge +- grunt +- guacamole +- guidable +- guidance +- guide +- guiding +- guileless +- guise +- gulf +- gullible +- gully +- gulp +- gumball +- gumdrop +- gumminess +- gumming +- gummy +- gurgle +- gurgling +- guru +- gush +- gusto +- gusty +- gutless +- guts +- gutter +- guy +- guzzler +- gyration +- habitable +- habitant +- habitat +- habitual +- hacked +- hacker +- hacking +- hacksaw +- had +- haggler +- haiku +- half +- halogen +- halt +- halved +- halves +- hamburger +- hamlet +- hammock +- hamper +- hamster +- hamstring +- handbag +- handball +- handbook +- handbrake +- handcart +- handclap +- handclasp +- handcraft +- handcuff +- handed +- handful +- handgrip +- handgun +- handheld +- handiness +- handiwork +- handlebar +- handled +- handler +- handling +- handmade +- handoff +- handpick +- handprint +- handrail +- handsaw +- handset +- handsfree +- handshake +- handstand +- handwash +- handwork +- handwoven +- handwrite +- handyman +- hangnail +- hangout +- hangover +- hangup +- hankering +- hankie +- hanky +- haphazard +- happening +- happier +- happiest +- happily +- happiness +- happy +- harbor +- hardcopy +- hardcore +- hardcover +- harddisk +- hardened +- hardener +- hardening +- hardhat +- hardhead +- hardiness +- hardly +- hardness +- hardship +- hardware +- hardwired +- hardwood +- hardy +- harmful +- harmless +- harmonica +- harmonics +- harmonize +- harmony +- harness +- harpist +- harsh +- harvest +- hash +- hassle +- haste +- hastily +- hastiness +- hasty +- hatbox +- hatchback +- hatchery +- hatchet +- hatching +- hatchling +- hate +- hatless +- hatred +- haunt +- haven +- hazard +- hazelnut +- hazily +- haziness +- hazing +- hazy +- headache +- headband +- headboard +- headcount +- headdress +- headed +- header +- headfirst +- headgear +- heading +- headlamp +- headless +- headlock +- headphone +- headpiece +- headrest +- headroom +- headscarf +- headset +- headsman +- headstand +- headstone +- headway +- headwear +- heap +- heat +- heave +- heavily +- heaviness +- heaving +- hedge +- hedging +- heftiness +- hefty +- helium +- helmet +- helper +- helpful +- helping +- helpless +- helpline +- hemlock +- hemstitch +- hence +- henchman +- henna +- herald +- herbal +- herbicide +- herbs +- heritage +- hermit +- heroics +- heroism +- herring +- herself +- hertz +- hesitancy +- hesitant +- hesitate +- hexagon +- hexagram +- hubcap +- huddle +- huddling +- huff +- hug +- hula +- hulk +- hull +- human +- humble +- humbling +- humbly +- humid +- humiliate +- humility +- humming +- hummus +- humongous +- humorist +- humorless +- humorous +- humpback +- humped +- humvee +- hunchback +- hundredth +- hunger +- hungrily +- hungry +- hunk +- hunter +- hunting +- huntress +- huntsman +- hurdle +- hurled +- hurler +- hurling +- hurray +- hurricane +- hurried +- hurry +- hurt +- husband +- hush +- husked +- huskiness +- hut +- hybrid +- hydrant +- hydrated +- hydration +- hydrogen +- hydroxide +- hyperlink +- hypertext +- hyphen +- hypnoses +- hypnosis +- hypnotic +- hypnotism +- hypnotist +- hypnotize +- hypocrisy +- hypocrite +- ibuprofen +- ice +- iciness +- icing +- icky +- icon +- icy +- idealism +- idealist +- idealize +- ideally +- idealness +- identical +- identify +- identity +- ideology +- idiocy +- idiom +- idly +- igloo +- ignition +- ignore +- iguana +- illicitly +- illusion +- illusive +- image +- imaginary +- imagines +- imaging +- imbecile +- imitate +- imitation +- immature +- immerse +- immersion +- imminent +- immobile +- immodest +- immorally +- immortal +- immovable +- immovably +- immunity +- immunize +- impaired +- impale +- impart +- impatient +- impeach +- impeding +- impending +- imperfect +- imperial +- impish +- implant +- implement +- implicate +- implicit +- implode +- implosion +- implosive +- imply +- impolite +- important +- importer +- impose +- imposing +- impotence +- impotency +- impotent +- impound +- imprecise +- imprint +- imprison +- impromptu +- improper +- improve +- improving +- improvise +- imprudent +- impulse +- impulsive +- impure +- impurity +- iodine +- iodize +- ion +- ipad +- iphone +- ipod +- irate +- irk +- iron +- irregular +- irrigate +- irritable +- irritably +- irritant +- irritate +- islamic +- islamist +- isolated +- isolating +- isolation +- isotope +- issue +- issuing +- italicize +- italics +- item +- itinerary +- itunes +- ivory +- ivy +- jab +- jackal +- jacket +- jackknife +- jackpot +- jailbird +- jailbreak +- jailer +- jailhouse +- jalapeno +- jam +- janitor +- january +- jargon +- jarring +- jasmine +- jaundice +- jaunt +- java +- jawed +- jawless +- jawline +- jaws +- jaybird +- jaywalker +- jazz +- jeep +- jeeringly +- jellied +- jelly +- jersey +- jester +- jet +- jiffy +- jigsaw +- jimmy +- jingle +- jingling +- jinx +- jitters +- jittery +- job +- jockey +- jockstrap +- jogger +- jogging +- john +- joining +- jokester +- jokingly +- jolliness +- jolly +- jolt +- jot +- jovial +- joyfully +- joylessly +- joyous +- joyride +- joystick +- jubilance +- jubilant +- judge +- judgingly +- judicial +- judiciary +- judo +- juggle +- juggling +- jugular +- juice +- juiciness +- juicy +- jujitsu +- jukebox +- july +- jumble +- jumbo +- jump +- junction +- juncture +- june +- junior +- juniper +- junkie +- junkman +- junkyard +- jurist +- juror +- jury +- justice +- justifier +- justify +- justly +- justness +- juvenile +- kabob +- kangaroo +- karaoke +- karate +- karma +- kebab +- keenly +- keenness +- keep +- keg +- kelp +- kennel +- kept +- kerchief +- kerosene +- kettle +- kick +- kiln +- kilobyte +- kilogram +- kilometer +- kilowatt +- kilt +- kimono +- kindle +- kindling +- kindly +- kindness +- kindred +- kinetic +- kinfolk +- king +- kinship +- kinsman +- kinswoman +- kissable +- kisser +- kissing +- kitchen +- kite +- kitten +- kitty +- kiwi +- kleenex +- knapsack +- knee +- knelt +- knickers +- knoll +- koala +- kooky +- kosher +- krypton +- kudos +- kung +- labored +- laborer +- laboring +- laborious +- labrador +- ladder +- ladies +- ladle +- ladybug +- ladylike +- lagged +- lagging +- lagoon +- lair +- lake +- lance +- landed +- landfall +- landfill +- landing +- landlady +- landless +- landline +- landlord +- landmark +- landmass +- landmine +- landowner +- landscape +- landside +- landslide +- language +- lankiness +- lanky +- lantern +- lapdog +- lapel +- lapped +- lapping +- laptop +- lard +- large +- lark +- lash +- lasso +- last +- latch +- late +- lather +- latitude +- latrine +- latter +- latticed +- launch +- launder +- laundry +- laurel +- lavender +- lavish +- laxative +- lazily +- laziness +- lazy +- lecturer +- left +- legacy +- legal +- legend +- legged +- leggings +- legible +- legibly +- legislate +- lego +- legroom +- legume +- legwarmer +- legwork +- lemon +- lend +- length +- lens +- lent +- leotard +- lesser +- letdown +- lethargic +- lethargy +- letter +- lettuce +- level +- leverage +- levers +- levitate +- levitator +- liability +- liable +- liberty +- librarian +- library +- licking +- licorice +- lid +- life +- lifter +- lifting +- liftoff +- ligament +- likely +- likeness +- likewise +- liking +- lilac +- lilly +- lily +- limb +- limeade +- limelight +- limes +- limit +- limping +- limpness +- line +- lingo +- linguini +- linguist +- lining +- linked +- linoleum +- linseed +- lint +- lion +- lip +- liquefy +- liqueur +- liquid +- lisp +- list +- litigate +- litigator +- litmus +- litter +- little +- livable +- lived +- lively +- liver +- livestock +- lividly +- living +- lizard +- lubricant +- lubricate +- lucid +- luckily +- luckiness +- luckless +- lucrative +- ludicrous +- lugged +- lukewarm +- lullaby +- lumber +- luminance +- luminous +- lumpiness +- lumping +- lumpish +- lunacy +- lunar +- lunchbox +- luncheon +- lunchroom +- lunchtime +- lung +- lurch +- lure +- luridness +- lurk +- lushly +- lushness +- luster +- lustfully +- lustily +- lustiness +- lustrous +- lusty +- luxurious +- luxury +- lying +- lyrically +- lyricism +- lyricist +- lyrics +- macarena +- macaroni +- macaw +- mace +- machine +- machinist +- magazine +- magenta +- maggot +- magical +- magician +- magma +- magnesium +- magnetic +- magnetism +- magnetize +- magnifier +- magnify +- magnitude +- magnolia +- mahogany +- maimed +- majestic +- majesty +- majorette +- majority +- makeover +- maker +- makeshift +- making +- malformed +- malt +- mama +- mammal +- mammary +- mammogram +- manager +- managing +- manatee +- mandarin +- mandate +- mandatory +- mandolin +- manger +- mangle +- mango +- mangy +- manhandle +- manhole +- manhood +- manhunt +- manicotti +- manicure +- manifesto +- manila +- mankind +- manlike +- manliness +- manly +- manmade +- manned +- mannish +- manor +- manpower +- mantis +- mantra +- manual +- many +- map +- marathon +- marauding +- marbled +- marbles +- marbling +- march +- mardi +- margarine +- margarita +- margin +- marigold +- marina +- marine +- marital +- maritime +- marlin +- marmalade +- maroon +- married +- marrow +- marry +- marshland +- marshy +- marsupial +- marvelous +- marxism +- mascot +- masculine +- mashed +- mashing +- massager +- masses +- massive +- mastiff +- matador +- matchbook +- matchbox +- matcher +- matching +- matchless +- material +- maternal +- maternity +- math +- mating +- matriarch +- matrimony +- matrix +- matron +- matted +- matter +- maturely +- maturing +- maturity +- mauve +- maverick +- maximize +- maximum +- maybe +- mayday +- mayflower +- moaner +- moaning +- mobile +- mobility +- mobilize +- mobster +- mocha +- mocker +- mockup +- modified +- modify +- modular +- modulator +- module +- moisten +- moistness +- moisture +- molar +- molasses +- mold +- molecular +- molecule +- molehill +- mollusk +- mom +- monastery +- monday +- monetary +- monetize +- moneybags +- moneyless +- moneywise +- mongoose +- mongrel +- monitor +- monkhood +- monogamy +- monogram +- monologue +- monopoly +- monorail +- monotone +- monotype +- monoxide +- monsieur +- monsoon +- monstrous +- monthly +- monument +- moocher +- moodiness +- moody +- mooing +- moonbeam +- mooned +- moonlight +- moonlike +- moonlit +- moonrise +- moonscape +- moonshine +- moonstone +- moonwalk +- mop +- morale +- morality +- morally +- morbidity +- morbidly +- morphine +- morphing +- morse +- mortality +- mortally +- mortician +- mortified +- mortify +- mortuary +- mosaic +- mossy +- most +- mothball +- mothproof +- motion +- motivate +- motivator +- motive +- motocross +- motor +- motto +- mountable +- mountain +- mounted +- mounting +- mourner +- mournful +- mouse +- mousiness +- moustache +- mousy +- mouth +- movable +- move +- movie +- moving +- mower +- mowing +- much +- muck +- mud +- mug +- mulberry +- mulch +- mule +- mulled +- mullets +- multiple +- multiply +- multitask +- multitude +- mumble +- mumbling +- mumbo +- mummified +- mummify +- mummy +- mumps +- munchkin +- mundane +- municipal +- muppet +- mural +- murkiness +- murky +- murmuring +- muscular +- museum +- mushily +- mushiness +- mushroom +- mushy +- music +- musket +- muskiness +- musky +- mustang +- mustard +- muster +- mustiness +- musty +- mutable +- mutate +- mutation +- mute +- mutilated +- mutilator +- mutiny +- mutt +- mutual +- muzzle +- myself +- myspace +- mystified +- mystify +- myth +- nacho +- nag +- nail +- name +- naming +- nanny +- nanometer +- nape +- napkin +- napped +- napping +- nappy +- narrow +- nastily +- nastiness +- national +- native +- nativity +- natural +- nature +- naturist +- nautical +- navigate +- navigator +- navy +- nearby +- nearest +- nearly +- nearness +- neatly +- neatness +- nebula +- nebulizer +- nectar +- negate +- negation +- negative +- neglector +- negligee +- negligent +- negotiate +- nemeses +- nemesis +- neon +- nephew +- nerd +- nervous +- nervy +- nest +- net +- neurology +- neuron +- neurosis +- neurotic +- neuter +- neutron +- never +- next +- nibble +- nickname +- nicotine +- niece +- nifty +- nimble +- nimbly +- nineteen +- ninetieth +- ninja +- nintendo +- ninth +- nuclear +- nuclei +- nucleus +- nugget +- nullify +- number +- numbing +- numbly +- numbness +- numeral +- numerate +- numerator +- numeric +- numerous +- nuptials +- nursery +- nursing +- nurture +- nutcase +- nutlike +- nutmeg +- nutrient +- nutshell +- nuttiness +- nutty +- nuzzle +- nylon +- oaf +- oak +- oasis +- oat +- obedience +- obedient +- obituary +- object +- obligate +- obliged +- oblivion +- oblivious +- oblong +- obnoxious +- oboe +- obscure +- obscurity +- observant +- observer +- observing +- obsessed +- obsession +- obsessive +- obsolete +- obstacle +- obstinate +- obstruct +- obtain +- obtrusive +- obtuse +- obvious +- occultist +- occupancy +- occupant +- occupier +- occupy +- ocean +- ocelot +- octagon +- octane +- october +- octopus +- ogle +- oil +- oink +- ointment +- okay +- old +- olive +- olympics +- omega +- omen +- ominous +- omission +- omit +- omnivore +- onboard +- oncoming +- ongoing +- onion +- online +- onlooker +- only +- onscreen +- onset +- onshore +- onslaught +- onstage +- onto +- onward +- onyx +- oops +- ooze +- oozy +- opacity +- opal +- open +- operable +- operate +- operating +- operation +- operative +- operator +- opium +- opossum +- opponent +- oppose +- opposing +- opposite +- oppressed +- oppressor +- opt +- opulently +- osmosis +- other +- otter +- ouch +- ought +- ounce +- outage +- outback +- outbid +- outboard +- outbound +- outbreak +- outburst +- outcast +- outclass +- outcome +- outdated +- outdoors +- outer +- outfield +- outfit +- outflank +- outgoing +- outgrow +- outhouse +- outing +- outlast +- outlet +- outline +- outlook +- outlying +- outmatch +- outmost +- outnumber +- outplayed +- outpost +- outpour +- output +- outrage +- outrank +- outreach +- outright +- outscore +- outsell +- outshine +- outshoot +- outsider +- outskirts +- outsmart +- outsource +- outspoken +- outtakes +- outthink +- outward +- outweigh +- outwit +- oval +- ovary +- oven +- overact +- overall +- overarch +- overbid +- overbill +- overbite +- overblown +- overboard +- overbook +- overbuilt +- overcast +- overcoat +- overcome +- overcook +- overcrowd +- overdraft +- overdrawn +- overdress +- overdrive +- overdue +- overeager +- overeater +- overexert +- overfed +- overfeed +- overfill +- overflow +- overfull +- overgrown +- overhand +- overhang +- overhaul +- overhead +- overhear +- overheat +- overhung +- overjoyed +- overkill +- overlabor +- overlaid +- overlap +- overlay +- overload +- overlook +- overlord +- overlying +- overnight +- overpass +- overpay +- overplant +- overplay +- overpower +- overprice +- overrate +- overreach +- overreact +- override +- overripe +- overrule +- overrun +- overshoot +- overshot +- oversight +- oversized +- oversleep +- oversold +- overspend +- overstate +- overstay +- overstep +- overstock +- overstuff +- oversweet +- overtake +- overthrow +- overtime +- overtly +- overtone +- overture +- overturn +- overuse +- overvalue +- overview +- overwrite +- owl +- oxford +- oxidant +- oxidation +- oxidize +- oxidizing +- oxygen +- oxymoron +- oyster +- ozone +- paced +- pacemaker +- pacific +- pacifier +- pacifism +- pacifist +- pacify +- padded +- padding +- paddle +- paddling +- padlock +- pagan +- pager +- paging +- pajamas +- palace +- palatable +- palm +- palpable +- palpitate +- paltry +- pampered +- pamperer +- pampers +- pamphlet +- panama +- pancake +- pancreas +- panda +- pandemic +- pang +- panhandle +- panic +- panning +- panorama +- panoramic +- panther +- pantomime +- pantry +- pants +- pantyhose +- paparazzi +- papaya +- paper +- paprika +- papyrus +- parabola +- parachute +- parade +- paradox +- paragraph +- parakeet +- paralegal +- paralyses +- paralysis +- paralyze +- paramedic +- parameter +- paramount +- parasail +- parasite +- parasitic +- parcel +- parched +- parchment +- pardon +- parish +- parka +- parking +- parkway +- parlor +- parmesan +- parole +- parrot +- parsley +- parsnip +- partake +- parted +- parting +- partition +- partly +- partner +- partridge +- party +- passable +- passably +- passage +- passcode +- passenger +- passerby +- passing +- passion +- passive +- passivism +- passover +- passport +- pasta +- pasted +- pastel +- pastime +- pastor +- pastrami +- pasture +- pasty +- patchwork +- patchy +- paternal +- paternity +- path +- patience +- patient +- patio +- patriarch +- patriot +- patrol +- patronage +- patronize +- pauper +- pavement +- paver +- pavestone +- pavilion +- paving +- pawing +- payable +- payback +- paycheck +- payday +- payee +- payer +- paying +- payment +- payphone +- payroll +- pebble +- pebbly +- pecan +- pectin +- peculiar +- peddling +- pediatric +- pedicure +- pedigree +- pedometer +- pegboard +- pelican +- pellet +- pelt +- pelvis +- penalize +- penalty +- pencil +- pendant +- pending +- penholder +- penknife +- pennant +- penniless +- penny +- penpal +- pension +- pentagon +- pentagram +- pep +- perceive +- percent +- perch +- percolate +- perennial +- perfected +- perfectly +- perfume +- periscope +- perish +- perjurer +- perjury +- perkiness +- perky +- perm +- peroxide +- perpetual +- perplexed +- persecute +- persevere +- persuaded +- persuader +- pesky +- peso +- pessimism +- pessimist +- pester +- pesticide +- petal +- petite +- petition +- petri +- petroleum +- petted +- petticoat +- pettiness +- petty +- petunia +- phantom +- phobia +- phoenix +- phonebook +- phoney +- phonics +- phoniness +- phony +- phosphate +- photo +- phrase +- phrasing +- placard +- placate +- placidly +- plank +- planner +- plant +- plasma +- plaster +- plastic +- plated +- platform +- plating +- platinum +- platonic +- platter +- platypus +- plausible +- plausibly +- playable +- playback +- player +- playful +- playgroup +- playhouse +- playing +- playlist +- playmaker +- playmate +- playoff +- playpen +- playroom +- playset +- plaything +- playtime +- plaza +- pleading +- pleat +- pledge +- plentiful +- plenty +- plethora +- plexiglas +- pliable +- plod +- plop +- plot +- plow +- ploy +- pluck +- plug +- plunder +- plunging +- plural +- plus +- plutonium +- plywood +- poach +- pod +- poem +- poet +- pogo +- pointed +- pointer +- pointing +- pointless +- pointy +- poise +- poison +- poker +- poking +- polar +- police +- policy +- polio +- polish +- politely +- polka +- polo +- polyester +- polygon +- polygraph +- polymer +- poncho +- pond +- pony +- popcorn +- pope +- poplar +- popper +- poppy +- popsicle +- populace +- popular +- populate +- porcupine +- pork +- porous +- porridge +- portable +- portal +- portfolio +- porthole +- portion +- portly +- portside +- poser +- posh +- posing +- possible +- possibly +- possum +- postage +- postal +- postbox +- postcard +- posted +- poster +- posting +- postnasal +- posture +- postwar +- pouch +- pounce +- pouncing +- pound +- pouring +- pout +- powdered +- powdering +- powdery +- power +- powwow +- pox +- praising +- prance +- prancing +- pranker +- prankish +- prankster +- prayer +- praying +- preacher +- preaching +- preachy +- preamble +- precinct +- precise +- precision +- precook +- precut +- predator +- predefine +- predict +- preface +- prefix +- preflight +- preformed +- pregame +- pregnancy +- pregnant +- preheated +- prelaunch +- prelaw +- prelude +- premiere +- premises +- premium +- prenatal +- preoccupy +- preorder +- prepaid +- prepay +- preplan +- preppy +- preschool +- prescribe +- preseason +- preset +- preshow +- president +- presoak +- press +- presume +- presuming +- preteen +- pretended +- pretender +- pretense +- pretext +- pretty +- pretzel +- prevail +- prevalent +- prevent +- preview +- previous +- prewar +- prewashed +- prideful +- pried +- primal +- primarily +- primary +- primate +- primer +- primp +- princess +- print +- prior +- prism +- prison +- prissy +- pristine +- privacy +- private +- privatize +- prize +- proactive +- probable +- probably +- probation +- probe +- probing +- probiotic +- problem +- procedure +- process +- proclaim +- procreate +- procurer +- prodigal +- prodigy +- produce +- product +- profane +- profanity +- professed +- professor +- profile +- profound +- profusely +- progeny +- prognosis +- program +- progress +- projector +- prologue +- prolonged +- promenade +- prominent +- promoter +- promotion +- prompter +- promptly +- prone +- prong +- pronounce +- pronto +- proofing +- proofread +- proofs +- propeller +- properly +- property +- proponent +- proposal +- propose +- props +- prorate +- protector +- protegee +- proton +- prototype +- protozoan +- protract +- protrude +- proud +- provable +- proved +- proven +- provided +- provider +- providing +- province +- proving +- provoke +- provoking +- provolone +- prowess +- prowler +- prowling +- proximity +- proxy +- prozac +- prude +- prudishly +- prune +- pruning +- pry +- psychic +- public +- publisher +- pucker +- pueblo +- pug +- pull +- pulmonary +- pulp +- pulsate +- pulse +- pulverize +- puma +- pumice +- pummel +- punch +- punctual +- punctuate +- punctured +- pungent +- punisher +- punk +- pupil +- puppet +- puppy +- purchase +- pureblood +- purebred +- purely +- pureness +- purgatory +- purge +- purging +- purifier +- purify +- purist +- puritan +- purity +- purple +- purplish +- purposely +- purr +- purse +- pursuable +- pursuant +- pursuit +- purveyor +- pushcart +- pushchair +- pusher +- pushiness +- pushing +- pushover +- pushpin +- pushup +- pushy +- putdown +- putt +- puzzle +- puzzling +- pyramid +- pyromania +- python +- quack +- quadrant +- quail +- quaintly +- quake +- quaking +- qualified +- qualifier +- qualify +- quality +- qualm +- quantum +- quarrel +- quarry +- quartered +- quarterly +- quarters +- quartet +- quench +- query +- quicken +- quickly +- quickness +- quicksand +- quickstep +- quiet +- quill +- quilt +- quintet +- quintuple +- quirk +- quit +- quiver +- quizzical +- quotable +- quotation +- quote +- rabid +- race +- racing +- racism +- rack +- racoon +- radar +- radial +- radiance +- radiantly +- radiated +- radiation +- radiator +- radio +- radish +- raffle +- raft +- rage +- ragged +- raging +- ragweed +- raider +- railcar +- railing +- railroad +- railway +- raisin +- rake +- raking +- rally +- ramble +- rambling +- ramp +- ramrod +- ranch +- rancidity +- random +- ranged +- ranger +- ranging +- ranked +- ranking +- ransack +- ranting +- rants +- rare +- rarity +- rascal +- rash +- rasping +- ravage +- raven +- ravine +- raving +- ravioli +- ravishing +- reabsorb +- reach +- reacquire +- reaction +- reactive +- reactor +- reaffirm +- ream +- reanalyze +- reappear +- reapply +- reappoint +- reapprove +- rearrange +- rearview +- reason +- reassign +- reassure +- reattach +- reawake +- rebalance +- rebate +- rebel +- rebirth +- reboot +- reborn +- rebound +- rebuff +- rebuild +- rebuilt +- reburial +- rebuttal +- recall +- recant +- recapture +- recast +- recede +- recent +- recess +- recharger +- recipient +- recital +- recite +- reckless +- reclaim +- recliner +- reclining +- recluse +- reclusive +- recognize +- recoil +- recollect +- recolor +- reconcile +- reconfirm +- reconvene +- recopy +- record +- recount +- recoup +- recovery +- recreate +- rectal +- rectangle +- rectified +- rectify +- recycled +- recycler +- recycling +- reemerge +- reenact +- reenter +- reentry +- reexamine +- referable +- referee +- reference +- refill +- refinance +- refined +- refinery +- refining +- refinish +- reflected +- reflector +- reflex +- reflux +- refocus +- refold +- reforest +- reformat +- reformed +- reformer +- reformist +- refract +- refrain +- refreeze +- refresh +- refried +- refueling +- refund +- refurbish +- refurnish +- refusal +- refuse +- refusing +- refutable +- refute +- regain +- regalia +- regally +- reggae +- regime +- region +- register +- registrar +- registry +- regress +- regretful +- regroup +- regular +- regulate +- regulator +- rehab +- reheat +- rehire +- rehydrate +- reimburse +- reissue +- reiterate +- rejoice +- rejoicing +- rejoin +- rekindle +- relapse +- relapsing +- relatable +- related +- relation +- relative +- relax +- relay +- relearn +- release +- relenting +- reliable +- reliably +- reliance +- reliant +- relic +- relieve +- relieving +- relight +- relish +- relive +- reload +- relocate +- relock +- reluctant +- rely +- remake +- remark +- remarry +- rematch +- remedial +- remedy +- remember +- reminder +- remindful +- remission +- remix +- remnant +- remodeler +- remold +- remorse +- remote +- removable +- removal +- removed +- remover +- removing +- rename +- renderer +- rendering +- rendition +- renegade +- renewable +- renewably +- renewal +- renewed +- renounce +- renovate +- renovator +- rentable +- rental +- rented +- renter +- reoccupy +- reoccur +- reopen +- reorder +- repackage +- repacking +- repaint +- repair +- repave +- repaying +- repayment +- repeal +- repeated +- repeater +- repent +- rephrase +- replace +- replay +- replica +- reply +- reporter +- repose +- repossess +- repost +- repressed +- reprimand +- reprint +- reprise +- reproach +- reprocess +- reproduce +- reprogram +- reps +- reptile +- reptilian +- repugnant +- repulsion +- repulsive +- repurpose +- reputable +- reputably +- request +- require +- requisite +- reroute +- rerun +- resale +- resample +- rescuer +- reseal +- research +- reselect +- reseller +- resemble +- resend +- resent +- reset +- reshape +- reshoot +- reshuffle +- residence +- residency +- resident +- residual +- residue +- resigned +- resilient +- resistant +- resisting +- resize +- resolute +- resolved +- resonant +- resonate +- resort +- resource +- respect +- resubmit +- result +- resume +- resupply +- resurface +- resurrect +- retail +- retainer +- retaining +- retake +- retaliate +- retention +- rethink +- retinal +- retired +- retiree +- retiring +- retold +- retool +- retorted +- retouch +- retrace +- retract +- retrain +- retread +- retreat +- retrial +- retrieval +- retriever +- retry +- return +- retying +- retype +- reunion +- reunite +- reusable +- reuse +- reveal +- reveler +- revenge +- revenue +- reverb +- revered +- reverence +- reverend +- reversal +- reverse +- reversing +- reversion +- revert +- revisable +- revise +- revision +- revisit +- revivable +- revival +- reviver +- reviving +- revocable +- revoke +- revolt +- revolver +- revolving +- reward +- rewash +- rewind +- rewire +- reword +- rework +- rewrap +- rewrite +- rhyme +- ribbon +- ribcage +- rice +- riches +- richly +- richness +- rickety +- ricotta +- riddance +- ridden +- ride +- riding +- rifling +- rift +- rigging +- rigid +- rigor +- rimless +- rimmed +- rind +- rink +- rinse +- rinsing +- riot +- ripcord +- ripeness +- ripening +- ripping +- ripple +- rippling +- riptide +- rise +- rising +- risk +- risotto +- ritalin +- ritzy +- rival +- riverbank +- riverbed +- riverboat +- riverside +- riveter +- riveting +- roamer +- roaming +- roast +- robbing +- robe +- robin +- robotics +- robust +- rockband +- rocker +- rocket +- rockfish +- rockiness +- rocking +- rocklike +- rockslide +- rockstar +- rocky +- rogue +- roman +- romp +- rope +- roping +- roster +- rosy +- rotten +- rotting +- rotunda +- roulette +- rounding +- roundish +- roundness +- roundup +- roundworm +- routine +- routing +- rover +- roving +- royal +- rubbed +- rubber +- rubbing +- rubble +- rubdown +- ruby +- ruckus +- rudder +- rug +- ruined +- rule +- rumble +- rumbling +- rummage +- rumor +- runaround +- rundown +- runner +- running +- runny +- runt +- runway +- rupture +- rural +- ruse +- rush +- rust +- rut +- sabbath +- sabotage +- sacrament +- sacred +- sacrifice +- sadden +- saddlebag +- saddled +- saddling +- sadly +- sadness +- safari +- safeguard +- safehouse +- safely +- safeness +- saffron +- saga +- sage +- sagging +- saggy +- said +- saint +- sake +- salad +- salami +- salaried +- salary +- saline +- salon +- saloon +- salsa +- salt +- salutary +- salute +- salvage +- salvaging +- salvation +- same +- sample +- sampling +- sanction +- sanctity +- sanctuary +- sandal +- sandbag +- sandbank +- sandbar +- sandblast +- sandbox +- sanded +- sandfish +- sanding +- sandlot +- sandpaper +- sandpit +- sandstone +- sandstorm +- sandworm +- sandy +- sanitary +- sanitizer +- sank +- santa +- sapling +- sappiness +- sappy +- sarcasm +- sarcastic +- sardine +- sash +- sasquatch +- sassy +- satchel +- satiable +- satin +- satirical +- satisfied +- satisfy +- saturate +- saturday +- sauciness +- saucy +- sauna +- savage +- savanna +- saved +- savings +- savior +- savor +- saxophone +- say +- scabbed +- scabby +- scalded +- scalding +- scale +- scaling +- scallion +- scallop +- scalping +- scam +- scandal +- scanner +- scanning +- scant +- scapegoat +- scarce +- scarcity +- scarecrow +- scared +- scarf +- scarily +- scariness +- scarring +- scary +- scavenger +- scenic +- schedule +- schematic +- scheme +- scheming +- schilling +- schnapps +- scholar +- science +- scientist +- scion +- scoff +- scolding +- scone +- scoop +- scooter +- scope +- scorch +- scorebook +- scorecard +- scored +- scoreless +- scorer +- scoring +- scorn +- scorpion +- scotch +- scoundrel +- scoured +- scouring +- scouting +- scouts +- scowling +- scrabble +- scraggly +- scrambled +- scrambler +- scrap +- scratch +- scrawny +- screen +- scribble +- scribe +- scribing +- scrimmage +- script +- scroll +- scrooge +- scrounger +- scrubbed +- scrubber +- scruffy +- scrunch +- scrutiny +- scuba +- scuff +- sculptor +- sculpture +- scurvy +- scuttle +- secluded +- secluding +- seclusion +- second +- secrecy +- secret +- sectional +- sector +- secular +- securely +- security +- sedan +- sedate +- sedation +- sedative +- sediment +- seduce +- seducing +- segment +- seismic +- seizing +- seldom +- selected +- selection +- selective +- selector +- self +- seltzer +- semantic +- semester +- semicolon +- semifinal +- seminar +- semisoft +- semisweet +- senate +- senator +- send +- senior +- senorita +- sensation +- sensitive +- sensitize +- sensually +- sensuous +- sepia +- september +- septic +- septum +- sequel +- sequence +- sequester +- series +- sermon +- serotonin +- serpent +- serrated +- serve +- service +- serving +- sesame +- sessions +- setback +- setting +- settle +- settling +- setup +- sevenfold +- seventeen +- seventh +- seventy +- severity +- shabby +- shack +- shaded +- shadily +- shadiness +- shading +- shadow +- shady +- shaft +- shakable +- shakily +- shakiness +- shaking +- shaky +- shale +- shallot +- shallow +- shame +- shampoo +- shamrock +- shank +- shanty +- shape +- shaping +- share +- sharpener +- sharper +- sharpie +- sharply +- sharpness +- shawl +- sheath +- shed +- sheep +- sheet +- shelf +- shell +- shelter +- shelve +- shelving +- sherry +- shield +- shifter +- shifting +- shiftless +- shifty +- shimmer +- shimmy +- shindig +- shine +- shingle +- shininess +- shining +- shiny +- ship +- shirt +- shivering +- shock +- shone +- shoplift +- shopper +- shopping +- shoptalk +- shore +- shortage +- shortcake +- shortcut +- shorten +- shorter +- shorthand +- shortlist +- shortly +- shortness +- shorts +- shortwave +- shorty +- shout +- shove +- showbiz +- showcase +- showdown +- shower +- showgirl +- showing +- showman +- shown +- showoff +- showpiece +- showplace +- showroom +- showy +- shrank +- shrapnel +- shredder +- shredding +- shrewdly +- shriek +- shrill +- shrimp +- shrine +- shrink +- shrivel +- shrouded +- shrubbery +- shrubs +- shrug +- shrunk +- shucking +- shudder +- shuffle +- shuffling +- shun +- shush +- shut +- shy +- siamese +- siberian +- sibling +- siding +- sierra +- siesta +- sift +- sighing +- silenced +- silencer +- silent +- silica +- silicon +- silk +- silliness +- silly +- silo +- silt +- silver +- similarly +- simile +- simmering +- simple +- simplify +- simply +- sincere +- sincerity +- singer +- singing +- single +- singular +- sinister +- sinless +- sinner +- sinuous +- sip +- siren +- sister +- sitcom +- sitter +- sitting +- situated +- situation +- sixfold +- sixteen +- sixth +- sixties +- sixtieth +- sixtyfold +- sizable +- sizably +- size +- sizing +- sizzle +- sizzling +- skater +- skating +- skedaddle +- skeletal +- skeleton +- skeptic +- sketch +- skewed +- skewer +- skid +- skied +- skier +- skies +- skiing +- skilled +- skillet +- skillful +- skimmed +- skimmer +- skimming +- skimpily +- skincare +- skinhead +- skinless +- skinning +- skinny +- skintight +- skipper +- skipping +- skirmish +- skirt +- skittle +- skydiver +- skylight +- skyline +- skype +- skyrocket +- skyward +- slab +- slacked +- slacker +- slacking +- slackness +- slacks +- slain +- slam +- slander +- slang +- slapping +- slapstick +- slashed +- slashing +- slate +- slather +- slaw +- sled +- sleek +- sleep +- sleet +- sleeve +- slept +- sliceable +- sliced +- slicer +- slicing +- slick +- slider +- slideshow +- sliding +- slighted +- slighting +- slightly +- slimness +- slimy +- slinging +- slingshot +- slinky +- slip +- slit +- sliver +- slobbery +- slogan +- sloped +- sloping +- sloppily +- sloppy +- slot +- slouching +- slouchy +- sludge +- slug +- slum +- slurp +- slush +- sly +- small +- smartly +- smartness +- smasher +- smashing +- smashup +- smell +- smelting +- smile +- smilingly +- smirk +- smite +- smith +- smitten +- smock +- smog +- smoked +- smokeless +- smokiness +- smoking +- smoky +- smolder +- smooth +- smother +- smudge +- smudgy +- smuggler +- smuggling +- smugly +- smugness +- snack +- snagged +- snaking +- snap +- snare +- snarl +- snazzy +- sneak +- sneer +- sneeze +- sneezing +- snide +- sniff +- snippet +- snipping +- snitch +- snooper +- snooze +- snore +- snoring +- snorkel +- snort +- snout +- snowbird +- snowboard +- snowbound +- snowcap +- snowdrift +- snowdrop +- snowfall +- snowfield +- snowflake +- snowiness +- snowless +- snowman +- snowplow +- snowshoe +- snowstorm +- snowsuit +- snowy +- snub +- snuff +- snuggle +- snugly +- snugness +- speak +- spearfish +- spearhead +- spearman +- spearmint +- species +- specimen +- specked +- speckled +- specks +- spectacle +- spectator +- spectrum +- speculate +- speech +- speed +- spellbind +- speller +- spelling +- spendable +- spender +- spending +- spent +- spew +- sphere +- spherical +- sphinx +- spider +- spied +- spiffy +- spill +- spilt +- spinach +- spinal +- spindle +- spinner +- spinning +- spinout +- spinster +- spiny +- spiral +- spirited +- spiritism +- spirits +- spiritual +- splashed +- splashing +- splashy +- splatter +- spleen +- splendid +- splendor +- splice +- splicing +- splinter +- splotchy +- splurge +- spoilage +- spoiled +- spoiler +- spoiling +- spoils +- spoken +- spokesman +- sponge +- spongy +- sponsor +- spoof +- spookily +- spooky +- spool +- spoon +- spore +- sporting +- sports +- sporty +- spotless +- spotlight +- spotted +- spotter +- spotting +- spotty +- spousal +- spouse +- spout +- sprain +- sprang +- sprawl +- spray +- spree +- sprig +- spring +- sprinkled +- sprinkler +- sprint +- sprite +- sprout +- spruce +- sprung +- spry +- spud +- spur +- sputter +- spyglass +- squabble +- squad +- squall +- squander +- squash +- squatted +- squatter +- squatting +- squeak +- squealer +- squealing +- squeamish +- squeegee +- squeeze +- squeezing +- squid +- squiggle +- squiggly +- squint +- squire +- squirt +- squishier +- squishy +- stability +- stabilize +- stable +- stack +- stadium +- staff +- stage +- staging +- stagnant +- stagnate +- stainable +- stained +- staining +- stainless +- stalemate +- staleness +- stalling +- stallion +- stamina +- stammer +- stamp +- stand +- stank +- staple +- stapling +- starboard +- starch +- stardom +- stardust +- starfish +- stargazer +- staring +- stark +- starless +- starlet +- starlight +- starlit +- starring +- starry +- starship +- starter +- starting +- startle +- startling +- startup +- starved +- starving +- stash +- state +- static +- statistic +- statue +- stature +- status +- statute +- statutory +- staunch +- stays +- steadfast +- steadier +- steadily +- steadying +- steam +- steed +- steep +- steerable +- steering +- steersman +- stegosaur +- stellar +- stem +- stench +- stencil +- step +- stereo +- sterile +- sterility +- sterilize +- sterling +- sternness +- sternum +- stew +- stick +- stiffen +- stiffly +- stiffness +- stifle +- stifling +- stillness +- stilt +- stimulant +- stimulate +- stimuli +- stimulus +- stinger +- stingily +- stinging +- stingray +- stingy +- stinking +- stinky +- stipend +- stipulate +- stir +- stitch +- stock +- stoic +- stoke +- stole +- stomp +- stonewall +- stoneware +- stonework +- stoning +- stony +- stood +- stooge +- stool +- stoop +- stoplight +- stoppable +- stoppage +- stopped +- stopper +- stopping +- stopwatch +- storable +- storage +- storeroom +- storewide +- storm +- stout +- stove +- stowaway +- stowing +- straddle +- straggler +- strained +- strainer +- straining +- strangely +- stranger +- strangle +- strategic +- strategy +- stratus +- straw +- stray +- streak +- stream +- street +- strength +- strenuous +- strep +- stress +- stretch +- strewn +- stricken +- strict +- stride +- strife +- strike +- striking +- strive +- striving +- strobe +- strode +- stroller +- strongbox +- strongly +- strongman +- struck +- structure +- strudel +- struggle +- strum +- strung +- strut +- stubbed +- stubble +- stubbly +- stubborn +- stucco +- stuck +- student +- studied +- studio +- study +- stuffed +- stuffing +- stuffy +- stumble +- stumbling +- stump +- stung +- stunned +- stunner +- stunning +- stunt +- stupor +- sturdily +- sturdy +- styling +- stylishly +- stylist +- stylized +- stylus +- suave +- subarctic +- subatomic +- subdivide +- subdued +- subduing +- subfloor +- subgroup +- subheader +- subject +- sublease +- sublet +- sublevel +- sublime +- submarine +- submerge +- submersed +- submitter +- subpanel +- subpar +- subplot +- subprime +- subscribe +- subscript +- subsector +- subside +- subsiding +- subsidize +- subsidy +- subsoil +- subsonic +- substance +- subsystem +- subtext +- subtitle +- subtly +- subtotal +- subtract +- subtype +- suburb +- subway +- subwoofer +- subzero +- succulent +- such +- suction +- sudden +- sudoku +- suds +- sufferer +- suffering +- suffice +- suffix +- suffocate +- suffrage +- sugar +- suggest +- suing +- suitable +- suitably +- suitcase +- suitor +- sulfate +- sulfide +- sulfite +- sulfur +- sulk +- sullen +- sulphate +- sulphuric +- sultry +- superbowl +- superglue +- superhero +- superior +- superjet +- superman +- supermom +- supernova +- supervise +- supper +- supplier +- supply +- support +- supremacy +- supreme +- surcharge +- surely +- sureness +- surface +- surfacing +- surfboard +- surfer +- surgery +- surgical +- surging +- surname +- surpass +- surplus +- surprise +- surreal +- surrender +- surrogate +- surround +- survey +- survival +- survive +- surviving +- survivor +- sushi +- suspect +- suspend +- suspense +- sustained +- sustainer +- swab +- swaddling +- swagger +- swampland +- swan +- swapping +- swarm +- sway +- swear +- sweat +- sweep +- swell +- swept +- swerve +- swifter +- swiftly +- swiftness +- swimmable +- swimmer +- swimming +- swimsuit +- swimwear +- swinger +- swinging +- swipe +- swirl +- switch +- swivel +- swizzle +- swooned +- swoop +- swoosh +- swore +- sworn +- swung +- sycamore +- sympathy +- symphonic +- symphony +- symptom +- synapse +- syndrome +- synergy +- synopses +- synopsis +- synthesis +- synthetic +- syrup +- system +- t-shirt +- tabasco +- tabby +- tableful +- tables +- tablet +- tableware +- tabloid +- tackiness +- tacking +- tackle +- tackling +- tacky +- taco +- tactful +- tactical +- tactics +- tactile +- tactless +- tadpole +- taekwondo +- tag +- tainted +- take +- taking +- talcum +- talisman +- tall +- talon +- tamale +- tameness +- tamer +- tamper +- tank +- tanned +- tannery +- tanning +- tantrum +- tapeless +- tapered +- tapering +- tapestry +- tapioca +- tapping +- taps +- tarantula +- target +- tarmac +- tarnish +- tarot +- tartar +- tartly +- tartness +- task +- tassel +- taste +- tastiness +- tasting +- tasty +- tattered +- tattle +- tattling +- tattoo +- taunt +- tavern +- thank +- that +- thaw +- theater +- theatrics +- thee +- theft +- theme +- theology +- theorize +- thermal +- thermos +- thesaurus +- these +- thesis +- thespian +- thicken +- thicket +- thickness +- thieving +- thievish +- thigh +- thimble +- thing +- think +- thinly +- thinner +- thinness +- thinning +- thirstily +- thirsting +- thirsty +- thirty +- thong +- thorn +- those +- thousand +- thrash +- thread +- threaten +- threefold +- thrift +- thrill +- thrive +- thriving +- throat +- throbbing +- throng +- throttle +- throwaway +- throwback +- thrower +- throwing +- thud +- thumb +- thumping +- thursday +- thus +- thwarting +- thyself +- tiara +- tibia +- tidal +- tidbit +- tidiness +- tidings +- tidy +- tiger +- tighten +- tightly +- tightness +- tightrope +- tightwad +- tigress +- tile +- tiling +- till +- tilt +- timid +- timing +- timothy +- tinderbox +- tinfoil +- tingle +- tingling +- tingly +- tinker +- tinkling +- tinsel +- tinsmith +- tint +- tinwork +- tiny +- tipoff +- tipped +- tipper +- tipping +- tiptoeing +- tiptop +- tiring +- tissue +- trace +- tracing +- track +- traction +- tractor +- trade +- trading +- tradition +- traffic +- tragedy +- trailing +- trailside +- train +- traitor +- trance +- tranquil +- transfer +- transform +- translate +- transpire +- transport +- transpose +- trapdoor +- trapeze +- trapezoid +- trapped +- trapper +- trapping +- traps +- trash +- travel +- traverse +- travesty +- tray +- treachery +- treading +- treadmill +- treason +- treat +- treble +- tree +- trekker +- tremble +- trembling +- tremor +- trench +- trend +- trespass +- triage +- trial +- triangle +- tribesman +- tribunal +- tribune +- tributary +- tribute +- triceps +- trickery +- trickily +- tricking +- trickle +- trickster +- tricky +- tricolor +- tricycle +- trident +- tried +- trifle +- trifocals +- trillion +- trilogy +- trimester +- trimmer +- trimming +- trimness +- trinity +- trio +- tripod +- tripping +- triumph +- trivial +- trodden +- trolling +- trombone +- trophy +- tropical +- tropics +- trouble +- troubling +- trough +- trousers +- trout +- trowel +- truce +- truck +- truffle +- trunks +- trustable +- trustee +- trustful +- trusting +- trustless +- truth +- try +- tubby +- tubeless +- tubular +- tucking +- tuesday +- tug +- tuition +- tulip +- tumble +- tumbling +- tummy +- turban +- turbine +- turbofan +- turbojet +- turbulent +- turf +- turkey +- turmoil +- turret +- turtle +- tusk +- tutor +- tutu +- tux +- tweak +- tweed +- tweet +- tweezers +- twelve +- twentieth +- twenty +- twerp +- twice +- twiddle +- twiddling +- twig +- twilight +- twine +- twins +- twirl +- twistable +- twisted +- twister +- twisting +- twisty +- twitch +- twitter +- tycoon +- tying +- tyke +- udder +- ultimate +- ultimatum +- ultra +- umbilical +- umbrella +- umpire +- unabashed +- unable +- unadorned +- unadvised +- unafraid +- unaired +- unaligned +- unaltered +- unarmored +- unashamed +- unaudited +- unawake +- unaware +- unbaked +- unbalance +- unbeaten +- unbend +- unbent +- unbiased +- unbitten +- unblended +- unblessed +- unblock +- unbolted +- unbounded +- unboxed +- unbraided +- unbridle +- unbroken +- unbuckled +- unbundle +- unburned +- unbutton +- uncanny +- uncapped +- uncaring +- uncertain +- unchain +- unchanged +- uncharted +- uncheck +- uncivil +- unclad +- unclaimed +- unclamped +- unclasp +- uncle +- unclip +- uncloak +- unclog +- unclothed +- uncoated +- uncoiled +- uncolored +- uncombed +- uncommon +- uncooked +- uncork +- uncorrupt +- uncounted +- uncouple +- uncouth +- uncover +- uncross +- uncrown +- uncrushed +- uncured +- uncurious +- uncurled +- uncut +- undamaged +- undated +- undaunted +- undead +- undecided +- undefined +- underage +- underarm +- undercoat +- undercook +- undercut +- underdog +- underdone +- underfed +- underfeed +- underfoot +- undergo +- undergrad +- underhand +- underline +- underling +- undermine +- undermost +- underpaid +- underpass +- underpay +- underrate +- undertake +- undertone +- undertook +- undertow +- underuse +- underwear +- underwent +- underwire +- undesired +- undiluted +- undivided +- undocked +- undoing +- undone +- undrafted +- undress +- undrilled +- undusted +- undying +- unearned +- unearth +- unease +- uneasily +- uneasy +- uneatable +- uneaten +- unedited +- unelected +- unending +- unengaged +- unenvied +- unequal +- unethical +- uneven +- unexpired +- unexposed +- unfailing +- unfair +- unfasten +- unfazed +- unfeeling +- unfiled +- unfilled +- unfitted +- unfitting +- unfixable +- unfixed +- unflawed +- unfocused +- unfold +- unfounded +- unframed +- unfreeze +- unfrosted +- unfrozen +- unfunded +- unglazed +- ungloved +- unglue +- ungodly +- ungraded +- ungreased +- unguarded +- unguided +- unhappily +- unhappy +- unharmed +- unhealthy +- unheard +- unhearing +- unheated +- unhelpful +- unhidden +- unhinge +- unhitched +- unholy +- unhook +- unicorn +- unicycle +- unified +- unifier +- uniformed +- uniformly +- unify +- unimpeded +- uninjured +- uninstall +- uninsured +- uninvited +- union +- uniquely +- unisexual +- unison +- unissued +- unit +- universal +- universe +- unjustly +- unkempt +- unkind +- unknotted +- unknowing +- unknown +- unlaced +- unlatch +- unlawful +- unleaded +- unlearned +- unleash +- unless +- unleveled +- unlighted +- unlikable +- unlimited +- unlined +- unlinked +- unlisted +- unlit +- unlivable +- unloaded +- unloader +- unlocked +- unlocking +- unlovable +- unloved +- unlovely +- unloving +- unluckily +- unlucky +- unmade +- unmanaged +- unmanned +- unmapped +- unmarked +- unmasked +- unmasking +- unmatched +- unmindful +- unmixable +- unmixed +- unmolded +- unmoral +- unmovable +- unmoved +- unmoving +- unnamable +- unnamed +- unnatural +- unneeded +- unnerve +- unnerving +- unnoticed +- unopened +- unopposed +- unpack +- unpadded +- unpaid +- unpainted +- unpaired +- unpaved +- unpeeled +- unpicked +- unpiloted +- unpinned +- unplanned +- unplanted +- unpleased +- unpledged +- unplowed +- unplug +- unpopular +- unproven +- unquote +- unranked +- unrated +- unraveled +- unreached +- unread +- unreal +- unreeling +- unrefined +- unrelated +- unrented +- unrest +- unretired +- unrevised +- unrigged +- unripe +- unrivaled +- unroasted +- unrobed +- unroll +- unruffled +- unruly +- unrushed +- unsaddle +- unsafe +- unsaid +- unsalted +- unsaved +- unsavory +- unscathed +- unscented +- unscrew +- unsealed +- unseated +- unsecured +- unseeing +- unseemly +- unseen +- unselect +- unselfish +- unsent +- unsettled +- unshackle +- unshaken +- unshaved +- unshaven +- unsheathe +- unshipped +- unsightly +- unsigned +- unskilled +- unsliced +- unsmooth +- unsnap +- unsocial +- unsoiled +- unsold +- unsolved +- unsorted +- unspoiled +- unspoken +- unstable +- unstaffed +- unstamped +- unsteady +- unsterile +- unstirred +- unstitch +- unstopped +- unstuck +- unstuffed +- unstylish +- unsubtle +- unsubtly +- unsuited +- unsure +- unsworn +- untagged +- untainted +- untaken +- untamed +- untangled +- untapped +- untaxed +- unthawed +- unthread +- untidy +- untie +- until +- untimed +- untimely +- untitled +- untoasted +- untold +- untouched +- untracked +- untrained +- untreated +- untried +- untrimmed +- untrue +- untruth +- unturned +- untwist +- untying +- unusable +- unused +- unusual +- unvalued +- unvaried +- unvarying +- unveiled +- unveiling +- unvented +- unviable +- unvisited +- unvocal +- unwanted +- unwarlike +- unwary +- unwashed +- unwatched +- unweave +- unwed +- unwelcome +- unwell +- unwieldy +- unwilling +- unwind +- unwired +- unwitting +- unwomanly +- unworldly +- unworn +- unworried +- unworthy +- unwound +- unwoven +- unwrapped +- unwritten +- unzip +- upbeat +- upchuck +- upcoming +- upcountry +- update +- upfront +- upgrade +- upheaval +- upheld +- uphill +- uphold +- uplifted +- uplifting +- upload +- upon +- upper +- upright +- uprising +- upriver +- uproar +- uproot +- upscale +- upside +- upstage +- upstairs +- upstart +- upstate +- upstream +- upstroke +- upswing +- uptake +- uptight +- uptown +- upturned +- upward +- upwind +- uranium +- urban +- urchin +- urethane +- urgency +- urgent +- urging +- urologist +- urology +- usable +- usage +- useable +- used +- uselessly +- user +- usher +- usual +- utensil +- utility +- utilize +- utmost +- utopia +- utter +- vacancy +- vacant +- vacate +- vacation +- vagabond +- vagrancy +- vagrantly +- vaguely +- vagueness +- valiant +- valid +- valium +- valley +- valuables +- value +- vanilla +- vanish +- vanity +- vanquish +- vantage +- vaporizer +- variable +- variably +- varied +- variety +- various +- varmint +- varnish +- varsity +- varying +- vascular +- vaseline +- vastly +- vastness +- veal +- vegan +- veggie +- vehicular +- velcro +- velocity +- velvet +- vendetta +- vending +- vendor +- veneering +- vengeful +- venomous +- ventricle +- venture +- venue +- venus +- verbalize +- verbally +- verbose +- verdict +- verify +- verse +- version +- versus +- vertebrae +- vertical +- vertigo +- very +- vessel +- vest +- veteran +- veto +- vexingly +- viability +- viable +- vibes +- vice +- vicinity +- victory +- video +- viewable +- viewer +- viewing +- viewless +- viewpoint +- vigorous +- village +- villain +- vindicate +- vineyard +- vintage +- violate +- violation +- violator +- violet +- violin +- viper +- viral +- virtual +- virtuous +- virus +- visa +- viscosity +- viscous +- viselike +- visible +- visibly +- vision +- visiting +- visitor +- visor +- vista +- vitality +- vitalize +- vitally +- vitamins +- vivacious +- vividly +- vividness +- vixen +- vocalist +- vocalize +- vocally +- vocation +- voice +- voicing +- void +- volatile +- volley +- voltage +- volumes +- voter +- voting +- voucher +- vowed +- vowel +- voyage +- wackiness +- wad +- wafer +- waffle +- waged +- wager +- wages +- waggle +- wagon +- wake +- waking +- walk +- walmart +- walnut +- walrus +- waltz +- wand +- wannabe +- wanted +- wanting +- wasabi +- washable +- washbasin +- washboard +- washbowl +- washcloth +- washday +- washed +- washer +- washhouse +- washing +- washout +- washroom +- washstand +- washtub +- wasp +- wasting +- watch +- water +- waviness +- waving +- wavy +- whacking +- whacky +- wham +- wharf +- wheat +- whenever +- whiff +- whimsical +- whinny +- whiny +- whisking +- whoever +- whole +- whomever +- whoopee +- whooping +- whoops +- why +- wick +- widely +- widen +- widget +- widow +- width +- wieldable +- wielder +- wife +- wifi +- wikipedia +- wildcard +- wildcat +- wilder +- wildfire +- wildfowl +- wildland +- wildlife +- wildly +- wildness +- willed +- willfully +- willing +- willow +- willpower +- wilt +- wimp +- wince +- wincing +- wind +- wing +- winking +- winner +- winnings +- winter +- wipe +- wired +- wireless +- wiring +- wiry +- wisdom +- wise +- wish +- wisplike +- wispy +- wistful +- wizard +- wobble +- wobbling +- wobbly +- wok +- wolf +- wolverine +- womanhood +- womankind +- womanless +- womanlike +- womanly +- womb +- woof +- wooing +- wool +- woozy +- word +- work +- worried +- worrier +- worrisome +- worry +- worsening +- worshiper +- worst +- wound +- woven +- wow +- wrangle +- wrath +- wreath +- wreckage +- wrecker +- wrecking +- wrench +- wriggle +- wriggly +- wrinkle +- wrinkly +- wrist +- writing +- written +- wrongdoer +- wronged +- wrongful +- wrongly +- wrongness +- wrought +- xbox +- xerox +- yahoo +- yam +- yanking +- yapping +- yard +- yarn +- yeah +- yearbook +- yearling +- yearly +- yearning +- yeast +- yelling +- yelp +- yen +- yesterday +- yiddish +- yield +- yin +- yippee +- yo-yo +- yodel +- yoga +- yogurt +- yonder +- yoyo +- yummy +- zap +- zealous +- zebra +- zen +- zeppelin +- zero +- zestfully +- zesty +- zigzagged +- zipfile +- zipping +- zippy +- zips +- zit +- zodiac +- zombie +- zone +- zoning +- zookeeper +- zoologist +- zoology +- zoom +- duy + +simple_words: +- acid +- acorn +- acre +- acts +- afar +- affix +- aged +- agent +- agile +- aging +- agony +- ahead +- aide +- aids +- aim +- ajar +- alarm +- alias +- alibi +- alien +- alike +- alive +- aloe +- aloft +- aloha +- alone +- amend +- amino +- ample +- amuse +- angel +- anger +- angle +- ankle +- apple +- april +- apron +- aqua +- area +- arena +- argue +- arise +- armed +- armor +- army +- aroma +- array +- arson +- art +- ashen +- ashes +- atlas +- atom +- attic +- audio +- avert +- avoid +- awake +- award +- awoke +- axis +- bacon +- badge +- bagel +- baggy +- baked +- baker +- balmy +- banjo +- barge +- barn +- bash +- basil +- bask +- batch +- bath +- baton +- bats +- blade +- blank +- blast +- blaze +- bleak +- blend +- bless +- blimp +- blink +- bloat +- blob +- blog +- blot +- blunt +- blurt +- blush +- boast +- boat +- body +- boil +- bok +- bolt +- boned +- boney +- bonus +- bony +- book +- booth +- boots +- boss +- botch +- both +- boxer +- breed +- bribe +- brick +- bride +- brim +- bring +- brink +- brisk +- broad +- broil +- broke +- brook +- broom +- brush +- buck +- bud +- buggy +- bulge +- bulk +- bully +- bunch +- bunny +- bunt +- bush +- bust +- busy +- buzz +- cable +- cache +- cadet +- cage +- cake +- calm +- cameo +- canal +- candy +- cane +- canon +- cape +- card +- cargo +- carol +- carry +- carve +- case +- cash +- cause +- cedar +- chain +- chair +- chant +- chaos +- charm +- chase +- cheek +- cheer +- chef +- chess +- chest +- chew +- chief +- chili +- chill +- chip +- chomp +- chop +- chow +- chuck +- chump +- chunk +- churn +- chute +- cider +- cinch +- city +- civic +- civil +- clad +- claim +- clamp +- clap +- clash +- clasp +- class +- claw +- clay +- clean +- clear +- cleat +- cleft +- clerk +- click +- cling +- clink +- clip +- cloak +- clock +- clone +- cloth +- cloud +- clump +- coach +- coast +- coat +- cod +- coil +- coke +- cola +- cold +- colt +- coma +- come +- comic +- comma +- cone +- cope +- copy +- coral +- cork +- cost +- cot +- couch +- cough +- cover +- cozy +- craft +- cramp +- crane +- crank +- crate +- crave +- crawl +- crazy +- creme +- crepe +- crept +- crib +- cried +- crisp +- crook +- crop +- cross +- crowd +- crown +- crumb +- crush +- crust +- cub +- cult +- cupid +- cure +- curl +- curry +- curse +- curve +- curvy +- cushy +- cut +- cycle +- dab +- dad +- daily +- dairy +- daisy +- dance +- dandy +- darn +- dart +- dash +- data +- date +- dawn +- deaf +- deal +- dean +- debit +- debt +- debug +- decaf +- decal +- decay +- deck +- decor +- decoy +- deed +- delay +- denim +- dense +- dent +- depth +- derby +- desk +- dial +- diary +- dice +- dig +- dill +- dime +- dimly +- diner +- dingy +- disco +- dish +- disk +- ditch +- ditzy +- dizzy +- dock +- dodge +- doing +- doll +- dome +- donor +- donut +- dose +- dot +- dove +- down +- dowry +- doze +- drab +- drama +- drank +- draw +- dress +- dried +- drift +- drill +- drive +- drone +- droop +- drove +- drown +- drum +- dry +- duck +- duct +- dude +- dug +- duke +- duo +- dusk +- dust +- duty +- dwarf +- dwell +- eagle +- early +- earth +- easel +- east +- eaten +- eats +- ebay +- ebony +- ebook +- echo +- edge +- eel +- eject +- elbow +- elder +- elf +- elk +- elm +- elope +- elude +- elves +- email +- emit +- empty +- emu +- enter +- entry +- envoy +- equal +- erase +- error +- erupt +- essay +- etch +- evade +- even +- evict +- evil +- evoke +- exact +- exit +- fable +- faced +- fact +- fade +- fall +- FALSE +- fancy +- fang +- fax +- feast +- feed +- femur +- fence +- fend +- ferry +- fetal +- fetch +- fever +- fiber +- fifth +- fifty +- film +- filth +- final +- finch +- fit +- flag +- flaky +- flame +- flap +- flask +- fled +- flick +- fling +- flint +- flip +- flirt +- float +- flock +- flop +- floss +- flyer +- foam +- foe +- fog +- foil +- folic +- folk +- food +- fool +- found +- fox +- foyer +- frail +- frame +- fray +- fresh +- fried +- frill +- frisk +- from +- front +- frost +- froth +- frown +- froze +- fruit +- gag +- gains +- gala +- game +- gap +- gas +- gave +- gear +- gecko +- geek +- gem +- genre +- gift +- gig +- gills +- given +- giver +- glad +- glass +- glide +- gloss +- glove +- glow +- glue +- goal +- going +- golf +- gong +- good +- gooey +- goofy +- gore +- gown +- grab +- grain +- grant +- grape +- graph +- grasp +- grass +- grave +- gravy +- gray +- green +- greet +- grew +- grid +- grief +- grill +- grip +- grit +- groom +- grope +- growl +- grub +- grunt +- guide +- gulf +- gulp +- gummy +- guru +- gush +- gut +- guy +- habit +- half +- halo +- halt +- happy +- harm +- hash +- hasty +- hatch +- hate +- haven +- hazel +- hazy +- heap +- heat +- heave +- hedge +- hefty +- help +- herbs +- hers +- hub +- hug +- hula +- hull +- human +- humid +- hump +- hung +- hunk +- hunt +- hurry +- hurt +- hush +- hut +- ice +- icing +- icon +- icy +- igloo +- image +- ion +- iron +- issue +- item +- ivory +- ivy +- jab +- jam +- jaws +- jazz +- jeep +- jelly +- jet +- jiffy +- job +- jog +- jolly +- jolt +- jot +- joy +- judge +- juice +- juicy +- july +- jumbo +- jump +- junky +- juror +- jury +- keep +- keg +- kept +- kick +- kilt +- king +- kite +- kitty +- kiwi +- knee +- knelt +- koala +- kung +- ladle +- lady +- lair +- lake +- lance +- land +- lapel +- large +- lash +- lasso +- last +- latch +- late +- lazy +- left +- legal +- lemon +- lend +- lens +- lent +- level +- lever +- lid +- life +- lift +- lilac +- lily +- limb +- limes +- line +- lint +- lion +- lip +- list +- lived +- liver +- lunar +- lunch +- lung +- lurch +- lure +- lurk +- lying +- lyric +- mace +- maker +- malt +- mama +- mango +- manor +- many +- map +- march +- mardi +- marry +- mash +- match +- mate +- math +- moan +- mocha +- moist +- mold +- mom +- moody +- mop +- morse +- most +- motor +- motto +- mount +- mouse +- mousy +- mouth +- move +- movie +- mower +- mud +- mug +- mulch +- mule +- mull +- mumbo +- mummy +- mural +- muse +- music +- musky +- mute +- nacho +- nag +- nail +- name +- nanny +- nap +- navy +- near +- neat +- neon +- nerd +- nest +- net +- next +- niece +- ninth +- nutty +- oak +- oasis +- oat +- ocean +- oil +- old +- olive +- omen +- onion +- only +- ooze +- opal +- open +- opera +- opt +- otter +- ouch +- ounce +- outer +- oval +- oven +- owl +- ozone +- pace +- pagan +- pager +- palm +- panda +- panic +- pants +- paper +- park +- party +- pasta +- patch +- path +- patio +- payer +- pecan +- penny +- pep +- perch +- perky +- perm +- pest +- petal +- petri +- petty +- photo +- plank +- plant +- plaza +- plead +- plot +- plow +- pluck +- plug +- plus +- poach +- pod +- poem +- poet +- pogo +- point +- poise +- poker +- polar +- polio +- polka +- polo +- pond +- pony +- poppy +- pork +- poser +- pouch +- pound +- pout +- power +- prank +- press +- print +- prior +- prism +- prize +- probe +- prong +- proof +- props +- prude +- prune +- pry +- pug +- pull +- pulp +- pulse +- puma +- punch +- punk +- pupil +- puppy +- purr +- purse +- push +- putt +- quack +- quake +- query +- quiet +- quill +- quilt +- quit +- quota +- quote +- rabid +- race +- rack +- radar +- radio +- raft +- rage +- raid +- rail +- rake +- rally +- ramp +- ranch +- range +- rank +- rant +- rash +- raven +- reach +- react +- ream +- rebel +- recap +- relax +- relay +- relic +- remix +- repay +- repel +- reply +- rerun +- reset +- rhyme +- rice +- rich +- ride +- rigid +- rigor +- rinse +- riot +- ripen +- rise +- risk +- ritzy +- rival +- river +- roast +- robe +- robin +- rock +- rogue +- roman +- romp +- rope +- rover +- royal +- ruby +- rug +- ruin +- rule +- runny +- rush +- rust +- rut +- sadly +- sage +- said +- saint +- salad +- salon +- salsa +- salt +- same +- sandy +- santa +- satin +- sauna +- saved +- savor +- sax +- say +- scale +- scam +- scan +- scare +- scarf +- scary +- scoff +- scold +- scoop +- scoot +- scope +- score +- scorn +- scout +- scowl +- scrap +- scrub +- scuba +- scuff +- sect +- sedan +- self +- send +- sepia +- serve +- set +- shack +- shade +- shady +- shaft +- shaky +- sham +- shape +- share +- sharp +- shed +- sheep +- sheet +- shelf +- shell +- shine +- shiny +- ship +- shirt +- shock +- shop +- shore +- shout +- shove +- shown +- showy +- shred +- shrug +- shun +- shush +- shut +- shy +- sift +- silk +- silly +- silo +- sip +- siren +- sixth +- size +- skate +- skew +- skid +- skier +- skies +- skip +- skirt +- skit +- sky +- slab +- slack +- slain +- slam +- slang +- slash +- slate +- slaw +- sled +- sleek +- sleep +- sleet +- slept +- slice +- slick +- slimy +- sling +- slip +- slit +- slob +- slot +- slug +- slum +- slurp +- slush +- small +- smash +- smell +- smile +- smirk +- smog +- snack +- snap +- snare +- snarl +- sneak +- sneer +- sniff +- snore +- snort +- snout +- snowy +- snub +- snuff +- speak +- speed +- spend +- spent +- spew +- spied +- spill +- spiny +- spoil +- spoke +- spoof +- spool +- spoon +- sport +- spot +- spout +- spray +- spree +- spur +- squad +- squat +- squid +- stack +- staff +- stage +- stain +- stall +- stamp +- stand +- stank +- stark +- start +- stash +- state +- stays +- steam +- steep +- stem +- step +- stew +- stick +- sting +- stir +- stock +- stole +- stomp +- stony +- stood +- stool +- stoop +- stop +- storm +- stout +- stove +- straw +- stray +- strut +- stuck +- stud +- stuff +- stump +- stung +- stunt +- suds +- sugar +- sulk +- surf +- sushi +- swab +- swan +- swarm +- sway +- swear +- sweat +- sweep +- swell +- swept +- swim +- swing +- swipe +- swirl +- swoop +- swore +- syrup +- tacky +- taco +- tag +- take +- tall +- talon +- tamer +- tank +- taper +- taps +- tarot +- tart +- task +- taste +- tasty +- taunt +- thank +- thaw +- theft +- theme +- thigh +- thing +- think +- thong +- thorn +- those +- throb +- thud +- thumb +- thump +- thus +- tiara +- tidal +- tidy +- tiger +- tile +- tilt +- tint +- tiny +- trace +- track +- trade +- train +- trait +- trap +- trash +- tray +- treat +- tree +- trek +- trend +- trial +- tribe +- trick +- trio +- trout +- truce +- truck +- trunk +- try +- tug +- tulip +- tummy +- turf +- tusk +- tutor +- tutu +- tux +- tweak +- tweet +- twice +- twine +- twins +- twirl +- twist +- uncle +- uncut +- undo +- unify +- union +- unit +- untie +- upon +- upper +- urban +- used +- user +- usher +- utter +- value +- vapor +- vegan +- venue +- verse +- vest +- veto +- vice +- video +- view +- viral +- virus +- visa +- visor +- vixen +- vocal +- voice +- void +- volt +- voter +- vowel +- wad +- wafer +- wager +- wages +- wagon +- wake +- walk +- wand +- wasp +- watch +- water +- wavy +- wheat +- whiff +- whole +- whoop +- wick +- widen +- widow +- width +- wife +- wifi +- wilt +- wimp +- wind +- wing +- wink +- wipe +- wired +- wiry +- wise +- wish +- wispy +- wok +- wolf +- womb +- wool +- woozy +- word +- work +- worry +- wound +- woven +- wrath +- wreck +- wrist +- xerox +- yahoo +- yam +- yard +- year +- yeast +- yelp +- yield +- yo-yo +- yodel +- yoga +- yoyo +- yummy +- zebra +- zero +- zesty +- zippy +- zone +- zoom +- duy + + + + +... \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..7495ad0 --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +docker build -t pwdgen-v2 /opt/containers/pwdgen-v2 diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..b776061 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,12 @@ +# docker compose + +services: + pwdgen: + build: . + image: pwdgen_v2:latest + container_name: pwd.matt-cloud.com + ports: + - "80:80" + volumes: + - ./pwdgen:/opt/pwdgen + restart: always diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..149f41f --- /dev/null +++ b/nginx.conf @@ -0,0 +1,67 @@ +# nginx.conf +# This file will be mounted into /etc/nginx/conf.d/default.conf inside the container + +# Enable proxy buffers (optional but recommended) +proxy_buffering on; +proxy_buffers 16 16k; +proxy_buffer_size 32k; + +server { +listen 80; +server_name pwdgwn_v2; + + # --------------------------------------- + # API Routes + # --------------------------------------- + location = /get_password { + proxy_pass http://0.0.0.0:5000/get_password; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location = /verbose_password { + proxy_pass http://0.0.0.0:5000/verbose_password; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location = /custom_password { + proxy_pass http://0.0.0.0:5000/custom_password; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location = /get_count { + proxy_pass http://0.0.0.0:5000/get_count; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location = /get_info { + proxy_pass http://0.0.0.0:5000/get_info; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + # --------------------------------------- + # All other paths → Apache (PHP) + # --------------------------------------- + location / { + proxy_pass http://0.0.0.0:8080; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + +} + \ No newline at end of file diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 0000000..12e6cd7 --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,36 @@ +[supervisord] +nodaemon=true +logfile=/dev/stdout ; Supervisor itself → stdout +logfile_maxbytes=0 ; (no rotation – keeps it simple) +logfile_backups=0 +loglevel=info + +[program:apache] +command=/usr/sbin/apache2ctl -D FOREGROUND +autostart=true +autorestart=true +stdout_logfile=/dev/stdout ; Apache → stdout +stderr_logfile=/dev/stderr ; Apache → stderr +stdout_logfile_maxbytes=0 +stderr_logfile_maxbytes=0 +redirect_stderr=true + +[program:python] +command=python3 /usr/src/app/app.py +autostart=true +autorestart=true +stdout_logfile=/dev/stdout ; Python → stdout +stderr_logfile=/dev/stderr ; Python → stderr +stdout_logfile_maxbytes=0 +stderr_logfile_maxbytes=0 +redirect_stderr=true + +[program:nginx] +command=/usr/sbin/nginx -g 'daemon off;' +autostart=true +autorestart=true +stdout_logfile=/dev/stdout ; Nginx → stdout +stderr_logfile=/dev/stderr ; Nginx → stderr +stdout_logfile_maxbytes=0 +stderr_logfile_maxbytes=0 +redirect_stderr=true \ No newline at end of file diff --git a/www/index.php b/www/index.php new file mode 100644 index 0000000..0368f2b --- /dev/null +++ b/www/index.php @@ -0,0 +1,470 @@ + $max) $value = $max; + + $cookieOptions = [ + 'expires' => time() + 86400 * 365, + 'path' => '/', + 'secure' => true, + 'httponly' => true, + 'samesite' => 'Strict', + ]; + setcookie($cookieName, $value, $cookieOptions); + return $value; + } + + if (isset($_COOKIE[$cookieName])) { + return intval($_COOKIE[$cookieName]); + } + + $cookieOptions = [ + 'expires' => time() + 86400 * 365, + 'path' => '/', + 'secure' => true, + 'httponly' => true, + 'samesite' => 'Strict', + ]; + setcookie($cookieName, $default, $cookieOptions); + return $default; +} + +// ---- PASS TYPE COOKIE ---- +$defaultPassType = 0; +if (isset($_GET['pt'])) { + $passType = intval($_GET['pt']); + setcookie('passtype', $passType, time() + 86400 * 365, '/'); +} elseif (isset($_COOKIE['passtype'])) { + $passType = intval($_COOKIE['passtype']); +} else { + setcookie('passtype', $defaultPassType, time() + 86400 * 365, '/'); + $passType = $defaultPassType; +} + +// ---- CUSTOM PASSWORD SETTINGS ---- +$wMin = getSetting('wMin', 'wMinIn', 6, 3, 10); +$wMax = getSetting('wMax', 'wMaxIn', 12, 3, 10); +$wCount = getSetting('wCount', 'wCountIn', 2, 1, 5); +$sChar = getSetting('sChar', 'sCharIn', 2, 0, 4); +$numLen = getSetting('numLen', 'numLenIn', 3, 0, 8); + +function curlHelper($url, $APIKey){ + // Initialise cURL + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // return the response as a string + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow redirects if any + curl_setopt($ch, CURLOPT_TIMEOUT, 10); // timeout after 10 seconds + // Execute the request + $response = curl_exec($ch); + // Handle cURL errors + if ($response === false) { + $error = curl_error($ch); + curl_close($ch); + throw new Exception("cURL error while calling API: {$error}"); + } + // Check HTTP status code + $httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($httpStatus !== 200) { + throw new Exception("API returned HTTP status {$httpStatus} (expected 200)."); + } + $decoded = json_decode($response, true); + if (json_last_error() === JSON_ERROR_NONE) { + if (isset($decoded[$APIKey])) { + return $decoded[$APIKey]; + } + } + return trim($response); +} + +// Password Generator API Function +function getStandardPasswordFromAPI($passType){ + $apiUrl = "http://172.17.0.1:8189/get_password"; + // Build the query string and full URL + $query = http_build_query(['pwd_index' => $passType]); + $url = rtrim($apiUrl, '?') . '?' . $query; + return curlHelper($url, "password"); +} + +// Password Generator API Function for Custom Password +function getCustomPasswordFromAPI($passType, $payload){ + $url = 'http://172.17.0.1:8189/custom_password'; + + // Initialise a cURL handle + $ch = curl_init($url); + + // Tell cURL we want to send a POST request with a JSON body + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); + + // Tell cURL what headers to send + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'Content-Type: application/json', + 'Content-Length: ' . strlen($payload), + ]); + + // We want the response body back, not the HTTP headers + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + // Optional: if you need to trust self‑signed certs (rare for production) + // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); + // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); + + // Execute the request + $response = curl_exec($ch); + + // Basic error handling + if ($response === false) { + // Something went wrong with the cURL call + error_log('cURL error: ' . curl_error($ch)); + curl_close($ch); + return false; + } + + // Get HTTP status code to confirm the request succeeded + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + if ($httpCode !== 200) { + // Non‑200 responses are treated as errors + error_log("Password API returned HTTP {$httpCode}"); + return false; + } + + // Decode the JSON response + $data = json_decode($response, true); + + if ($data === null || !isset($data['password'])) { + error_log('Password API returned malformed JSON'); + return false; + } + + // Return the password string + return $data['password']; + +} + +// Password Count API Function +function getPasswordCountFromAPI(){ + $apiUrl = "http://172.17.0.1:8189/get_count"; + // Build the query string and full URL + $url = rtrim($apiUrl, '?') ; + return curlHelper($url, "total_passwords"); +} + +function passwordTest_strength($passwordTest) { + $strength = 0; + $possible_points = 12; + $length = strlen($passwordTest); + + if (detect_any_uppercase($passwordTest)) $strength += 1; + if (detect_any_lowercase($passwordTest)) $strength += 1; + $strength += min(count_numbers($passwordTest), 2); + $strength += min(count_symbols($passwordTest), 2); + + if ($length >= 8) { + $strength += 2; + $strength += min(($length - 8) * 0.5, 4); + } + + $strength_percent = $strength / (float)$possible_points; + return floor($strength_percent * 10); +} + + +function detect_any_uppercase($string) { + return strtolower($string) != $string; +} + +function detect_any_lowercase($string) { + return strtoupper($string) != $string; +} + +function count_numbers($string) { + return preg_match_all('/[0-9]/', $string); +} + +function count_symbols($string) { + $regex = '/[' . preg_quote('!@£$%^&*-_+=?') . ']/'; + return preg_match_all($regex, $string); +} + +function returnActualPassword($passType){ + if ($passType == 3){ + + $payload = json_encode([ + 'w_min' => getSetting('wMin', 'wMinIn', 6, 3, 10), + 'w_max' => getSetting('wMax', 'wMinIn', 6, 3, 10), + 'w_count' => getSetting('wCount', 'wCountIn', 2, 1, 5), + 's_char' => getSetting('sChar', 'sCharIn', 2, 0, 4), + 'num_len' => getSetting('numLen', 'numLenIn', 3, 0, 8), + ]); + return getCustomPasswordFromAPI($passType, $payload); + + } + else{ + return getStandardPasswordFromAPI($passType); + } +} + +$final = returnActualPassword($passType); +#$final = getStandardPasswordFromAPI($passType); +$total = getPasswordCountFromAPI(); +$rating = passwordTest_strength($final); + +// ---- OUTPUT ---- +?> + + + + Matt-Cloud Password Generator + + + + +
+

Matt-Cloud Password Generator

+

Hello folks.
+ This here is a nice little human-readable password generator.
+ You've got a few different modes and sometimes it is accidentally funny.
+ +

+
+ +
+ Matt-Cloud Password API

+ To get passwords, you may:

+ + curl -s https:///get_password?pwd_index=N
+ {
+ "password": "-`(UncoloredSwiftly2099"
+ } +

+ Where N is an integer 0,1, or 2 for now.

+ To get verbose passwords, you may:

+ + curl -s https:///verbose_password?pwd_index=N
+ {
+ "descriptor": {
+ "description": "This simple password is in the following format: !Password123 - this pulls from a list of 1291 simple words.",
+ "name": "Simple Password",
+ "type": "2"
+ },
+ "password": "&Keenness887",
+ "password count": 9
+ } +

+ To get custom passwords, you may:

+ + curl -X POST https:///custom_password \
+ H "Content-Type: application/json" \
+ d '{
+ "w_min":5,
+ "w_max":8,
+ "w_count":3,
+ "s_char":2,
+ "num_len":3,
+ }'
+ {
+ "password": "Copier+ViolinBoned632*"
+ } +

+ To get the API password count (but why tho?), you may:

+ + curl -s https:///get_count
+ {
+ "total_passwords": 10
+ } +

+ To view the password descriptor, you may
+ + curl -s https:///get_info
+
+ This will return the entire JSON descriptor variable
+

+ +
+'; + // Password output + echo '

'; + echo 'Your password strength is: ' . $rating . '

'; + echo ''; + echo ''; + + // Pass type selector + echo ''; + + ////////////////////////////////////////// + // Meter Code + echo '

'; + for($i=0; $i < 10; $i++) { + echo " $i) { + echo " class=\"rating-{$rating}\""; + } + echo ">
"; + } + echo '
'; + //////////////////////////////////////////// + + // Total count + echo '

There have been ' . $total . ' total passwords generated thus far.

'; + if($passType === 0 || $passType === 1 || $passType === 2) { + + echo ''; + + } + // Custom slider UI (only for type 3) + if ($passType == 3) { + echo '
'; + echo 'Hey folks, this thing finally works.

'; + + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + echo ''; + + echo ''; + echo ''; + echo ''; + + echo '
Minimum Word Length:
Maximum Word Length:
Number of Words:
Special Characters:
Number Length:

'; + echo ''; + //echo ''; + echo '

'; + } + + if ($passType == 0) { + + echo '
'; + echo '

I have a list of about 20k english words. When you go to this page, I select 60 of these words that are less than 13 characters, '; + echo 'and use the one whose index matches the current second. Then, depending on the length of this word, '; + echo 'this may or may not grab a couple more words from the list, and then it will generate a random number.'; + echo 'Then, it shuffles a list of special characters and sprinkles a few of those in with the words and numbers. '; + echo 'Then, once all that is generated, it will shuffle all these things it generated and spit them back. '; + echo 'It takes a hash of the generated password and compares it to a list of all hashes generated in the past. '; + echo 'If the newly generated password is unique, it will print it out under here, otherwise it will try again. '; + echo 'If it generates a bad password, just refresh until you get one you like. This site can never generate the same password twice. '; + echo 'Also, this hash is a one way encryption, so the passwords cannot be re-created from the hashes.

'; + echo '
'; + } + + if ($passType == 1) { + echo '

'; + echo 'This password is always in the following format:
'; + echo '$Word1Word2Number$
'; + echo 'Where each word is less than 7 characters, the number is
'; + echo '3 digits, and the $ represents a Special Charater.

'; + } + + if ($passType == 2) { + echo '


'; + echo 'This simple password is in the following format:
'; + echo '!Password123

'; + echo 'Also, this draws from a simpler list of about 3k words.

'; + } + + echo ''; + } else { + // duplicate hash case + echo '

OH FUCK DUPLICATE PASSWORD!!!!1!!
'; + } +?> + + + + + + \ No newline at end of file diff --git a/www/style.css b/www/style.css new file mode 100644 index 0000000..e903e35 --- /dev/null +++ b/www/style.css @@ -0,0 +1,217 @@ + + +.active, .collapsible:hover { + padding: 0; +} + +.content { + width: 550px; + padding: 0 px; + display: none; + overflow: hidden; +} +.password_field { + font-size:20pt; + border:none; + background-color: #ecf0f1; + +} +.button { + + color: var(--clr-text); + font-family: Arial, Helvetica, sans-serif; +} + +/* ------------------------------------------------------------------ + Meter - dark‑mode look + ------------------------------------------------------------------ */ +#meter { + display: flex; + gap: 4px; /* doubled spacing between bars */ + padding: 8px; /* doubled padding inside container */ + align-items: center; + + /* Card‑style background + border - same as before */ + background: var(--bg-card); + border: 1px solid var(--clr-border); + border-radius: 4px; + max-width: 420px; /* doubled max‑width */ + box-shadow: 0 1px 3px rgba(0,0,0,.2); +} + +/* ------------------------------------------------------------------ + Bar - light‑dark contrast + ------------------------------------------------------------------ */ +#meter div { + width: 36px; /* doubled width */ + height: 36px; /* doubled height */ + flex-shrink: 0; + + /* Base colour (dark grey) - can be overridden via --bg */ + background: var(--bg, #4a5b6c); + + border-radius: 3px; + box-shadow: 0 1px 2px rgba(0,0,0,.15); + transition: background .25s ease, transform .2s ease; + cursor: pointer; +} + +/* Hover lift (still subtle on dark background) */ +#meter div:hover { + transform: translateY(-4px); +} + +/* ------------------------------------------------------------------ + Rating colour tiers - same vibrant colours + ------------------------------------------------------------------ */ +#meter div.rating-1, +#meter div.rating-2 { --bg: #e74c3c; } /* red - poor */ +#meter div.rating-3, +#meter div.rating-4 { --bg: #e67e22; } /* orange - fair */ +#meter div.rating-5, +#meter div.rating-6 { --bg: #f1c40f; } /* yellow - average */ +#meter div.rating-7, +#meter div.rating-8 { --bg: #2ecc71; } /* greenyellow - good */ +#meter div.rating-9, +#meter div.rating-10{ --bg: #27ae60; } /* green - excellent */ + +/* ------------------------------------------------------------------ + Optional - if you want to add a “selected” state + ------------------------------------------------------------------ */ +#meter div.selected { + box-shadow: 0 0 0 2px var(--clr-accent); +} + +/* Standard Matt-Cloud CSS */ + +/* ------------------------------------------------- + 1. Global settings & color palette + ------------------------------------------------- */ +:root { + /* Dark theme - body & card backgrounds */ + --bg-body: #2c3e50; /* main page background */ + --bg-card: #34495e; /* card / panel background */ + --bg-sidebar: #3d566e; /* sidebar background (slightly lighter) */ + /* Accent / link colour */ + --clr-accent: #3498db; /* blue accent for links */ + /* Text colour */ + --clr-text: #ecf0f1; /* light whiteish text */ + /* Borders / accents */ + --clr-border: #1f2b38; /* dark border colour */ +} + +* { box-sizing: border-box; } + +/* Body */ +body { + margin: 0; + padding: 0; + background: var(--bg-body); + color: var(--clr-text); + font-family: Arial, Helvetica, sans-serif; +} + +/* Links */ +a { color: var(--clr-accent); text-decoration: none; } +a:hover { text-decoration: underline; } + +/* ------------------------------------------------- + 2. Layout - wrapper, sidebar, main + ------------------------------------------------- */ +.wrapper { display: flex; min-height: 100vh; } +.main { flex: 1; padding: 1rem; } + +/* ------------------------------------------------- + 3. Card components + ------------------------------------------------- */ +.card { + max-width: 550px; + margin: 20px auto 1rem auto; + padding: 20px; + background: var(--bg-card); + border: 1px solid var(--clr-border); + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0,0,0,.3); +} + +.collapsible { + max-width: 550px; + margin: 20px auto 1rem auto; + padding: 20px; + background: var(--bg-card); + border: 1px solid var(--clr-border); + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0,0,0,.3); + text-align: left; + outline: none; +} + +.active, .collapsible:hover { + padding: 20px; +} + +.content { + max-width: 550px; + margin: 20px auto 1rem auto; + padding: 20px; + background: var(--bg-card); + border: 1px solid var(--clr-border); + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0,0,0,.3); + display: none; + overflow: hidden; +} +/* ------------------------------------------------- + 4. Tables + ------------------------------------------------- */ +table, th, td { + border: 2px solid var(--clr-border); + border-collapse: collapse; +} +th, td { padding: 10px; } + +/* Alternate row colour for metrics table */ +#host_metrics_table tbody tr td:nth-of-type(even) { + background: #3e5c78; /* slight contrast */ +} + +/* ------------------------------------------------- + 5. Lists & headings + ------------------------------------------------- */ +h1, h2, h3, h4 { color: var(--clr-text); margin: 0 0 .4rem 0; } +ul { list-style: none; padding: 0; } +ol { list-style: none; padding: 0; } +li { margin-bottom: 10px; color: var(--clr-text); } + +/* ------------------------------------------------- + 6. Components grid + ------------------------------------------------- */ +.components { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 1rem; +} +.component { + padding: 10px; + border: 1px solid var(--clr-border); + border-radius: 4px; +} +.component h3 { margin: 0 0 5px; } + +/* ------------------------------------------------- + 7. Help toggle / modal + ------------------------------------------------- */ +.help-link { + cursor: pointer; + user-select: none; + color: var(--clr-accent); + text-align: right; +} +.help-link:hover { text-decoration: underline; } +#helpText { display: none; } + +/* ------------------------------------------------- + 8. Misc helpers + ------------------------------------------------- */ +/* Hide numeric markers in metric columns (if any) */ +#host_metrics_column td { list-style: none; padding-left: 0; margin-left: 0; } \ No newline at end of file