#!/usr/bin/perl # Copyright 2002 Niels Provos # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by Niels Provos. # 4. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Simple password generator: # Choose a master password, and then use this script to generate # sub-passwords for different sites. use Digest::MD5 qw(md5 md5_hex md5_base64); @words = ( "abacus", "abas", "abash", "abate", "abator", "abbey", "abdat", "abduct", "abeam", "abed", "ablach", "abloom", "abmho", "aboil", "aboral", "abort", "abraid", "abrupt", "aburst", "abuse", "abuser", "acacin", "acca", "accent", "accite", "acetal", "achar", "achime", "acidyl", "acinar", "acknow", "acle", "acoine", "acold", "acomia", "aconic", "acrite", "acrose", "actual", "acuate", "adagio", "adamas", "adarme", "adaunt", "aday", "addend", "adead", "adeep", "adless", "adlet", "admi", "admire", "adobe", "adopt", "adpao", "adroop", "adsbud", "adverb", "adzer", "aecium", "aedile", "aeried", "aery", "aflow", "agamid", "agasp", "agate", "agedly", "agee", "agency", "agenda", "aglet", "agley", "agnate", "agnel", "agnus", "agonic", "agroof", "aguey", "ahey", "ahwal", "aillt", "aimful", "ajava", "ajhar", "akhrot", "akule", "alanyl", "alar", "alba", "albify", "albite", "aldern", "aldose", "alerce", "aletap", "alexic", "alfa", "algor", "aliped", "alisp", "alist", "aljoba", "alkide", "aller", "allies", "almous", "alms", "alnein", "along", "alphyl", "alroot", "altar", "aludel", "alvine", "amala", "amar", "ambery", "ambo", "amend", "ament", "amimia", "amla", "amli", "amlong", "amman", "amnic", "amole", "amor", "ampery", "amphid", "ampul", "amuze", "anacid", "anally", "anana", "anay", "anbury", "ancony", "aneath", "anew", "angst", "anguid", "anilao", "anilid", "anjan", "ankle", "anodos", "anoine", "anonol", "anorth", "ansa", "ante", "anti", "antiae", "antlia", "anusim", "anyone", "aortal", "aortic", "aplite", "appete", "applot", "apsis", "apulse", "arake", "arbor", "arbute", "arcana", "archly", "ardish", "areach", "areole", "argala", "arhat", "arid", "aridly", "arigue", "armil", "armlet", "aroid", "aroma", "arras", "arrowy", "arsle", "arsyl", "artery", "artlet", "aruke", "arupa", "arval", "aryl", "asak", "ascent", "asci", "ascian", "ascula", "asem", "ashen", "ashery", "askari", "askip", "aslant", "asonia", "asor", "aspace", "assai", "assert", "assi", "assis", "astalk", "astare", "astely", "astral", "astrer", "aswirl", "atabeg", "atabek", "atavus", "atelo", "athrob", "atimon", "atinga", "atomic", "atrip", "atrium", "attach", "attar", "atween", "atwin", "augury", "aulete", "aumous", "auncel", "aural", "aurar", "auric", "autumn", "aval", "avaunt", "avens", "aver", "averil", "avian", "aviary", "aviate", "avitic", "await", "aware", "awave", "awest", "awheel", "awless", "awning", "axine", "axis", "axman", "axweed", "axwort", "ayah", "ayelp", "azonal", "azotic", "baar", "babble", "babish", "baccae", "backie", "bacule", "bahoe", "bailey", "baioc", "baiter", "baith", "bakli", "ball", "ballad", "balled", "ballup", "balow", "balsam", "balter", "banana", "banc", "banda", "bande", "bandit", "banish", "banky", "bantam", "banuyo", "banyan", "baobab", "barbal", "barbe", "barbed", "bareca", "barely", "barful", "barger", "barid", "barmy", "barney", "barong", "baroto", "barras", "barrel", "barry", "baru", "barvel", "basal", "basalt", "basion", "bason", "basote", "basset", "batara", "bated", "batik", "bating", "batino", "bats", "batule", "bauno", "bauta", "bavian", "bawler", "bawn", "bayal", "bayard", "beader", "beadle", "beady", "beaky", "beala", "bean", "beant", "beany", "bebar", "bebled", "bebusy", "becker", "becut", "bedark", "bedbug", "bedrug", "beeve", "befan", "befoam", "befoul", "befume", "begaud", "beggar", "begift", "begild", "begird", "begluc", "beglue", "begoud", "beheld", "behoof", "beice", "bekiss", "belam", "beldam", "belfry", "belief", "belion", "bell", "belong", "belove", "belt", "beltie", "belton", "bemar", "bemata", "bemaul", "bemole", "bemuse", "bena", "bench", "beng", "benj", "bennel", "bennet", "bepaid", "bepen", "bepity", "berat", "bergut", "berne", "berth", "beshod", "beslap", "besoul", "besour", "besped", "bespew", "bestab", "bestar", "beth", "betis", "betted", "bever", "beworn", "bewray", "bhara", "bhungi", "bicron", "bidet", "bidri", "bien", "biga", "bigot", "bilby", "bildar", "bilgy", "bilith", "bimbil", "binal", "bind", "bingey", "bint", "biopsy", "birch", "bird", "birder", "bireme", "birken", "birkie", "birler", "birn", "birse", "birsy", "birth", "bisect", "bismar", "bison", "biti", "bitt", "bizet", "blaff", "blake", "blanda", "blash", "blate", "blatti", "blazon", "bleary", "blee", "blend", "blite", "bloat", "bloke", "blosmy", "blower", "blown", "blowup", "blowze", "bluer", "bluish", "blush", "blype", "boater", "bobac", "bobbin", "bocca", "bocce", "bodier", "boding", "bogard", "boggle", "bogier", "bogum", "boiler", "boily", "bola", "bolled", "bolt", "bolti", "bonder", "bonny", "boodle", "booked", "boolya", "booze", "bordel", "bore", "boread", "borgh", "borism", "bosset", "botany", "botfly", "bott", "bottle", "bottom", "bouche", "bound", "bousy", "bowed", "bowing", "bowl", "bowman", "bowwow", "boxman", "brab", "braise", "braky", "brave", "brede", "brelaw", "brett", "brewer", "bribee", "brick", "brills", "brink", "brique", "brisk", "brog", "bronze", "brook", "brunt", "bryony", "bucca", "buck", "bucko", "budger", "buffy", "build", "buist", "bulge", "bulked", "bullan", "bulter", "bummed", "bung", "bunion", "bunkie", "burbly", "buret", "burgh", "burgoo", "buri", "burlap", "burr", "burro", "bushi", "busily", "bussu", "bustee", "butane", "butic", "butoxy", "butte", "byee", "bygane", "byth", "cabas", "cabby", "cabuya", "cachet", "cader", "cadmic", "cados", "caduac", "caecum", "caffoy", "caid", "cairn", "caky", "calaba", "caligo", "calmer", "calve", "camaca", "camara", "camb", "came", "cameo", "canamo", "canard", "canary", "cancer", "canch", "candys", "canner", "cannot", "canny", "canroy", "cant", "canted", "canton", "cantus", "canty", "canvas", "caplin", "capman", "capote", "card", "carded", "cargo", "carlot", "carls", "carob", "carve", "casein", "castor", "casual", "cateye", "cathro", "catsup", "caudex", "caught", "caval", "cavity", "caza", "cazimi", "cearin", "cebid", "cebil", "cedar", "cedent", "cedrat", "cedrol", "ceile", "cell", "celled", "cendre", "cense", "center", "centum", "ceras", "cercal", "certie", "cervix", "cesser", "cest", "chabuk", "chaft", "chal", "chalta", "champ", "chanco", "chancy", "changa", "chapin", "chappy", "char", "chati", "chatta", "chawl", "chaya", "cheep", "chef", "chekan", "chela", "chelys", "chende", "cheven", "chicky", "chicot", "chime", "chin", "chined", "ching", "chinin", "choir", "chold", "choli", "cholic", "chomp", "chop", "chorda", "chort", "chose", "choup", "chubby", "chug", "chummy", "chunk", "church", "chymia", "chypre", "cicer", "cigala", "cinene", "cinque", "cipo", "cirri", "cirrus", "cisco", "cistae", "cistic", "citee", "citify", "citole", "cive", "clad", "clamb", "clause", "clava", "clavis", "clayer", "clayey", "cleat", "cleft", "clergy", "cleuch", "climb", "clinal", "clique", "clog", "clomb", "closh", "clot", "clote", "clothe", "cloudy", "clour", "clumse", "clunch", "clype", "cnicin", "coaly", "coaxal", "coaxy", "cobang", "cobcab", "coble", "cobra", "coburg", "coca", "cocco", "coccus", "cockal", "cocked", "cocky", "coda", "coder", "codger", "codo", "coed", "coelar", "coff", "coffer", "cogged", "coggie", "coghle", "coheir", "cohort", "cohosh", "coifed", "coker", "colate", "coleur", "colk", "collop", "collum", "colp", "coly", "comet", "comoid", "comose", "comply", "concur", "conger", "conner", "conoid", "consol", "conte", "convey", "convoy", "cook", "cooky", "coomb", "coop", "coorie", "coot", "cootie", "copei", "copra", "cordy", "corgi", "corker", "cornel", "corody", "corona", "corset", "coryl", "cosset", "costa", "costal", "costar", "cothon", "cotted", "cottid", "coude", "couma", "couril", "cousin", "coving", "coween", "cowish", "cramp", "crance", "crappo", "crapy", "crash", "crasis", "creamy", "creat", "creese", "crept", "cressy", "crinal", "cripes", "crisp", "critic", "croc", "croppa", "crore", "croup", "croupe", "croupy", "cruent", "crummy", "cruse", "crust", "cubeb", "cuber", "cueman", "culler", "culpa", "cultus", "culver", "cumbha", "cumbly", "cummin", "cumuli", "cunner", "cupman", "cupric", "cuprum", "cupule", "curl", "curser", "curtsy", "curua", "curver", "cush", "cusie", "cusped", "cutoff", "cutted", "cutup", "cymous", "cynoid", "cystal", "cysted", "cyton", "dablet", "dacker", "daedal", "dagame", "dagger", "daily", "daimen", "dain", "dakir", "dalle", "damier", "dammer", "damn", "damp", "dance", "danger", "daoine", "daring", "darken", "darnel", "dart", "data", "date", "dative", "daud", "dauncy", "daut", "daylit", "debase", "debile", "debt", "debtee", "debunk", "decal", "decane", "decap", "decart", "decent", "decke", "decker", "decoke", "decry", "decus", "deduce", "deduct", "deepen", "deeply", "defuse", "degust", "deink", "deject", "delete", "delint", "deltic", "delver", "demi", "demy", "denim", "denote", "densen", "dent", "derry", "descry", "detune", "devow", "dhan", "dhole", "dhoti", "dhyal", "diaene", "diarch", "dicast", "dice", "dicker", "didie", "didst", "diene", "dier", "diesis", "dieter", "dietic", "diiodo", "dike", "dilo", "dimber", "dingo", "dingy", "dinic", "dining", "dinkey", "dinus", "diploe", "dipole", "dirge", "disarm", "disazo", "disdub", "dismal", "disuse", "diva", "divide", "docket", "docmac", "dodge", "dodger", "doer", "doesnt", "doffer", "dogate", "dogly", "dogtie", "doina", "doings", "doit", "doline", "dollar", "dolmen", "dolt", "domain", "domer", "domett", "domic", "domite", "donary", "donate", "doney", "donor", "donsie", "dont", "donum", "dooli", "doom", "dopper", "dorado", "doria", "dorm", "dorp", "dorsum", "doruck", "dotal", "douce", "doughy", "douser", "dove", "dovish", "dowie", "down", "dowser", "dozen", "draffy", "drafty", "drag", "dragon", "drain", "drake", "draper", "drat", "drawk", "dream", "dredge", "dregs", "drifty", "drill", "drip", "drive", "droner", "dropsy", "droud", "druse", "dryth", "duali", "ducal", "duck", "dudism", "duello", "dufoil", "dugdug", "dugout", "dukery", "duller", "dulse", "dumbly", "dunair", "dungy", "dunk", "durain", "durrie", "dusio", "dutch", "dwarfy", "dwelt", "dwine", "dyer", "dyne", "eager", "earing", "earlap", "easier", "easter", "ebbman", "eboe", "ecesis", "eclegm", "ecole", "ectene", "ectype", "edea", "edemic", "edge", "edgrew", "eeler", "eftest", "eggnog", "egoity", "eider", "eighty", "ekaha", "eldin", "elfic", "elude", "elves", "embira", "emblem", "embox", "emend", "emir", "emit", "emma", "emmet", "enamel", "encage", "encamp", "encyst", "endew", "endow", "endyma", "enema", "eneuch", "engird", "engore", "engulf", "enjoy", "enlock", "enmask", "ennoic", "enrace", "enrobe", "ensete", "enurny", "envier", "envoy", "enwrap", "enzym", "eoan", "eosin", "epaule", "epulis", "epural", "erade", "eral", "erbia", "erept", "eric", "erne", "errand", "eruc", "eruca", "essay", "essed", "estado", "esteem", "ethrog", "etna", "etymon", "euchre", "eunomy", "euonym", "eutaxy", "exalt", "excamb", "exes", "exhale", "exile", "exlex", "expert", "expose", "expugn", "extant", "eyebar", "eying", "eyrir", "fabes", "facet", "facia", "factum", "facund", "faded", "faery", "faffle", "fainly", "faints", "fainty", "fair", "fallen", "fally", "fanam", "fancy", "fang", "fanman", "fare", "farm", "farset", "fash", "fasher", "fastus", "fathom", "fatil", "fatly", "faucal", "faust", "fawner", "fawny", "fayles", "feak", "feasor", "feaze", "fegary", "fellah", "felon", "felt", "felter", "felty", "fenks", "fennig", "feod", "feria", "ferned", "ferrum", "fescue", "fetal", "fetid", "fetlow", "fewter", "fiard", "fice", "fico", "fidge", "fiend", "fient", "fifty", "figgy", "filing", "fillip", "finlet", "finner", "finnip", "finny", "fipple", "fire", "firn", "fisted", "fisty", "fitly", "fives", "fjeld", "flan", "flated", "flavic", "flavo", "fleshy", "flet", "flexor", "flicky", "flinch", "flingy", "flobby", "floc", "flodge", "flog", "flosh", "fluey", "fluke", "flunky", "fluty", "flux", "flyer", "flyway", "fogger", "fogram", "foible", "foiter", "fold", "folk", "fomes", "footy", "forage", "forb", "fore", "forgot", "forpet", "forpit", "forset", "fortin", "forty", "fossor", "foster", "fotch", "fowl", "foxish", "fozy", "framea", "frass", "frater", "frayn", "fraze", "frazil", "freaky", "freck", "freed", "fretum", "frig", "frisca", "frisky", "frizer", "frizzy", "froggy", "froom", "frough", "frowze", "fuddle", "fudge", "fudger", "fugal", "fulwa", "fundic", "fundus", "funest", "funis", "furfur", "furler", "furphy", "furze", "furzy", "fuscin", "fusil", "fusoid", "fuss", "fussy", "fustin", "fylfot", "gabber", "gabion", "gablet", "gadge", "gadoid", "gaen", "gaffer", "gagee", "gaiety", "gaine", "galaxy", "galee", "galey", "galgal", "galoot", "galosh", "galp", "galuth", "gamic", "gamily", "gamma", "gamut", "gamy", "ganga", "gangan", "ganoid", "ganoin", "gansel", "gaping", "garbel", "garce", "gardy", "garial", "gariba", "garish", "garlic", "garrot", "gasify", "gasser", "gauss", "gavial", "gawney", "gayal", "gayish", "gazee", "gazel", "gazing", "gecko", "gein", "geld", "genear", "geneat", "geneki", "geneva", "genial", "genie", "genin", "genom", "gerbe", "germ", "german", "gersum", "gesso", "getup", "gharry", "ghatti", "ghosty", "giarre", "gibber", "gibbon", "gibe", "gibleh", "gibus", "giddea", "gied", "gien", "gift", "gigger", "giggit", "gigolo", "gilly", "gilpy", "gilt", "ginner", "girdle", "girl", "girlie", "girn", "girse", "girth", "giver", "glacis", "glade", "glairy", "glaum", "glazed", "gleary", "gledy", "gleet", "glia", "glib", "gloat", "glom", "glomus", "glout", "glub", "gluck", "glue", "gluer", "glumpy", "gnat", "gnomed", "gnomic", "goal", "gobby", "goblin", "godet", "godkin", "godly", "godson", "goff", "goffer", "goggly", "gogo", "golder", "goldie", "goldin", "goldy", "gomer", "gonad", "gonid", "googly", "goon", "goonie", "goose", "gorbet", "gorlin", "gormed", "gorra", "gory", "goslet", "gossip", "gossy", "gotch", "gouge", "gowan", "gowkit", "graben", "grace", "grade", "graft", "gravel", "greasy", "greave", "grege", "greige", "grieve", "grille", "grimme", "grippe", "grisly", "grist", "grit", "grivet", "groat", "grope", "groset", "grouf", "grout", "grouze", "grovel", "grubby", "grubs", "gruel", "gruff", "gruffy", "grumly", "grump", "grumpy", "grylli", "guama", "guenon", "guidon", "guild", "guilty", "gular", "gulden", "gule", "gully", "gunebo", "gurdle", "gurr", "gutter", "gyps", "gyrene", "gyrose", "gyrus", "haab", "habile", "hafiz", "haikal", "hailse", "haje", "hakam", "hale", "halebi", "hallah", "hallex", "halve", "hamal", "hameil", "hami", "hangby", "hangie", "hangle", "hanker", "hanna", "harman", "hasan", "hater", "hath", "hatted", "hauler", "haysel", "hazy", "heady", "heart", "hearts", "heck", "heehaw", "hefty", "hegira", "helbeh", "helmet", "hempy", "hennin", "henry", "hepar", "herby", "herdic", "hereby", "hereof", "heresy", "herl", "hernia", "hersir", "hertz", "hetero", "hetter", "hewel", "hexene", "hexode", "hexoic", "hiatal", "hilch", "hinoki", "hinter", "hipple", "hippo", "hisn", "hispid", "hiss", "hitter", "hizz", "hobbil", "hobbly", "hobby", "hocus", "hodden", "hoer", "hogged", "hogpen", "hoick", "hokey", "holla", "holler", "holm", "homo", "honest", "hoodoo", "hook", "hooped", "hopple", "horal", "horner", "hosed", "howdy", "huddup", "huffle", "huke", "huller", "humate", "humbug", "hunch", "hunger", "hungry", "hunky", "hurted", "hurter", "husk", "husked", "hussy", "huzz", "hyaena", "hylic", "hyphal", "hyphen", "hypho", "hypoid", "ibis", "idant", "iddat", "idea", "ideaed", "idgah", "idlish", "iffy", "ileum", "ilial", "iliau", "illy", "ilot", "imager", "imaret", "imbed", "imber", "imide", "immi", "immix", "immund", "impair", "impala", "impalm", "impart", "impave", "imphee", "impose", "impure", "inanga", "inapt", "inbent", "incest", "incite", "incog", "indent", "indign", "indy", "infall", "infare", "infelt", "infix", "infold", "infuse", "initis", "inkle", "inland", "inlook", "inmate", "inner", "inter", "into", "intort", "inulin", "inurn", "inwale", "inwall", "inweed", "inwick", "iodine", "iodism", "iodize", "ionize", "irok", "isohel", "isotac", "itchy", "iztle", "jabiru", "jacket", "jadery", "jambo", "jane", "jann", "jasper", "jati", "javali", "jawy", "jazzy", "jeel", "jenna", "jennet", "jerker", "jetton", "jharal", "jiboa", "jiffle", "jimjam", "jimply", "jingo", "jinn", "jirble", "jiti", "jitter", "jiva", "jixie", "jogger", "join", "joom", "joug", "jowl", "jowlop", "joyhop", "joyous", "juicy", "jujube", "julep", "julio", "jumble", "jumma", "junior", "jurat", "jure", "juring", "jussel", "justen", "jutka", "juvite", "kabiet", "kadaya", "kago", "kail", "kainsi", "kainyn", "kaiser", "kakar", "kakke", "kalium", "kallah", "kalon", "kalong", "kanari", "kandol", "kans", "kapok", "karate", "kaross", "karree", "kasher", "katun", "kawika", "keawe", "keckle", "kecky", "keech", "keel", "keena", "kefir", "kegler", "kell", "kelly", "kelpie", "kemple", "kent", "kept", "kerf", "kerner", "kerrie", "kerril", "kettle", "khaja", "kharua", "khatri", "khoja", "kialee", "kickee", "kidlet", "kidney", "killcu", "kimono", "kina", "kind", "kinkly", "kiosk", "kipe", "kipper", "kishen", "kiswa", "kith", "kittul", "kiyas", "klom", "klops", "klosh", "kmet", "knee", "knet", "knick", "knobby", "knock", "knowe", "knub", "knur", "knyazi", "koban", "kobold", "kohemp", "koine", "kokako", "kokum", "konjak", "kookri", "kopeck", "koph", "korrel", "kosher", "kotyle", "kozo", "kraal", "kreng", "kronen", "kuchen", "kukui", "kumbi", "kummel", "kumrah", "kunai", "kunk", "kurgan", "kusa", "kvass", "labba", "lacing", "lack", "lacker", "lackey", "lactic", "lacy", "ladder", "lagena", "lager", "lagger", "lake", "lamany", "lambda", "lamel", "lamely", "lammer", "lammy", "land", "laney", "lapser", "large", "largen", "lari", "lariat", "larry", "laser", "lassie", "lasso", "last", "later", "lath", "lathen", "latish", "launch", "lavage", "lave", "lawing", "lawter", "lawyer", "lazily", "leaden", "leadin", "leafy", "leaky", "lealty", "leanly", "lease", "leasow", "leaven", "lecher", "lecyth", "left", "legger", "legume", "lehua", "lemel", "lemur", "letten", "leuk", "lewis", "liber", "libra", "licham", "lick", "lifey", "liker", "limbal", "limbo", "limen", "limpet", "lina", "linden", "liner", "linga", "lining", "link", "linon", "linsey", "linten", "liny", "lion", "lionel", "lipa", "lipase", "lipin", "liquid", "lirate", "lisp", "lisper", "lissom", "listen", "litch", "lith", "litmus", "liver", "livor", "llama", "llautu", "llyn", "loaner", "lobal", "lobe", "lobed", "lobola", "lobose", "lobule", "loch", "lochan", "loggat", "logged", "logic", "loglet", "lokao", "loket", "lomita", "loofie", "looney", "loony", "loopy", "looter", "lope", "loran", "lordy", "loreal", "lotase", "louden", "lough", "louver", "lover", "lowery", "lowth", "loxia", "lucida", "luetic", "lugged", "lulab", "lump", "lunge", "lunule", "lupe", "lupeol", "luxate", "lyery", "macana", "macer", "machin", "macle", "madcap", "made", "mado", "mafoo", "mafura", "magani", "magged", "magma", "magnes", "maholi", "mail", "maimed", "maimon", "make", "mako", "mala", "malar", "male", "maleic", "maline", "malism", "malkin", "mallee", "malo", "mammal", "mammee", "mana", "manage", "mand", "mania", "maniac", "mankin", "mantal", "manter", "mantis", "manuao", "manway", "mapper", "maqui", "marcel", "maria", "market", "marled", "marli", "marlin", "marmit", "marmot", "marrot", "mart", "martel", "martyr", "mashie", "mashru", "masse", "massif", "mast", "master", "mathes", "matipo", "matra", "mature", "matzo", "maugh", "mauley", "maumet", "mauve", "mawp", "maxixe", "maynt", "maza", "meadow", "meant", "measle", "meated", "media", "medial", "median", "medico", "medio", "meek", "megmho", "megohm", "megrim", "mela", "memoir", "menace", "mentor", "mentum", "merch", "mergh", "merkin", "merop", "mese", "meshed", "mesne", "messrs", "mestee", "mester", "metis", "metric", "metze", "meuse", "mian", "miasma", "miaul", "mica", "mids", "mike", "mildew", "milk", "mille", "mima", "mimic", "minhag", "minny", "mino", "minor", "minter", "minuet", "mirage", "mirate", "mire", "mise", "misery", "mislay", "misura", "mixed", "mneme", "mnemic", "mocker", "modish", "mohr", "moio", "moko", "moky", "mold", "moldy", "mole", "moler", "molest", "moline", "molman", "molten", "momble", "momo", "mona", "monel", "monism", "monkey", "monny", "moolet", "moory", "moosey", "mope", "mopish", "mopla", "morass", "moreen", "morg", "morgue", "mortal", "morula", "mostly", "mote", "motet", "mother", "motif", "motion", "motley", "motyka", "mould", "moulin", "mouly", "moving", "mowch", "mowha", "mowing", "moyen", "mpret", "muang", "much", "mucksy", "mucluc", "mucose", "mucous", "mucus", "mudir", "mukti", "mule", "mulla", "mulmul", "munch", "mundil", "mundle", "mural", "murex", "murga", "muriti", "murky", "murlin", "murra", "murrey", "murza", "museum", "musha", "musico", "musnud", "musty", "mutase", "mutive", "mutuum", "mycele", "mygale", "myops", "myrrh", "mysell", "mystax", "nacre", "nael", "naggle", "naifly", "nairy", "naive", "nallah", "namda", "nandi", "nantle", "narial", "narky", "nasial", "nasus", "nataka", "natch", "nather", "native", "natter", "nature", "navel", "neal", "nearly", "neat", "nebbed", "nebel", "nebris", "nebula", "needs", "neffy", "neger", "nelson", "nerver", "neti", "netted", "netty", "nevel", "nevoy", "newish", "nexum", "niacin", "nibbed", "nidana", "nidge", "nifle", "nincom", "ninety", "nintu", "nisse", "nizam", "nobby", "nobley", "nocent", "nocket", "nodder", "noise", "nomic", "nonda", "nook", "nooky", "nooser", "nori", "noria", "norite", "nosed", "nosey", "nostic", "notal", "nother", "nougat", "nova", "novity", "nowhit", "nubby", "nubia", "nucha", "nuclei", "nucule", "nudate", "nugget", "nullo", "numbly", "nunky", "nurhag", "nyanza", "oaky", "oatear", "oath", "oathed", "obeism", "obolus", "obtect", "obvert", "occult", "occupy", "ochrea", "octant", "octet", "octoon", "octroi", "oddish", "odoom", "offing", "often", "ogive", "ohoy", "oilery", "oilway", "oily", "oint", "oitava", "olam", "olden", "olein", "oleous", "oliban", "olona", "omelet", "omnist", "omnium", "onagra", "oneism", "oogamy", "oolite", "oont", "oopak", "oord", "ooze", "opah", "opener", "optant", "orby", "orchat", "orchic", "orchid", "oread", "orgeat", "orgy", "origin", "oriole", "ormer", "orrery", "ortet", "orthid", "oscule", "osse", "otto", "oturia", "oust", "outask", "outban", "outbar", "outcry", "outdo", "outgun", "outhit", "outlet", "outlip", "outly", "outsea", "outset", "ovolo", "oxamic", "oxeye", "oxhoft", "oxide", "oxidic", "oxreim", "oxskin", "oxymel", "oyer", "ozena", "pacate", "paddle", "paegle", "pagan", "pagoda", "paik", "painty", "pajock", "palace", "palama", "palely", "paletz", "paling", "palla", "pallet", "palm", "palmar", "palmo", "palt", "panax", "pand", "pandy", "panela", "panfil", "pannum", "pants", "panty", "papane", "pape", "paper", "papize", "papreg", "para", "parate", "parent", "paries", "parine", "parker", "parol", "parole", "parpal", "parr", "partly", "party", "pastel", "paster", "pata", "pataco", "patent", "patly", "patrin", "patron", "patta", "pattu", "paup", "pavage", "paving", "pavior", "pawnor", "paxwax", "peaky", "pearl", "pebble", "pecket", "pectus", "pedary", "pedes", "pedum", "peeler", "peen", "peeper", "pegged", "peggle", "peggy", "pelf", "pelick", "pelmet", "pelvic", "penile", "people", "pepsin", "percid", "perdu", "peri", "perky", "pernyi", "persis", "perule", "peste", "petal", "pete", "petrel", "pewage", "pewee", "pewit", "pewter", "pewy", "peyote", "pfui", "phase", "phenyl", "phit", "phone", "phonic", "phono", "phony", "phylic", "phylum", "phytin", "pianic", "pica", "pickup", "picoid", "picot", "picuda", "pidan", "piecen", "pielet", "piemag", "pieman", "pierid", "pigful", "pignus", "piker", "piking", "pikle", "pilage", "piler", "pileus", "pilose", "pilot", "pilpul", "pingle", "pining", "pinion", "pinnal", "pinny", "pipal", "pipe", "pipery", "pipkin", "pirny", "pirr", "pisay", "pita", "pitch", "pitchi", "pithos", "pithy", "pitier", "pitman", "pitpit", "pitted", "place", "plack", "plage", "plaid", "plait", "plap", "plasma", "plater", "platty", "plaud", "plea", "plebe", "pled", "plenty", "pleura", "ploce", "plomb", "plote", "plouk", "pluck", "pluff", "pluggy", "plumer", "plushy", "plying", "podded", "podite", "podzol", "poemet", "poesy", "poetic", "pointy", "poised", "polity", "pollex", "pommet", "pommy", "pompa", "pompal", "ponce", "pondy", "poney", "ponica", "pony", "pooch", "pooder", "poof", "pooli", "poonga", "popeye", "popgun", "porger", "porism", "porite", "porker", "poroma", "porr", "pory", "postal", "postic", "potash", "potful", "pother", "pott", "pouchy", "poulpe", "pram", "prase", "prayer", "preact", "precox", "predry", "preeze", "prefab", "prefer", "preset", "pretty", "prevue", "prich", "priory", "prism", "priss", "prize", "prob", "probe", "prober", "prog", "prolix", "pronto", "prosar", "prose", "proser", "proso", "protyl", "prove", "prude", "pruh", "pryer", "psiloi", "psyche", "pucka", "puddee", "pudge", "pudic", "puerer", "puggy", "puist", "pukras", "pule", "pullet", "pulp", "pulwar", "pumple", "punner", "punta", "puntel", "pupal", "pupoid", "pupulo", "puree", "purify", "purine", "purity", "purl", "purple", "purrer", "pursed", "purvoe", "pussy", "putage", "putrid", "pyal", "pyelic", "pygmy", "pyke", "pyran", "pyrene", "qintar", "quaily", "quaint", "quaky", "quale", "quandy", "quasi", "quasky", "queer", "queery", "quegh", "quei", "queue", "quib", "quince", "quinsy", "quinze", "quipo", "quiver", "quoits", "quota", "quoth", "raad", "rabbi", "rabid", "race", "racket", "radish", "radix", "rafter", "raglan", "railly", "rakh", "raki", "raku", "rambeh", "ramose", "ramp", "randem", "randle", "rane", "range", "ranger", "rangle", "rant", "ranty", "ranula", "raphis", "raping", "raser", "rashly", "raster", "rastik", "rastle", "ratoon", "ratten", "ratti", "raupo", "rayage", "raylet", "razee", "razoo", "reamer", "reap", "rear", "reason", "reave", "rebawl", "rebias", "rebid", "rebulk", "rebuoy", "rebus", "rebuy", "rechar", "recoin", "recomb", "recoup", "recrop", "recta", "redate", "redbud", "redeal", "redeem", "redleg", "redub", "reechy", "reeden", "reeker", "reesle", "reesty", "refall", "refit", "refly", "refold", "refool", "refoot", "reform", "refuel", "refute", "reglet", "regush", "rehaul", "rehood", "rehoop", "reina", "reit", "rejail", "reknow", "reland", "relap", "relate", "relict", "relief", "relist", "reloan", "relook", "reluct", "remand", "remass", "remill", "remise", "remop", "reneg", "renege", "rennet", "rental", "rentee", "renvoy", "repark", "repel", "repent", "repew", "replod", "repope", "repost", "reps", "repugn", "rereel", "rerob", "rerope", "rerub", "resack", "resalt", "rescan", "reseal", "reseed", "resell", "resing", "resize", "resort", "restem", "rester", "resuck", "resume", "reswim", "retag", "retail", "retain", "retalk", "retial", "retime", "retomb", "retook", "retour", "reve", "revend", "revest", "revete", "revise", "rewake", "rewarm", "rewarn", "rewear", "rewet", "rhea", "rhetor", "rhodic", "rhumb", "rhymer", "rhymic", "riant", "riches", "richly", "ricin", "ricker", "rife", "rifely", "rifle", "rikk", "rime", "rimple", "rine", "ringle", "rinner", "rinser", "ripgut", "ripple", "rippon", "risala", "rising", "risk", "risp", "risper", "risque", "rissel", "rist", "ritual", "rival", "rive", "rivel", "rizzom", "road", "roam", "rococo", "rodlet", "rodman", "roodle", "roof", "roofer", "rool", "roost", "rooted", "ropish", "roric", "rosal", "rosary", "roset", "rosy", "rotal", "rotang", "rotate", "rotch", "rote", "roter", "rotor", "rouky", "roundy", "rouse", "rout", "rowet", "rubbly", "rubify", "rubine", "ruckus", "rudity", "ruer", "ruff", "ruffin", "rugate", "rummy", "rundle", "runed", "rung", "runite", "runkle", "runkly", "runlet", "rupee", "rusine", "rusot", "rust", "ruther", "rutter", "saber", "sabicu", "sabina", "saccus", "sacral", "sadic", "sadly", "safe", "safety", "saft", "sagene", "sailed", "sairly", "saki", "salar", "salary", "salema", "salite", "sallee", "salloo", "sally", "salma", "salol", "saloon", "salta", "salted", "salten", "saluki", "salvo", "samekh", "sammer", "sandan", "sane", "sanely", "sank", "sare", "sargo", "sarkar", "sarkit", "sarna", "sart", "sarus", "sarwan", "satiny", "satron", "satura", "sauf", "saur", "sawyer", "saxtie", "saya", "sayer", "saying", "sazen", "scaler", "scalma", "scaly", "scarn", "scaul", "scaup", "scaut", "scena", "schanz", "school", "scolb", "scoria", "scour", "scout", "scovel", "scovy", "scow", "scraze", "screak", "screen", "screet", "scrob", "scuddy", "scull", "sculp", "scun", "scup", "scurdy", "scute", "scythe", "secern", "seck", "secque", "seeder", "seemer", "seen", "seepy", "seethe", "seggar", "seizer", "seldom", "self", "sell", "selt", "seme", "semi", "semsem", "sence", "senna", "sense", "sepium", "septum", "sequa", "sequin", "seroot", "serosa", "sert", "serve", "sesma", "sesqui", "setal", "seton", "setose", "settle", "setule", "severy", "sewan", "sewery", "sewing", "sextry", "shack", "shaggy", "shake", "shaku", "shard", "sharer", "sharpy", "shauwe", "shavee", "shaven", "shea", "sheafy", "shears", "shee", "sheik", "sherif", "sherry", "shewa", "shice", "shide", "shift", "shiny", "shinza", "shire", "shivoo", "shoaly", "shole", "shood", "shoppy", "shorn", "shot", "show", "showy", "shram", "shrill", "shrimp", "shroff", "shrog", "shul", "shumac", "shush", "shyish", "sidth", "siege", "sieger", "sighty", "signee", "signum", "sika", "silkie", "silo", "silver", "simiad", "simson", "sindon", "sing", "singer", "sinker", "siping", "sippet", "siress", "sirpea", "sise", "siva", "siver", "sizz", "skeigh", "skein", "skelf", "skene", "skerry", "skewl", "skill", "skimp", "skinch", "skinny", "skip", "skippy", "skirl", "skit", "skitty", "skiver", "skunk", "skyish", "skyre", "skyway", "slae", "slag", "slake", "slam", "slart", "slatch", "sleazy", "sled", "sledge", "slee", "sleeky", "sleigh", "slided", "slimer", "slimsy", "sline", "slippy", "slish", "slite", "slob", "sloomy", "sloosh", "slops", "sloshy", "slot", "sloth", "slowly", "slubby", "sludgy", "slur", "slurp", "slush", "slyish", "smack", "smaik", "small", "smally", "smalm", "smalt", "smash", "smeek", "smethe", "smeuse", "smitch", "smith", "smoky", "snape", "snark", "snarly", "snatch", "sneak", "sneery", "sneeze", "snirl", "snivel", "snob", "snock", "snugly", "soaky", "sobber", "sobeit", "sody", "soke", "soken", "soldi", "soleus", "soli", "solid", "solio", "sollar", "solo", "soloth", "sompay", "sonant", "sonar", "sonata", "sontag", "sooky", "soph", "sophy", "sora", "sorage", "sorbin", "sorda", "sordor", "sorgho", "sorner", "sortal", "sorted", "sortie", "sorty", "soso", "soul", "sour", "source", "souren", "soury", "south", "sowle", "sowt", "sozin", "space", "spadix", "spak", "spale", "spandy", "spane", "spart", "spasm", "spat", "spayad", "speal", "speech", "speed", "speel", "spend", "spent", "spetch", "spiced", "spicer", "spiky", "spilly", "spina", "spiran", "spleen", "spleet", "splosh", "spoky", "sporty", "sprew", "sprint", "spry", "spuke", "spurl", "sputum", "spydom", "squame", "squeak", "squin", "squirr", "stalk", "stanch", "stand", "stang", "stank", "stanno", "staw", "stean", "steel", "steely", "steep", "stema", "sten", "stend", "stereo", "stet", "stich", "sticks", "stilet", "still", "stim", "stint", "stinty", "stipe", "stiver", "stoic", "stola", "stole", "stood", "stoon", "storge", "storm", "stormy", "stoush", "stoven", "strade", "strand", "streck", "streep", "streng", "stress", "strich", "strid", "strig", "striga", "stroud", "strum", "strung", "strut", "struv", "stubb", "stuggy", "stung", "stupex", "stylar", "styler", "stylo", "styrax", "subdeb", "suber", "subfeu", "subget", "subgit", "subtle", "succin", "such", "suet", "sugh", "suist", "suji", "sulfa", "sulky", "sullen", "sully", "sumbul", "sump", "sumph", "sundew", "sundik", "sune", "sunken", "sunway", "sunyie", "sura", "surat", "surd", "sure", "surfle", "surma", "surnay", "surra", "suther", "sutra", "suttin", "suwe", "swaddy", "swage", "swager", "swaggy", "swain", "swallo", "swap", "swart", "swarty", "swarve", "swatch", "swayed", "sweath", "sweepy", "swelp", "swelty", "swim", "swink", "swire", "swum", "swure", "syndic", "syntan", "tabber", "tabefy", "table", "tablet", "tabula", "tacket", "tackey", "taenia", "tafia", "tahr", "taimen", "taint", "taipan", "talao", "talker", "tally", "talma", "tamein", "tandle", "tangs", "tanist", "tantum", "taoyin", "tapism", "tapul", "tara", "taraf", "tarboy", "tardle", "tarfa", "targe", "targer", "target", "tarnal", "taroc", "tarpon", "tarri", "tarrie", "tars", "tarten", "tasker", "tass", "taster", "tatbeb", "tatchy", "tattoo", "taula", "taupe", "taupou", "tauten", "tavert", "tavola", "tawney", "tawse", "taxite", "taxwax", "tayer", "tche", "tead", "teapoy", "teave", "tebbet", "teck", "tecuma", "tedge", "teel", "teerer", "teetan", "teff", "telar", "tell", "tellt", "temper", "tempt", "temser", "tenai", "tepal", "tepefy", "terap", "tercel", "teredo", "tergal", "tern", "terron", "tervee", "teth", "tetric", "tewit", "thaler", "tharm", "thaw", "theah", "theave", "thecae", "thee", "theine", "themer", "then", "thenar", "thermo", "thetch", "thewy", "theyre", "thigh", "thilk", "this", "thisn", "thong", "thooid", "thorax", "thouse", "thrain", "thrap", "thresh", "throe", "throng", "thrush", "thruv", "thulir", "thurse", "thymy", "tibey", "tibial", "tide", "tidily", "tidy", "tierce", "tigger", "tilaka", "tiling", "tilt", "timbe", "timber", "timid", "timon", "tinct", "tind", "tinean", "tinman", "tinny", "tinsel", "tint", "tintie", "tippee", "tipper", "tipple", "tirer", "tirma", "tisar", "titian", "titled", "titty", "tock", "toecap", "toggel", "toher", "toiled", "toiler", "toity", "tole", "toller", "tombac", "tone", "toneme", "tong", "tonify", "tonite", "tonner", "tonsor", "tooken", "tool", "toot", "tootle", "topass", "topaz", "topo", "topply", "tornus", "torque", "tort", "tosser", "tother", "totum", "tould", "tousle", "towkay", "townee", "towny", "towy", "toxon", "toze", "tracer", "tragus", "trah", "trail", "trait", "tramp", "trance", "tranka", "trawl", "tread", "treed", "trevet", "trews", "tricar", "trilby", "triose", "trisul", "triton", "trivet", "trivia", "troco", "trogon", "tromba", "trombe", "troner", "trotol", "trough", "troupe", "trout", "trouty", "truish", "trush", "truss", "trygon", "trying", "tryout", "tsadik", "tsamba", "tsubo", "tubar", "tubate", "tubba", "tuchun", "tucky", "tughra", "tuism", "tula", "tulasi", "tumbak", "tumble", "tumid", "tuner", "tunish", "tunist", "tupek", "tupuna", "turbeh", "turco", "turfed", "turio", "turion", "turn", "turus", "turwar", "tusher", "tusk", "tuskar", "tussah", "tussis", "tutman", "tuzzle", "twaddy", "twain", "twal", "twale", "twant", "tweag", "tweed", "tweeg", "tweeny", "tweeze", "twiner", "twinge", "tyke", "tylose", "tympan", "typhic", "typify", "tyste", "udaler", "ulitis", "ulla", "ulmin", "umbel", "umber", "umble", "umbrae", "umiak", "umiri", "unably", "unakin", "unbar", "unbear", "unbit", "unbold", "unbung", "unbush", "unbusk", "unbusy", "uncage", "uncask", "uncate", "uncity", "unclog", "uncolt", "uncope", "uncore", "uncost", "undark", "undaub", "undeck", "undern", "undies", "undo", "undone", "undrag", "undry", "unfill", "unfilm", "unflat", "unfree", "unfur", "ungilt", "ungirt", "ungulp", "unhang", "unhap", "unhigh", "unhome", "unhoop", "unhusk", "uniate", "unjoin", "unjust", "unkind", "unlimp", "unlit", "unloop", "unlord", "unlost", "unluck", "unmeek", "unmew", "unneth", "unnice", "unpaid", "unpass", "unpawn", "unpeg", "unpure", "unrake", "unrare", "unrash", "unread", "unreel", "unrein", "unsafe", "unsawn", "unseen", "unself", "unsin", "unsome", "unsown", "unspar", "unspin", "unspun", "unstop", "untaut", "untie", "untone", "unvain", "unwarn", "unweel", "unweft", "unweld", "unwily", "unwomb", "unwon", "unzen", "upbray", "upbuy", "upcut", "upeat", "upgale", "upget", "upgird", "upgirt", "upgive", "uphill", "upla", "uplay", "uplead", "uppish", "uppull", "uproar", "uproot", "upside", "upsoak", "uptake", "uptorn", "uptuck", "upturn", "upwaft", "upwall", "upwith", "urari", "urde", "uresis", "urheen", "ursal", "ursoid", "urus", "usage", "usar", "usara", "usward", "uterus", "uvalha", "uveous", "vacant", "vagal", "vagary", "vague", "vajra", "valval", "valved", "vamped", "vanish", "varan", "varna", "vase", "vassal", "vasu", "vealer", "vector", "vedika", "vela", "vellon", "velo", "velum", "vendee", "venue", "venule", "venust", "verdin", "verek", "verre", "versed", "verso", "versor", "versta", "vertex", "vester", "vetch", "vetchy", "veto", "vexed", "vexil", "viand", "viatic", "vice", "vicuna", "viddui", "viewer", "viewly", "viga", "vile", "vilely", "villar", "vineal", "viner", "vinny", "vinyl", "violon", "viral", "virgal", "virify", "virl", "virtu", "virtue", "viscin", "visie", "visita", "visive", "vistal", "vives", "vlei", "vocate", "voiced", "voidee", "voider", "vortex", "votive", "vouge", "waag", "waar", "wabber", "wace", "wacken", "waddly", "wadi", "wahahe", "wahine", "wahoo", "waker", "wale", "wali", "wallop", "walrus", "walsh", "wamp", "wandle", "wanle", "ward", "warish", "wark", "warn", "warper", "warple", "warran", "warst", "wart", "warty", "wasty", "wauble", "waving", "wawa", "waxy", "wayaka", "wean", "weanel", "weary", "webbed", "wede", "wedset", "weeder", "week", "ween", "weir", "weism", "wels", "welt", "wept", "wert", "wese", "wester", "wetted", "whacky", "wharf", "whatna", "whau", "whein", "whenas", "wherry", "whet", "whewer", "whid", "whidah", "whiffy", "whilom", "whity", "whom", "whone", "whoo", "whyo", "wice", "wick", "widbin", "widow", "wife", "wifely", "wigger", "wiglet", "wilga", "will", "willet", "willey", "wince", "wind", "winer", "wing", "winy", "winze", "wippen", "wird", "wise", "wiser", "wisha", "witchy", "wivern", "wokowi", "wolfen", "wolfer", "womera", "wone", "wong", "wonky", "wont", "woodly", "woody", "wooing", "woolen", "wordy", "worky", "wormy", "worset", "worth", "woundy", "woven", "wranny", "wrawl", "wrig", "wrist", "wugg", "wulk", "wuther", "wyson", "wyss", "wyve", "xebec", "xenia", "xenium", "xylene", "xyloyl", "yacht", "yade", "yaff", "yaffle", "yahan", "yalb", "yamph", "yanky", "yapa", "yapper", "yarak", "yarder", "yare", "yarm", "yarpha", "yarrow", "yeah", "yeard", "yede", "yerth", "yetlin", "ygapo", "yirm", "yirn", "yirr", "yogi", "yojan", "yolked", "yook", "youff", "youp", "yttric", "yucker", "yucky", "yuzlik", "zabeta", "zabra", "zacate", "zachun", "zafree", "zain", "zant", "zein", "zemmi", "zendik", "zenick", "zequin", "zest", "zeugma", "zibet", "zigzag", "zimb", "zoacum", "zobo", "zocco", "zodiac", "zoic", "zonar", "zonic", "zooid", "zoom", "zoon", "zoons", "zooter", "zoril", "zudda", "zygoma", "zygose", "zymase", "zythem" ); system "stty -echo"; print "Password: "; chomp($word = ); print "\n"; system "stty echo"; print "Website: "; chomp($web = ); $value = md5_hex($word."|secret:".$web."|secret:".$word); $word = 0; $word = "i don't know what this does"; $sub1 = substr($value, 1, 4); $sub2 = substr($value, 5, 4); $sub3 = substr($value, 9, 4); $sub4 = substr($value, 13, 4); $vsub1 = hex($sub1); $vsub2 = hex($sub2); $vsub3 = hex($sub3); $vsub4 = hex($sub4); $word1 = $words[$vsub1 % 4096]; $word2 = $words[$vsub2 % 4096]; $word3 = $words[$vsub3 % 4096]; $word4 = $words[$vsub4 % 4096]; $vsub1 = int (hex($sub1) / 4096); $vsub2 = int (hex($sub2) / 4096); $vsub3 = int (hex($sub3) / 4096); $vsub4 = int (hex($sub4) / 4096); $word1 = ucfirst($word1) if $vsub1 % 2; $word2 = ucfirst($word2) if $vsub2 % 2; $word3 = ucfirst($word3) if $vsub3 % 2; $word4 = ucfirst($word4) if $vsub4 % 2; print "Password for $web:\n"; print $word1, $word2, $word3, $word4, "\n";