From 0085e272b2002437f11f74ccdde0d6975f2cd9f2 Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Tue, 17 Aug 2010 13:40:52 -0400 Subject: Added back reCAPTCHA Because of the lifting of the jail around my server, it can once again use reCAPTCHAs for security. Backed out changeset 9332c237adcd --- includes/comments.php | 5 + includes/recaptchalib.php | 277 + includes/securimage/AHGBold.ttf | Bin 144556 -> 0 bytes includes/securimage/LICENSE.txt | 458 - includes/securimage/README.FONT.txt | 12 - includes/securimage/README.txt | 88 - includes/securimage/audio/0.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/0.wav | Bin 22158 -> 0 bytes includes/securimage/audio/1.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/1.wav | Bin 22158 -> 0 bytes includes/securimage/audio/2.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/2.wav | Bin 22158 -> 0 bytes includes/securimage/audio/3.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/3.wav | Bin 22158 -> 0 bytes includes/securimage/audio/4.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/4.wav | Bin 22158 -> 0 bytes includes/securimage/audio/5.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/5.wav | Bin 22158 -> 0 bytes includes/securimage/audio/6.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/6.wav | Bin 22158 -> 0 bytes includes/securimage/audio/7.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/7.wav | Bin 22158 -> 0 bytes includes/securimage/audio/8.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/8.wav | Bin 22158 -> 0 bytes includes/securimage/audio/9.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/9.wav | Bin 22158 -> 0 bytes includes/securimage/audio/A.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/A.wav | Bin 22158 -> 0 bytes includes/securimage/audio/B.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/B.wav | Bin 22158 -> 0 bytes includes/securimage/audio/C.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/C.wav | Bin 22158 -> 0 bytes includes/securimage/audio/D.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/D.wav | Bin 22158 -> 0 bytes includes/securimage/audio/E.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/E.wav | Bin 22158 -> 0 bytes includes/securimage/audio/F.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/F.wav | Bin 22158 -> 0 bytes includes/securimage/audio/G.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/G.wav | Bin 22158 -> 0 bytes includes/securimage/audio/H.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/H.wav | Bin 22158 -> 0 bytes includes/securimage/audio/I.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/I.wav | Bin 22158 -> 0 bytes includes/securimage/audio/J.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/J.wav | Bin 22158 -> 0 bytes includes/securimage/audio/K.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/K.wav | Bin 22158 -> 0 bytes includes/securimage/audio/L.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/L.wav | Bin 22158 -> 0 bytes includes/securimage/audio/M.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/M.wav | Bin 22158 -> 0 bytes includes/securimage/audio/N.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/N.wav | Bin 22158 -> 0 bytes includes/securimage/audio/O.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/O.wav | Bin 22158 -> 0 bytes includes/securimage/audio/P.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/P.wav | Bin 22158 -> 0 bytes includes/securimage/audio/Q.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/Q.wav | Bin 22158 -> 0 bytes includes/securimage/audio/R.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/R.wav | Bin 22158 -> 0 bytes includes/securimage/audio/S.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/S.wav | Bin 22158 -> 0 bytes includes/securimage/audio/T.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/T.wav | Bin 22158 -> 0 bytes includes/securimage/audio/U.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/U.wav | Bin 22158 -> 0 bytes includes/securimage/audio/V.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/V.wav | Bin 22158 -> 0 bytes includes/securimage/audio/W.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/W.wav | Bin 22158 -> 0 bytes includes/securimage/audio/X.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/X.wav | Bin 22158 -> 0 bytes includes/securimage/audio/Y.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/Y.wav | Bin 22158 -> 0 bytes includes/securimage/audio/Z.mp3 | Bin 8928 -> 0 bytes includes/securimage/audio/Z.wav | Bin 22158 -> 0 bytes includes/securimage/backgrounds/bg3.jpg | Bin 15854 -> 0 bytes includes/securimage/backgrounds/bg4.jpg | Bin 16438 -> 0 bytes includes/securimage/backgrounds/bg5.jpg | Bin 48746 -> 0 bytes includes/securimage/backgrounds/bg6.png | Bin 42880 -> 0 bytes includes/securimage/database/.htaccess | 1 - includes/securimage/database/index.html | 1 - includes/securimage/database/securimage.sqlite | Bin 30720 -> 0 bytes includes/securimage/example_form.php | 71 - includes/securimage/gdfonts/automatic.gdf | Bin 61196 -> 0 bytes includes/securimage/images/audio_icon.gif | Bin 621 -> 0 bytes includes/securimage/images/refresh.gif | Bin 865 -> 0 bytes includes/securimage/securimage.php | 1584 --- includes/securimage/securimage_play.php | 43 - includes/securimage/securimage_play.swf | Bin 3102 -> 0 bytes includes/securimage/securimage_show.php | 55 - includes/securimage/securimage_show_example.php | 64 - includes/securimage/securimage_show_example2.php | 55 - includes/securimage/words/words.txt | 15621 --------------------- pages/post.php | 11 +- theme/comments.tpl | 7 +- 98 files changed, 291 insertions(+), 18062 deletions(-) create mode 100755 includes/recaptchalib.php delete mode 100644 includes/securimage/AHGBold.ttf delete mode 100644 includes/securimage/LICENSE.txt delete mode 100644 includes/securimage/README.FONT.txt delete mode 100644 includes/securimage/README.txt delete mode 100644 includes/securimage/audio/0.mp3 delete mode 100644 includes/securimage/audio/0.wav delete mode 100644 includes/securimage/audio/1.mp3 delete mode 100644 includes/securimage/audio/1.wav delete mode 100644 includes/securimage/audio/2.mp3 delete mode 100644 includes/securimage/audio/2.wav delete mode 100644 includes/securimage/audio/3.mp3 delete mode 100644 includes/securimage/audio/3.wav delete mode 100644 includes/securimage/audio/4.mp3 delete mode 100644 includes/securimage/audio/4.wav delete mode 100644 includes/securimage/audio/5.mp3 delete mode 100644 includes/securimage/audio/5.wav delete mode 100644 includes/securimage/audio/6.mp3 delete mode 100644 includes/securimage/audio/6.wav delete mode 100644 includes/securimage/audio/7.mp3 delete mode 100644 includes/securimage/audio/7.wav delete mode 100644 includes/securimage/audio/8.mp3 delete mode 100644 includes/securimage/audio/8.wav delete mode 100644 includes/securimage/audio/9.mp3 delete mode 100644 includes/securimage/audio/9.wav delete mode 100644 includes/securimage/audio/A.mp3 delete mode 100644 includes/securimage/audio/A.wav delete mode 100644 includes/securimage/audio/B.mp3 delete mode 100644 includes/securimage/audio/B.wav delete mode 100644 includes/securimage/audio/C.mp3 delete mode 100644 includes/securimage/audio/C.wav delete mode 100644 includes/securimage/audio/D.mp3 delete mode 100644 includes/securimage/audio/D.wav delete mode 100644 includes/securimage/audio/E.mp3 delete mode 100644 includes/securimage/audio/E.wav delete mode 100644 includes/securimage/audio/F.mp3 delete mode 100644 includes/securimage/audio/F.wav delete mode 100644 includes/securimage/audio/G.mp3 delete mode 100644 includes/securimage/audio/G.wav delete mode 100644 includes/securimage/audio/H.mp3 delete mode 100644 includes/securimage/audio/H.wav delete mode 100644 includes/securimage/audio/I.mp3 delete mode 100644 includes/securimage/audio/I.wav delete mode 100644 includes/securimage/audio/J.mp3 delete mode 100644 includes/securimage/audio/J.wav delete mode 100644 includes/securimage/audio/K.mp3 delete mode 100644 includes/securimage/audio/K.wav delete mode 100644 includes/securimage/audio/L.mp3 delete mode 100644 includes/securimage/audio/L.wav delete mode 100644 includes/securimage/audio/M.mp3 delete mode 100644 includes/securimage/audio/M.wav delete mode 100644 includes/securimage/audio/N.mp3 delete mode 100644 includes/securimage/audio/N.wav delete mode 100644 includes/securimage/audio/O.mp3 delete mode 100644 includes/securimage/audio/O.wav delete mode 100644 includes/securimage/audio/P.mp3 delete mode 100644 includes/securimage/audio/P.wav delete mode 100644 includes/securimage/audio/Q.mp3 delete mode 100644 includes/securimage/audio/Q.wav delete mode 100644 includes/securimage/audio/R.mp3 delete mode 100644 includes/securimage/audio/R.wav delete mode 100644 includes/securimage/audio/S.mp3 delete mode 100644 includes/securimage/audio/S.wav delete mode 100644 includes/securimage/audio/T.mp3 delete mode 100644 includes/securimage/audio/T.wav delete mode 100644 includes/securimage/audio/U.mp3 delete mode 100644 includes/securimage/audio/U.wav delete mode 100644 includes/securimage/audio/V.mp3 delete mode 100644 includes/securimage/audio/V.wav delete mode 100644 includes/securimage/audio/W.mp3 delete mode 100644 includes/securimage/audio/W.wav delete mode 100644 includes/securimage/audio/X.mp3 delete mode 100644 includes/securimage/audio/X.wav delete mode 100644 includes/securimage/audio/Y.mp3 delete mode 100644 includes/securimage/audio/Y.wav delete mode 100644 includes/securimage/audio/Z.mp3 delete mode 100644 includes/securimage/audio/Z.wav delete mode 100644 includes/securimage/backgrounds/bg3.jpg delete mode 100644 includes/securimage/backgrounds/bg4.jpg delete mode 100644 includes/securimage/backgrounds/bg5.jpg delete mode 100644 includes/securimage/backgrounds/bg6.png delete mode 100644 includes/securimage/database/.htaccess delete mode 100644 includes/securimage/database/index.html delete mode 100644 includes/securimage/database/securimage.sqlite delete mode 100644 includes/securimage/example_form.php delete mode 100644 includes/securimage/gdfonts/automatic.gdf delete mode 100644 includes/securimage/images/audio_icon.gif delete mode 100644 includes/securimage/images/refresh.gif delete mode 100644 includes/securimage/securimage.php delete mode 100644 includes/securimage/securimage_play.php delete mode 100644 includes/securimage/securimage_play.swf delete mode 100644 includes/securimage/securimage_show.php delete mode 100644 includes/securimage/securimage_show_example.php delete mode 100644 includes/securimage/securimage_show_example2.php delete mode 100644 includes/securimage/words/words.txt diff --git a/includes/comments.php b/includes/comments.php index aca3eb1..78353c1 100755 --- a/includes/comments.php +++ b/includes/comments.php @@ -22,6 +22,10 @@ if (!defined('S_INCLUDE_FILE')) {define('S_INCLUDE_FILE',1);} require('headerproc.php'); +include('includes/recaptchalib.php'); +$publickey = "6LfgvgEAAAAAAG_BJMkWk8sNcT1nBaGoXKJYb-JT"; +$privatekey = "6LfgvgEAAAAAAD0_UVLp57MU7tqcypsbZPS9qTnr"; + $curID = 0; $template = new FITemplate('comments'); @@ -30,6 +34,7 @@ $template->add('USERNAME',(isLoggedIn() ? getSessionUsername() : 'Anonymous')); if (!isLoggedIn()) { + $template->add('RECAPTCHA',recaptcha_get_html($publickey)); $template->adds_block('NOLOG',array('exi'=>1)); } diff --git a/includes/recaptchalib.php b/includes/recaptchalib.php new file mode 100755 index 0000000..897c509 --- /dev/null +++ b/includes/recaptchalib.php @@ -0,0 +1,277 @@ + $value ) + $req .= $key . '=' . urlencode( stripslashes($value) ) . '&'; + + // Cut the last '&' + $req=substr($req,0,strlen($req)-1); + return $req; +} + + + +/** + * Submits an HTTP POST to a reCAPTCHA server + * @param string $host + * @param string $path + * @param array $data + * @param int port + * @return array response + */ +function _recaptcha_http_post($host, $path, $data, $port = 80) { + + $req = _recaptcha_qsencode ($data); + + $http_request = "POST $path HTTP/1.0\r\n"; + $http_request .= "Host: $host\r\n"; + $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; + $http_request .= "Content-Length: " . strlen($req) . "\r\n"; + $http_request .= "User-Agent: reCAPTCHA/PHP\r\n"; + $http_request .= "\r\n"; + $http_request .= $req; + + $response = ''; + if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) { + die ('Could not open socket'); + } + + fwrite($fs, $http_request); + + while ( !feof($fs) ) + $response .= fgets($fs, 1160); // One TCP-IP packet + fclose($fs); + $response = explode("\r\n\r\n", $response, 2); + + return $response; +} + + + +/** + * Gets the challenge HTML (javascript and non-javascript version). + * This is called from the browser, and the resulting reCAPTCHA HTML widget + * is embedded within the HTML form it was called from. + * @param string $pubkey A public key for reCAPTCHA + * @param string $error The error given by reCAPTCHA (optional, default is null) + * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false) + + * @return string - The HTML to be embedded in the user's form. + */ +function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false) +{ + if ($pubkey == null || $pubkey == '') { + die ("To use reCAPTCHA you must get an API key from http://recaptcha.net/api/getkey"); + } + + if ($use_ssl) { + $server = RECAPTCHA_API_SECURE_SERVER; + } else { + $server = RECAPTCHA_API_SERVER; + } + + $errorpart = ""; + if ($error) { + $errorpart = "&error=" . $error; + } + return ' + + '; +} + + + + +/** + * A ReCaptchaResponse is returned from recaptcha_check_answer() + */ +class ReCaptchaResponse { + var $is_valid; + var $error; +} + + +/** + * Calls an HTTP POST function to verify if the user's guess was correct + * @param string $privkey + * @param string $remoteip + * @param string $challenge + * @param string $response + * @param array $extra_params an array of extra variables to post to the server + * @return ReCaptchaResponse + */ +function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array()) +{ + if ($privkey == null || $privkey == '') { + die ("To use reCAPTCHA you must get an API key from http://recaptcha.net/api/getkey"); + } + + if ($remoteip == null || $remoteip == '') { + die ("For security reasons, you must pass the remote ip to reCAPTCHA"); + } + + + + //discard spam submissions + if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) { + $recaptcha_response = new ReCaptchaResponse(); + $recaptcha_response->is_valid = false; + $recaptcha_response->error = 'incorrect-captcha-sol'; + return $recaptcha_response; + } + + $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/verify", + array ( + 'privatekey' => $privkey, + 'remoteip' => $remoteip, + 'challenge' => $challenge, + 'response' => $response + ) + $extra_params + ); + + $answers = explode ("\n", $response [1]); + $recaptcha_response = new ReCaptchaResponse(); + + if (trim ($answers [0]) == 'true') { + $recaptcha_response->is_valid = true; + } + else { + $recaptcha_response->is_valid = false; + $recaptcha_response->error = $answers [1]; + } + return $recaptcha_response; + +} + +/** + * gets a URL where the user can sign up for reCAPTCHA. If your application + * has a configuration page where you enter a key, you should provide a link + * using this function. + * @param string $domain The domain where the page is hosted + * @param string $appname The name of your application + */ +function recaptcha_get_signup_url ($domain = null, $appname = null) { + return "http://recaptcha.net/api/getkey?" . _recaptcha_qsencode (array ('domain' => $domain, 'app' => $appname)); +} + +function _recaptcha_aes_pad($val) { + $block_size = 16; + $numpad = $block_size - (strlen ($val) % $block_size); + return str_pad($val, strlen ($val) + $numpad, chr($numpad)); +} + +/* Mailhide related code */ + +function _recaptcha_aes_encrypt($val,$ky) { + if (! function_exists ("mcrypt_encrypt")) { + die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed."); + } + $mode=MCRYPT_MODE_CBC; + $enc=MCRYPT_RIJNDAEL_128; + $val=_recaptcha_aes_pad($val); + return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); +} + + +function _recaptcha_mailhide_urlbase64 ($x) { + return strtr(base64_encode ($x), '+/', '-_'); +} + +/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */ +function recaptcha_mailhide_url($pubkey, $privkey, $email) { + if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) { + die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " . + "you can do so at http://mailhide.recaptcha.net/apikey"); + } + + + $ky = pack('H*', $privkey); + $cryptmail = _recaptcha_aes_encrypt ($email, $ky); + + return "http://mailhide.recaptcha.net/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail); +} + +/** + * gets the parts of the email to expose to the user. + * eg, given johndoe@example,com return ["john", "example.com"]. + * the email is then displayed as john...@example.com + */ +function _recaptcha_mailhide_email_parts ($email) { + $arr = preg_split("/@/", $email ); + + if (strlen ($arr[0]) <= 4) { + $arr[0] = substr ($arr[0], 0, 1); + } else if (strlen ($arr[0]) <= 6) { + $arr[0] = substr ($arr[0], 0, 3); + } else { + $arr[0] = substr ($arr[0], 0, 4); + } + return $arr; +} + +/** + * Gets html to display an email address given a public an private key. + * to get a key, go to: + * + * http://mailhide.recaptcha.net/apikey + */ +function recaptcha_mailhide_html($pubkey, $privkey, $email) { + $emailparts = _recaptcha_mailhide_email_parts ($email); + $url = recaptcha_mailhide_url ($pubkey, $privkey, $email); + + return htmlentities($emailparts[0]) . "...@" . htmlentities ($emailparts [1]); + +} + + +?> diff --git a/includes/securimage/AHGBold.ttf b/includes/securimage/AHGBold.ttf deleted file mode 100644 index 764b23d..0000000 Binary files a/includes/securimage/AHGBold.ttf and /dev/null differ diff --git a/includes/securimage/LICENSE.txt b/includes/securimage/LICENSE.txt deleted file mode 100644 index 9a749e6..0000000 --- a/includes/securimage/LICENSE.txt +++ /dev/null @@ -1,458 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/includes/securimage/README.FONT.txt b/includes/securimage/README.FONT.txt deleted file mode 100644 index d4770de..0000000 --- a/includes/securimage/README.FONT.txt +++ /dev/null @@ -1,12 +0,0 @@ -AHGBold.ttf is used by Securimage under the following license: - -Alte Haas Grotesk is a typeface that look like an helvetica printed in an old Muller-Brockmann Book. - -These fonts are freeware and can be distributed as long as they are -together with this text file. - -I would appreciate very much to see what you have done with it anyway. - -yann le coroller -www.yannlecoroller.com -yann@lecoroller.com \ No newline at end of file diff --git a/includes/securimage/README.txt b/includes/securimage/README.txt deleted file mode 100644 index b608018..0000000 --- a/includes/securimage/README.txt +++ /dev/null @@ -1,88 +0,0 @@ -NAME: - - Securimage - A PHP class for creating and managing form CAPTCHA images - -VERSION: 2.0 BETA - -AUTHOR: - - Drew Phillips - -DOWNLOAD: - - The latest version can always be - found at http://www.phpcaptcha.org - -DOCUMENTATION: - - Online documentation of the class, methods, and variables can - be found at http://www.phpcaptcha.org/Securimage_Docs/ - -REQUIREMENTS: - PHP 4.3.0 - GD 2.0 - FreeType (recommended, required for TTF support) - -SYNOPSIS: - - require_once 'securimage.php'; - - $image = new Securimage(); - - $image->show(); - - // Code Validation - - $image = new Securimage(); - if ($image->check($_POST['code']) == true) { - echo "Correct!"; - } else { - echo "Sorry, wrong code."; - } - -DESCRIPTION: - - What is Securimage? - - Securimage is a PHP class that is used to generate and validate CAPTCHA images. - The classes uses an existing PHP session or creates its own if none is found to store the - CAPTCHA code. Variables within the class are used to control the style and display of the image. - The class supports TTF fonts and effects for strengthening the security of the image. - If TTF support is not available, GD fonts can be used as well, but certain options such as - transparent text and angled letters cannot be used. - - -COPYRIGHT: - Copyright (c) 2009 Drew Phillips. All rights reserved. - This software is released under the GNU Lesser General Public License. - - ----------------------------------------------------------------------------- - Flash code created for Securimage by Douglas Walsh (www.douglaswalsh.net) - Many thanks for releasing this to the project! - - ------------------------------------------------------------------------------ - Portions of Securimage contain code from Han-Kwang Nienhuys' PHP captcha - - Han-Kwang Nienhuys' PHP captcha - Copyright June 2007 - - This copyright message and attribution must be preserved upon - modification. Redistribution under other licenses is expressly allowed. - Other licenses include GPL 2 or higher, BSD, and non-free licenses. - The original, unrestricted version can be obtained from - http://www.lagom.nl/linux/hkcaptcha/ - - ------------------------------------------------------------------------------- - AHGBold.ttf (AlteHaasGroteskBold.ttf) font was created by Yann Le Coroller and is distributed as freeware - - Alte Haas Grotesk is a typeface that look like an helvetica printed in an old Muller-Brockmann Book. - - These fonts are freeware and can be distributed as long as they are - together with this text file. - - I would appreciate very much to see what you have done with it anyway. - - yann le coroller - www.yannlecoroller.com - yann@lecoroller.com - diff --git a/includes/securimage/audio/0.mp3 b/includes/securimage/audio/0.mp3 deleted file mode 100644 index 2dd4a7f..0000000 Binary files a/includes/securimage/audio/0.mp3 and /dev/null differ diff --git a/includes/securimage/audio/0.wav b/includes/securimage/audio/0.wav deleted file mode 100644 index b01b8dd..0000000 Binary files a/includes/securimage/audio/0.wav and /dev/null differ diff --git a/includes/securimage/audio/1.mp3 b/includes/securimage/audio/1.mp3 deleted file mode 100644 index e9b0a67..0000000 Binary files a/includes/securimage/audio/1.mp3 and /dev/null differ diff --git a/includes/securimage/audio/1.wav b/includes/securimage/audio/1.wav deleted file mode 100644 index f37f81e..0000000 Binary files a/includes/securimage/audio/1.wav and /dev/null differ diff --git a/includes/securimage/audio/2.mp3 b/includes/securimage/audio/2.mp3 deleted file mode 100644 index ef18d0b..0000000 Binary files a/includes/securimage/audio/2.mp3 and /dev/null differ diff --git a/includes/securimage/audio/2.wav b/includes/securimage/audio/2.wav deleted file mode 100644 index 66ed235..0000000 Binary files a/includes/securimage/audio/2.wav and /dev/null differ diff --git a/includes/securimage/audio/3.mp3 b/includes/securimage/audio/3.mp3 deleted file mode 100644 index f762bc0..0000000 Binary files a/includes/securimage/audio/3.mp3 and /dev/null differ diff --git a/includes/securimage/audio/3.wav b/includes/securimage/audio/3.wav deleted file mode 100644 index 45bb85f..0000000 Binary files a/includes/securimage/audio/3.wav and /dev/null differ diff --git a/includes/securimage/audio/4.mp3 b/includes/securimage/audio/4.mp3 deleted file mode 100644 index a8992e0..0000000 Binary files a/includes/securimage/audio/4.mp3 and /dev/null differ diff --git a/includes/securimage/audio/4.wav b/includes/securimage/audio/4.wav deleted file mode 100644 index b21bb65..0000000 Binary files a/includes/securimage/audio/4.wav and /dev/null differ diff --git a/includes/securimage/audio/5.mp3 b/includes/securimage/audio/5.mp3 deleted file mode 100644 index c86ba55..0000000 Binary files a/includes/securimage/audio/5.mp3 and /dev/null differ diff --git a/includes/securimage/audio/5.wav b/includes/securimage/audio/5.wav deleted file mode 100644 index b7654b0..0000000 Binary files a/includes/securimage/audio/5.wav and /dev/null differ diff --git a/includes/securimage/audio/6.mp3 b/includes/securimage/audio/6.mp3 deleted file mode 100644 index ff1b7ab..0000000 Binary files a/includes/securimage/audio/6.mp3 and /dev/null differ diff --git a/includes/securimage/audio/6.wav b/includes/securimage/audio/6.wav deleted file mode 100644 index a8a23ad..0000000 Binary files a/includes/securimage/audio/6.wav and /dev/null differ diff --git a/includes/securimage/audio/7.mp3 b/includes/securimage/audio/7.mp3 deleted file mode 100644 index 2fe35bb..0000000 Binary files a/includes/securimage/audio/7.mp3 and /dev/null differ diff --git a/includes/securimage/audio/7.wav b/includes/securimage/audio/7.wav deleted file mode 100644 index f76c22b..0000000 Binary files a/includes/securimage/audio/7.wav and /dev/null differ diff --git a/includes/securimage/audio/8.mp3 b/includes/securimage/audio/8.mp3 deleted file mode 100644 index 9e38fc7..0000000 Binary files a/includes/securimage/audio/8.mp3 and /dev/null differ diff --git a/includes/securimage/audio/8.wav b/includes/securimage/audio/8.wav deleted file mode 100644 index c356cca..0000000 Binary files a/includes/securimage/audio/8.wav and /dev/null differ diff --git a/includes/securimage/audio/9.mp3 b/includes/securimage/audio/9.mp3 deleted file mode 100644 index 1c598bc..0000000 Binary files a/includes/securimage/audio/9.mp3 and /dev/null differ diff --git a/includes/securimage/audio/9.wav b/includes/securimage/audio/9.wav deleted file mode 100644 index 1d828f1..0000000 Binary files a/includes/securimage/audio/9.wav and /dev/null differ diff --git a/includes/securimage/audio/A.mp3 b/includes/securimage/audio/A.mp3 deleted file mode 100644 index eafcef2..0000000 Binary files a/includes/securimage/audio/A.mp3 and /dev/null differ diff --git a/includes/securimage/audio/A.wav b/includes/securimage/audio/A.wav deleted file mode 100644 index c3dcd8a..0000000 Binary files a/includes/securimage/audio/A.wav and /dev/null differ diff --git a/includes/securimage/audio/B.mp3 b/includes/securimage/audio/B.mp3 deleted file mode 100644 index 0ac42f0..0000000 Binary files a/includes/securimage/audio/B.mp3 and /dev/null differ diff --git a/includes/securimage/audio/B.wav b/includes/securimage/audio/B.wav deleted file mode 100644 index 9f380c2..0000000 Binary files a/includes/securimage/audio/B.wav and /dev/null differ diff --git a/includes/securimage/audio/C.mp3 b/includes/securimage/audio/C.mp3 deleted file mode 100644 index 14a08f0..0000000 Binary files a/includes/securimage/audio/C.mp3 and /dev/null differ diff --git a/includes/securimage/audio/C.wav b/includes/securimage/audio/C.wav deleted file mode 100644 index a9b81eb..0000000 Binary files a/includes/securimage/audio/C.wav and /dev/null differ diff --git a/includes/securimage/audio/D.mp3 b/includes/securimage/audio/D.mp3 deleted file mode 100644 index 033fed8..0000000 Binary files a/includes/securimage/audio/D.mp3 and /dev/null differ diff --git a/includes/securimage/audio/D.wav b/includes/securimage/audio/D.wav deleted file mode 100644 index 66ee3a1..0000000 Binary files a/includes/securimage/audio/D.wav and /dev/null differ diff --git a/includes/securimage/audio/E.mp3 b/includes/securimage/audio/E.mp3 deleted file mode 100644 index 7192004..0000000 Binary files a/includes/securimage/audio/E.mp3 and /dev/null differ diff --git a/includes/securimage/audio/E.wav b/includes/securimage/audio/E.wav deleted file mode 100644 index d8fe450..0000000 Binary files a/includes/securimage/audio/E.wav and /dev/null differ diff --git a/includes/securimage/audio/F.mp3 b/includes/securimage/audio/F.mp3 deleted file mode 100644 index e54eee5..0000000 Binary files a/includes/securimage/audio/F.mp3 and /dev/null differ diff --git a/includes/securimage/audio/F.wav b/includes/securimage/audio/F.wav deleted file mode 100644 index 4046176..0000000 Binary files a/includes/securimage/audio/F.wav and /dev/null differ diff --git a/includes/securimage/audio/G.mp3 b/includes/securimage/audio/G.mp3 deleted file mode 100644 index 9c2f15b..0000000 Binary files a/includes/securimage/audio/G.mp3 and /dev/null differ diff --git a/includes/securimage/audio/G.wav b/includes/securimage/audio/G.wav deleted file mode 100644 index 8700179..0000000 Binary files a/includes/securimage/audio/G.wav and /dev/null differ diff --git a/includes/securimage/audio/H.mp3 b/includes/securimage/audio/H.mp3 deleted file mode 100644 index af7e28b..0000000 Binary files a/includes/securimage/audio/H.mp3 and /dev/null differ diff --git a/includes/securimage/audio/H.wav b/includes/securimage/audio/H.wav deleted file mode 100644 index 2e33c4e..0000000 Binary files a/includes/securimage/audio/H.wav and /dev/null differ diff --git a/includes/securimage/audio/I.mp3 b/includes/securimage/audio/I.mp3 deleted file mode 100644 index aa60abb..0000000 Binary files a/includes/securimage/audio/I.mp3 and /dev/null differ diff --git a/includes/securimage/audio/I.wav b/includes/securimage/audio/I.wav deleted file mode 100644 index cf60cd8..0000000 Binary files a/includes/securimage/audio/I.wav and /dev/null differ diff --git a/includes/securimage/audio/J.mp3 b/includes/securimage/audio/J.mp3 deleted file mode 100644 index 7eeab43..0000000 Binary files a/includes/securimage/audio/J.mp3 and /dev/null differ diff --git a/includes/securimage/audio/J.wav b/includes/securimage/audio/J.wav deleted file mode 100644 index 5fecfae..0000000 Binary files a/includes/securimage/audio/J.wav and /dev/null differ diff --git a/includes/securimage/audio/K.mp3 b/includes/securimage/audio/K.mp3 deleted file mode 100644 index 387f8f7..0000000 Binary files a/includes/securimage/audio/K.mp3 and /dev/null differ diff --git a/includes/securimage/audio/K.wav b/includes/securimage/audio/K.wav deleted file mode 100644 index 27e1d37..0000000 Binary files a/includes/securimage/audio/K.wav and /dev/null differ diff --git a/includes/securimage/audio/L.mp3 b/includes/securimage/audio/L.mp3 deleted file mode 100644 index fcf243a..0000000 Binary files a/includes/securimage/audio/L.mp3 and /dev/null differ diff --git a/includes/securimage/audio/L.wav b/includes/securimage/audio/L.wav deleted file mode 100644 index 139f7cd..0000000 Binary files a/includes/securimage/audio/L.wav and /dev/null differ diff --git a/includes/securimage/audio/M.mp3 b/includes/securimage/audio/M.mp3 deleted file mode 100644 index 728bd69..0000000 Binary files a/includes/securimage/audio/M.mp3 and /dev/null differ diff --git a/includes/securimage/audio/M.wav b/includes/securimage/audio/M.wav deleted file mode 100644 index 08d5cf5..0000000 Binary files a/includes/securimage/audio/M.wav and /dev/null differ diff --git a/includes/securimage/audio/N.mp3 b/includes/securimage/audio/N.mp3 deleted file mode 100644 index d3aac75..0000000 Binary files a/includes/securimage/audio/N.mp3 and /dev/null differ diff --git a/includes/securimage/audio/N.wav b/includes/securimage/audio/N.wav deleted file mode 100644 index fba6923..0000000 Binary files a/includes/securimage/audio/N.wav and /dev/null differ diff --git a/includes/securimage/audio/O.mp3 b/includes/securimage/audio/O.mp3 deleted file mode 100644 index 145bfae..0000000 Binary files a/includes/securimage/audio/O.mp3 and /dev/null differ diff --git a/includes/securimage/audio/O.wav b/includes/securimage/audio/O.wav deleted file mode 100644 index e5a3578..0000000 Binary files a/includes/securimage/audio/O.wav and /dev/null differ diff --git a/includes/securimage/audio/P.mp3 b/includes/securimage/audio/P.mp3 deleted file mode 100644 index e64bc25..0000000 Binary files a/includes/securimage/audio/P.mp3 and /dev/null differ diff --git a/includes/securimage/audio/P.wav b/includes/securimage/audio/P.wav deleted file mode 100644 index 3b94c7a..0000000 Binary files a/includes/securimage/audio/P.wav and /dev/null differ diff --git a/includes/securimage/audio/Q.mp3 b/includes/securimage/audio/Q.mp3 deleted file mode 100644 index d47cbc5..0000000 Binary files a/includes/securimage/audio/Q.mp3 and /dev/null differ diff --git a/includes/securimage/audio/Q.wav b/includes/securimage/audio/Q.wav deleted file mode 100644 index c757e54..0000000 Binary files a/includes/securimage/audio/Q.wav and /dev/null differ diff --git a/includes/securimage/audio/R.mp3 b/includes/securimage/audio/R.mp3 deleted file mode 100644 index 3b0b528..0000000 Binary files a/includes/securimage/audio/R.mp3 and /dev/null differ diff --git a/includes/securimage/audio/R.wav b/includes/securimage/audio/R.wav deleted file mode 100644 index c2e4b24..0000000 Binary files a/includes/securimage/audio/R.wav and /dev/null differ diff --git a/includes/securimage/audio/S.mp3 b/includes/securimage/audio/S.mp3 deleted file mode 100644 index 35e361d..0000000 Binary files a/includes/securimage/audio/S.mp3 and /dev/null differ diff --git a/includes/securimage/audio/S.wav b/includes/securimage/audio/S.wav deleted file mode 100644 index 8edcf8d..0000000 Binary files a/includes/securimage/audio/S.wav and /dev/null differ diff --git a/includes/securimage/audio/T.mp3 b/includes/securimage/audio/T.mp3 deleted file mode 100644 index 5abe5d2..0000000 Binary files a/includes/securimage/audio/T.mp3 and /dev/null differ diff --git a/includes/securimage/audio/T.wav b/includes/securimage/audio/T.wav deleted file mode 100644 index e714a4a..0000000 Binary files a/includes/securimage/audio/T.wav and /dev/null differ diff --git a/includes/securimage/audio/U.mp3 b/includes/securimage/audio/U.mp3 deleted file mode 100644 index d7868d9..0000000 Binary files a/includes/securimage/audio/U.mp3 and /dev/null differ diff --git a/includes/securimage/audio/U.wav b/includes/securimage/audio/U.wav deleted file mode 100644 index f5f35d1..0000000 Binary files a/includes/securimage/audio/U.wav and /dev/null differ diff --git a/includes/securimage/audio/V.mp3 b/includes/securimage/audio/V.mp3 deleted file mode 100644 index 7328169..0000000 Binary files a/includes/securimage/audio/V.mp3 and /dev/null differ diff --git a/includes/securimage/audio/V.wav b/includes/securimage/audio/V.wav deleted file mode 100644 index 4234a96..0000000 Binary files a/includes/securimage/audio/V.wav and /dev/null differ diff --git a/includes/securimage/audio/W.mp3 b/includes/securimage/audio/W.mp3 deleted file mode 100644 index 682311c..0000000 Binary files a/includes/securimage/audio/W.mp3 and /dev/null differ diff --git a/includes/securimage/audio/W.wav b/includes/securimage/audio/W.wav deleted file mode 100644 index f6fba71..0000000 Binary files a/includes/securimage/audio/W.wav and /dev/null differ diff --git a/includes/securimage/audio/X.mp3 b/includes/securimage/audio/X.mp3 deleted file mode 100644 index 8d09252..0000000 Binary files a/includes/securimage/audio/X.mp3 and /dev/null differ diff --git a/includes/securimage/audio/X.wav b/includes/securimage/audio/X.wav deleted file mode 100644 index a45fd4b..0000000 Binary files a/includes/securimage/audio/X.wav and /dev/null differ diff --git a/includes/securimage/audio/Y.mp3 b/includes/securimage/audio/Y.mp3 deleted file mode 100644 index b1f1a0d..0000000 Binary files a/includes/securimage/audio/Y.mp3 and /dev/null differ diff --git a/includes/securimage/audio/Y.wav b/includes/securimage/audio/Y.wav deleted file mode 100644 index 921ae5d..0000000 Binary files a/includes/securimage/audio/Y.wav and /dev/null differ diff --git a/includes/securimage/audio/Z.mp3 b/includes/securimage/audio/Z.mp3 deleted file mode 100644 index bcafb75..0000000 Binary files a/includes/securimage/audio/Z.mp3 and /dev/null differ diff --git a/includes/securimage/audio/Z.wav b/includes/securimage/audio/Z.wav deleted file mode 100644 index 1fa83a4..0000000 Binary files a/includes/securimage/audio/Z.wav and /dev/null differ diff --git a/includes/securimage/backgrounds/bg3.jpg b/includes/securimage/backgrounds/bg3.jpg deleted file mode 100644 index a2d62d6..0000000 Binary files a/includes/securimage/backgrounds/bg3.jpg and /dev/null differ diff --git a/includes/securimage/backgrounds/bg4.jpg b/includes/securimage/backgrounds/bg4.jpg deleted file mode 100644 index 37a22f8..0000000 Binary files a/includes/securimage/backgrounds/bg4.jpg and /dev/null differ diff --git a/includes/securimage/backgrounds/bg5.jpg b/includes/securimage/backgrounds/bg5.jpg deleted file mode 100644 index 0a04181..0000000 Binary files a/includes/securimage/backgrounds/bg5.jpg and /dev/null differ diff --git a/includes/securimage/backgrounds/bg6.png b/includes/securimage/backgrounds/bg6.png deleted file mode 100644 index 22f9d67..0000000 Binary files a/includes/securimage/backgrounds/bg6.png and /dev/null differ diff --git a/includes/securimage/database/.htaccess b/includes/securimage/database/.htaccess deleted file mode 100644 index 8d2f256..0000000 --- a/includes/securimage/database/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all diff --git a/includes/securimage/database/index.html b/includes/securimage/database/index.html deleted file mode 100644 index 8d1c8b6..0000000 --- a/includes/securimage/database/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/includes/securimage/database/securimage.sqlite b/includes/securimage/database/securimage.sqlite deleted file mode 100644 index 10e233d..0000000 Binary files a/includes/securimage/database/securimage.sqlite and /dev/null differ diff --git a/includes/securimage/example_form.php b/includes/securimage/example_form.php deleted file mode 100644 index 952a24b..0000000 --- a/includes/securimage/example_form.php +++ /dev/null @@ -1,71 +0,0 @@ - - * File: securimage.php
- * URL: www.phpcaptcha.org - */ - - -session_start(); // Start the session where the code will be stored. - -?> - - - Securimage Test Form - - - - - -
-Username:
-
-Password:
-

- -
- - - - - - - - - - - - -
- - - Reload Image -
-
-Code:
- - -

- - -
- -check($_POST['code']); - - if($valid == true) { - echo "
Thanks, you entered the correct code.
Click here to go back.
"; - } else { - echo "
Sorry, the code you entered was invalid. Go back to try again.
"; - } -} - -?> - - - diff --git a/includes/securimage/gdfonts/automatic.gdf b/includes/securimage/gdfonts/automatic.gdf deleted file mode 100644 index 3eee706..0000000 Binary files a/includes/securimage/gdfonts/automatic.gdf and /dev/null differ diff --git a/includes/securimage/images/audio_icon.gif b/includes/securimage/images/audio_icon.gif deleted file mode 100644 index beafd51..0000000 Binary files a/includes/securimage/images/audio_icon.gif and /dev/null differ diff --git a/includes/securimage/images/refresh.gif b/includes/securimage/images/refresh.gif deleted file mode 100644 index a10b247..0000000 Binary files a/includes/securimage/images/refresh.gif and /dev/null differ diff --git a/includes/securimage/securimage.php b/includes/securimage/securimage.php deleted file mode 100644 index ebabab0..0000000 --- a/includes/securimage/securimage.php +++ /dev/null @@ -1,1584 +0,0 @@ - - * File: securimage.php
- * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version.

- * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details.

- * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

- * - * Any modifications to the library should be indicated clearly in the source code - * to inform users that the changes are not a part of the original software.

- * - * If you found this script useful, please take a quick moment to rate it.
- * http://www.hotscripts.com/rate/49400.html Thanks. - * - * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA - * @link http://www.phpcaptcha.org/latest.zip Download Latest Version - * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation - * @copyright 2009 Drew Phillips - * @author Drew Phillips - * @version 2.0.1 BETA (December 6th, 2009) - * @package Securimage - * - */ - -/** - ChangeLog - - 2.0.1 - - Add support for browsers with cookies disabled (requires php5, sqlite) maps users to md5 hashed ip addresses and md5 hashed codes for security - - Add fallback to gd fonts if ttf support is not enabled or font file not found (Mike Challis http://www.642weather.com/weather/scripts.php) - - Check for previous definition of image type constants (Mike Challis) - - Fix mime type settings for audio output - - Fixed color allocation issues with multiple colors and background images, consolidate allocation to one function - - Ability to let codes expire after a given length of time - - Allow HTML color codes to be passed to Securimage_Color (suggested by Mike Challis) - - 2.0.0 - - Add mathematical distortion to characters (using code from HKCaptcha) - - Improved session support - - Added Securimage_Color class for easier color definitions - - Add distortion to audio output to prevent binary comparison attack (proposed by Sven "SavageTiger" Hagemann [insecurity.nl]) - - Flash button to stream mp3 audio (Douglas Walsh www.douglaswalsh.net) - - Audio output is mp3 format by default - - Change font to AlteHaasGrotesk by yann le coroller - - Some code cleanup - - 1.0.4 (unreleased) - - Ability to output audible codes in mp3 format to stream from flash - - 1.0.3.1 - - Error reading from wordlist in some cases caused words to be cut off 1 letter short - - 1.0.3 - - Removed shadow_text from code which could cause an undefined property error due to removal from previous version - - 1.0.2 - - Audible CAPTCHA Code wav files - - Create codes from a word list instead of random strings - - 1.0 - - Added the ability to use a selected character set, rather than a-z0-9 only. - - Added the multi-color text option to use different colors for each letter. - - Switched to automatic session handling instead of using files for code storage - - Added GD Font support if ttf support is not available. Can use internal GD fonts or load new ones. - - Added the ability to set line thickness - - Added option for drawing arced lines over letters - - Added ability to choose image type for output - - */ - -/** - * Output images in JPEG format - */ -if (!defined('SI_IMAGE_JPEG')) - define('SI_IMAGE_JPEG', 1); -/** - * Output images in PNG format - */ -if (!defined('SI_IMAGE_PNG')) - define('SI_IMAGE_PNG', 2); -/** - * Output images in GIF format (not recommended) - * Must have GD >= 2.0.28! - */ -if (!defined('SI_IMAGE_GIF')) - define('SI_IMAGE_GIF', 3); - -/** - * Securimage CAPTCHA Class. - * - * @package Securimage - * @subpackage classes - * - */ -class Securimage { - - /** - * The desired width of the CAPTCHA image. - * - * @var int - */ - var $image_width; - - /** - * The desired width of the CAPTCHA image. - * - * @var int - */ - var $image_height; - - /** - * The image format for output.
- * Valid options: SI_IMAGE_PNG, SI_IMAGE_JPG, SI_IMAGE_GIF - * - * @var int - */ - var $image_type; - - /** - * The length of the code to generate. - * - * @var int - */ - var $code_length; - - /** - * The character set for individual characters in the image.
- * Letters are converted to uppercase.
- * The font must support the letters or there may be problematic substitutions. - * - * @var string - */ - var $charset; - - /** - * Create codes using this word list - * - * @var string The path to the word list to use for creating CAPTCHA codes - */ - var $wordlist_file; - - /** - * Use wordlist of not - * - * @var bool true to use wordlist file, false to use random code - */ - var $use_wordlist = false; - - /** - * Note: Use of GD fonts is not recommended as many distortion features are not available
- * The GD font to use.
- * Internal gd fonts can be loaded by their number.
- * Alternatively, a file path can be given and the font will be loaded from file. - * - * @var mixed - */ - var $gd_font_file; - - /** - * The approximate size of the font in pixels.
- * This does not control the size of the font because that is determined by the GD font itself.
- * This is used to aid the calculations of positioning used by this class.
- * - * @var int - */ - var $gd_font_size; - - /** - * Use a gd font instead of TTF - * - * @var bool true for gd font, false for TTF - */ - var $use_gd_font; - - // Note: These font options below do not apply if you set $use_gd_font to true with the exception of $text_color - - /** - * The path to the TTF font file to load. - * - * @var string - */ - var $ttf_file; - - /** - * How much to distort image, higher = more distortion.
- * Distortion is only available when using TTF fonts.
- * - * @var float - */ - var $perturbation; - - /** - * The minimum angle in degrees, with 0 degrees being left-to-right reading text.
- * Higher values represent a counter-clockwise rotation.
- * For example, a value of 90 would result in bottom-to-top reading text.
- * This value along with maximum angle distance do not need to be very high with perturbation - * - * @var int - */ - var $text_angle_minimum; - - /** - * The minimum angle in degrees, with 0 degrees being left-to-right reading text.
- * Higher values represent a counter-clockwise rotation.
- * For example, a value of 90 would result in bottom-to-top reading text. - * - * @var int - */ - var $text_angle_maximum; - - /** - * The X-Position on the image where letter drawing will begin.
- * This value is in pixels from the left side of the image. - * - * @var int - * @deprecated 2.0 - */ - var $text_x_start; - - /** - * The background color for the image as a Securimage_Color.
- * - * @var Securimage_Color - */ - var $image_bg_color; - - /** - * Scan this directory for gif, jpg, and png files to use as background images.
- * A random image file will be picked each time.
- * Change from null to the full path to your directory.
- * i.e. var $background_directory = $_SERVER['DOCUMENT_ROOT'] . '/securimage/backgrounds'; - * Make sure not to pass a background image to the show function, otherwise this directive is ignored. - * - * @var string - */ - var $background_directory = null; //'./backgrounds'; - - /** - * The text color to use for drawing characters as a Securimage_Color.
- * This value is ignored if $use_multi_text is set to true.
- * Make sure this contrasts well with the background color or image.
- * - * @see Securimage::$use_multi_text - * @var Securimage_Color - */ - var $text_color; - - /** - * Set to true to use multiple colors for each character. - * - * @see Securimage::$multi_text_color - * @var boolean - */ - var $use_multi_text; - - /** - * Array of Securimage_Colors which will be randomly selected for each letter.
- * - * @var array - */ - var $multi_text_color; - - /** - * Set to true to make the characters appear transparent. - * - * @see Securimage::$text_transparency_percentage - * @var boolean - */ - var $use_transparent_text; - - /** - * The percentage of transparency, 0 to 100.
- * A value of 0 is completely opaque, 100 is completely transparent (invisble) - * - * @see Securimage::$use_transparent_text - * @var int - */ - var $text_transparency_percentage; - - - // Line options - /** - * Draw vertical and horizontal lines on the image. - * - * @see Securimage::$line_color - * @see Securimage::$draw_lines_over_text - * @var boolean - */ - var $num_lines; - - /** - * Color of lines drawn over text - * - * @var string - */ - var $line_color; - - /** - * Draw the lines over the text.
- * If fales lines will be drawn before putting the text on the image. - * - * @var boolean - */ - var $draw_lines_over_text; - - /** - * Text to write at the bottom corner of captcha image - * - * @since 2.0 - * @var string Signature text - */ - var $image_signature; - - /** - * Color to use for writing signature text - * - * @since 2.0 - * @var Securimage_Color - */ - var $signature_color; - - /** - * Full path to the WAV files to use to make the audio files, include trailing /.
- * Name Files [A-Z0-9].wav - * - * @since 1.0.1 - * @var string - */ - var $audio_path; - - /** - * Type of audio file to generate (mp3 or wav) - * - * @var string - */ - var $audio_format; - - /** - * The session name to use if not the default. Blank for none - * - * @see http://php.net/session_name - * @since 2.0 - * @var string - */ - var $session_name = ''; - - /** - * The amount of time in seconds that a code remains valid.
- * Any code older than this number will be considered invalid even if entered correctly.
- * Any non-numeric or value less than 1 disables this functionality. - * - * @var int - */ - var $expiry_time; - - /** - * Path to the file to use for storing codes for users.
- * THIS FILE MUST ABSOLUTELY NOT BE ACCESSIBLE FROM A WEB BROWSER!!
- * Put this file in a directory below the web root or one that is restricted (i.e. an apache .htaccess file with deny from all)
- * If you cannot meet those requirements your forms may not be completely protected.
- * You could obscure the database file name but this is also not recommended. - * - * @var string - */ - var $sqlite_database; - - /** - * Use an SQLite database for storing codes as a backup to sessions.
- * Note: Sessions will still be used - */ - var $use_sqlite_db; - - - //END USER CONFIGURATION - //There should be no need to edit below unless you really know what you are doing. - - /** - * The gd image resource. - * - * @access private - * @var resource - */ - var $im; - - /** - * Temporary image for rendering - * - * @access private - * @var resource - */ - var $tmpimg; - - /** - * Internal scale factor for anti-alias @hkcaptcha - * - * @access private - * @since 2.0 - * @var int - */ - var $iscale; // internal scale factor for anti-alias @hkcaptcha - - /** - * The background image resource - * - * @access private - * @var resource - */ - var $bgimg; - - /** - * The code generated by the script - * - * @access private - * @var string - */ - var $code; - - /** - * The code that was entered by the user - * - * @access private - * @var string - */ - var $code_entered; - - /** - * Whether or not the correct code was entered - * - * @access private - * @var boolean - */ - var $correct_code; - - /** - * Handle to SQLite database - * - * @access private - * @var resource - */ - var $sqlite_handle; - - /** - * Color resource for image line color - * - * @access private - * @var int - */ - var $gdlinecolor; - - /** - * Array of colors for multi colored codes - * - * @access private - * @var array - */ - var $gdmulticolor; - - /** - * Color resource for image font color - * - * @access private - * @var int - */ - var $gdtextcolor; - - /** - * Color resource for image signature color - * - * @access private - * @var int - */ - var $gdsignaturecolor; - - /** - * Color resource for image background color - * - * @access private - * @var int - */ - var $gdbgcolor; - - - /** - * Class constructor.
- * Because the class uses sessions, this will attempt to start a session if there is no previous one.
- * If you do not start a session before calling the class, the constructor must be called before any - * output is sent to the browser. - * - * - * $securimage = new Securimage(); - * - * - */ - function Securimage() - { - // Initialize session or attach to existing - if ( session_id() == '' ) { // no session has been started yet, which is needed for validation - if (trim($this->session_name) != '') { - session_name($this->session_name); // set session name if provided - } - session_start(); - } - - // Set Default Values - $this->image_width = 230; - $this->image_height = 80; - $this->image_type = SI_IMAGE_PNG; - - $this->code_length = 6; - $this->charset = 'ABCDEFGHKLMNPRSTUVWYZabcdefghklmnprstuvwyz23456789'; - $this->wordlist_file = './words/words.txt'; - $this->use_wordlist = false; - - $this->gd_font_file = 'gdfonts/automatic.gdf'; - $this->use_gd_font = false; - $this->gd_font_size = 24; - $this->text_x_start = 15; - - $this->ttf_file = './AHGBold.ttf'; - - $this->perturbation = 0.75; - $this->iscale = 5; - $this->text_angle_minimum = 0; - $this->text_angle_maximum = 0; - - $this->image_bg_color = new Securimage_Color(0xff, 0xff, 0xff); - $this->text_color = new Securimage_Color(0x3d, 0x3d, 0x3d); - $this->multi_text_color = array(new Securimage_Color(0x0, 0x20, 0xCC), - new Securimage_Color(0x0, 0x30, 0xEE), - new Securimage_color(0x0, 0x40, 0xCC), - new Securimage_Color(0x0, 0x50, 0xEE), - new Securimage_Color(0x0, 0x60, 0xCC)); - $this->use_multi_text = false; - - $this->use_transparent_text = false; - $this->text_transparency_percentage = 30; - - $this->num_lines = 10; - $this->line_color = new Securimage_Color(0x3d, 0x3d, 0x3d); - $this->draw_lines_over_text = true; - - $this->image_signature = ''; - $this->signature_color = new Securimage_Color(0x20, 0x50, 0xCC); - $this->signature_font = './AHGBold.ttf'; - - $this->audio_path = './audio/'; - $this->audio_format = 'mp3'; - $this->session_name = ''; - $this->expiry_time = 900; - - $this->sqlite_database = 'database/securimage.sqlite'; - $this->use_sqlite_db = false; - - $this->sqlite_handle = false; - } - - /** - * Generate a code and output the image to the browser. - * - * - * show('bg.jpg'); - * ?> - * - * - * @param string $background_image The path to an image to use as the background for the CAPTCHA - */ - function show($background_image = "") - { - if($background_image != "" && is_readable($background_image)) { - $this->bgimg = $background_image; - } - - $this->doImage(); - } - - /** - * Validate the code entered by the user. - * - * - * $code = $_POST['code']; - * if ($securimage->check($code) == false) { - * die("Sorry, the code entered did not match."); - * } else { - * $valid = true; - * } - * - * @param string $code The code the user entered - * @return boolean true if the code was correct, false if not - */ - function check($code) - { - $this->code_entered = $code; - $this->validate(); - return $this->correct_code; - } - - /** - * Output audio file with HTTP headers to browser - * - * - * $sound = new Securimage(); - * $sound->audio_format = 'mp3'; - * $sound->outputAudioFile(); - * - * - * @since 2.0 - */ - function outputAudioFile() - { - if (strtolower($this->audio_format) == 'wav') { - header('Content-type: audio/x-wav'); - $ext = 'wav'; - } else { - header('Content-type: audio/mpeg'); // default to mp3 - $ext = 'mp3'; - } - - header("Content-Disposition: attachment; filename=\"securimage_audio.{$ext}\""); - header('Cache-Control: no-store, no-cache, must-revalidate'); - header('Expires: Sun, 1 Jan 2000 12:00:00 GMT'); - header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . 'GMT'); - - $audio = $this->getAudibleCode($ext); - - header('Content-Length: ' . strlen($audio)); - - echo $audio; - exit; - } - - /** - * Generate and output the image - * - * @access private - * - */ - function doImage() - { - if ($this->use_gd_font == true) { - $this->iscale = 1; - } - if($this->use_transparent_text == true || $this->bgimg != "") { - $this->im = imagecreatetruecolor($this->image_width, $this->image_height); - $this->tmpimg = imagecreatetruecolor($this->image_width * $this->iscale, $this->image_height * $this->iscale); - - } else { //no transparency - $this->im = imagecreate($this->image_width, $this->image_height); - $this->tmpimg = imagecreate($this->image_width * $this->iscale, $this->image_height * $this->iscale); - } - - $this->allocateColors(); - imagepalettecopy($this->tmpimg, $this->im); - - $this->setBackground(); - - $this->createCode(); - - if (!$this->draw_lines_over_text && $this->num_lines > 0) $this->drawLines(); - - $this->drawWord(); - if ($this->use_gd_font == false && is_readable($this->ttf_file)) $this->distortedCopy(); - - if ($this->draw_lines_over_text && $this->num_lines > 0) $this->drawLines(); - - if (trim($this->image_signature) != '') $this->addSignature(); - - $this->output(); - - } - - /** - * Allocate all colors that will be used in the CAPTCHA image - * - * @since 2.0.1 - * @access private - */ - function allocateColors() - { - // allocate bg color first for imagecreate - $this->gdbgcolor = imagecolorallocate($this->im, $this->image_bg_color->r, $this->image_bg_color->g, $this->image_bg_color->b); - - $alpha = intval($this->text_transparency_percentage / 100 * 127); - - if ($this->use_transparent_text == true) { - $this->gdtextcolor = imagecolorallocatealpha($this->im, $this->text_color->r, $this->text_color->g, $this->text_color->b, $alpha); - $this->gdlinecolor = imagecolorallocatealpha($this->im, $this->line_color->r, $this->line_color->g, $this->line_color->b, $alpha); - } else { - $this->gdtextcolor = imagecolorallocate($this->im, $this->text_color->r, $this->text_color->g, $this->text_color->b); - $this->gdlinecolor = imagecolorallocate($this->im, $this->line_color->r, $this->line_color->g, $this->line_color->b); - } - - $this->gdsignaturecolor = imagecolorallocate($this->im, $this->signature_color->r, $this->signature_color->g, $this->signature_color->b); - - if ($this->use_multi_text == true) { - $this->gdmulticolor = array(); - - foreach($this->multi_text_color as $color) { - if ($this->use_transparent_text == true) { - $this->gdmulticolor[] = imagecolorallocatealpha($this->im, $color->r, $color->g, $color->b, $alpha); - } else { - $this->gdmulticolor[] = imagecolorallocate($this->im, $color->r, $color->g, $color->b); - } - } - } - } - - /** - * Set the background of the CAPTCHA image - * - * @access private - * - */ - function setBackground() - { - imagefilledrectangle($this->im, 0, 0, $this->image_width * $this->iscale, $this->image_height * $this->iscale, $this->gdbgcolor); - imagefilledrectangle($this->tmpimg, 0, 0, $this->image_width * $this->iscale, $this->image_height * $this->iscale, $this->gdbgcolor); - - if ($this->bgimg == '') { - if ($this->background_directory != null && is_dir($this->background_directory) && is_readable($this->background_directory)) { - $img = $this->getBackgroundFromDirectory(); - if ($img != false) { - $this->bgimg = $img; - } - } - } - - $dat = @getimagesize($this->bgimg); - if($dat == false) { - return; - } - - switch($dat[2]) { - case 1: $newim = @imagecreatefromgif($this->bgimg); break; - case 2: $newim = @imagecreatefromjpeg($this->bgimg); break; - case 3: $newim = @imagecreatefrompng($this->bgimg); break; - case 15: $newim = @imagecreatefromwbmp($this->bgimg); break; - case 16: $newim = @imagecreatefromxbm($this->bgimg); break; - default: return; - } - - if(!$newim) return; - - imagecopyresized($this->im, $newim, 0, 0, 0, 0, $this->image_width, $this->image_height, imagesx($newim), imagesy($newim)); - } - - /** - * Return the full path to a random gif, jpg, or png from the background directory. - * - * @access private - * @see Securimage::$background_directory - * @return mixed false if none found, string $path if found - */ - function getBackgroundFromDirectory() - { - $images = array(); - - if ($dh = opendir($this->background_directory)) { - while (($file = readdir($dh)) !== false) { - if (preg_match('/(jpg|gif|png)$/i', $file)) $images[] = $file; - } - - closedir($dh); - - if (sizeof($images) > 0) { - return rtrim($this->background_directory, '/') . '/' . $images[rand(0, sizeof($images)-1)]; - } - } - - return false; - } - - /** - * Draw random curvy lines over the image
- * Modified code from HKCaptcha - * - * @since 2.0 - * @access private - * - */ - function drawLines() - { - for ($line = 0; $line < $this->num_lines; ++$line) { - $x = $this->image_width * (1 + $line) / ($this->num_lines + 1); - $x += (0.5 - $this->frand()) * $this->image_width / $this->num_lines; - $y = rand($this->image_height * 0.1, $this->image_height * 0.9); - - $theta = ($this->frand()-0.5) * M_PI * 0.7; - $w = $this->image_width; - $len = rand($w * 0.4, $w * 0.7); - $lwid = rand(0, 2); - - $k = $this->frand() * 0.6 + 0.2; - $k = $k * $k * 0.5; - $phi = $this->frand() * 6.28; - $step = 0.5; - $dx = $step * cos($theta); - $dy = $step * sin($theta); - $n = $len / $step; - $amp = 1.5 * $this->frand() / ($k + 5.0 / $len); - $x0 = $x - 0.5 * $len * cos($theta); - $y0 = $y - 0.5 * $len * sin($theta); - - $ldx = round(-$dy * $lwid); - $ldy = round($dx * $lwid); - - for ($i = 0; $i < $n; ++$i) { - $x = $x0 + $i * $dx + $amp * $dy * sin($k * $i * $step + $phi); - $y = $y0 + $i * $dy - $amp * $dx * sin($k * $i * $step + $phi); - imagefilledrectangle($this->im, $x, $y, $x + $lwid, $y + $lwid, $this->gdlinecolor); - } - } - } - - /** - * Draw the CAPTCHA code over the image - * - * @access private - * - */ - function drawWord() - { - $width2 = $this->image_width * $this->iscale; - $height2 = $this->image_height * $this->iscale; - - if ($this->use_gd_font == true || !is_readable($this->ttf_file)) { - if (!is_int($this->gd_font_file)) { //is a file name - $font = @imageloadfont($this->gd_font_file); - if ($font == false) { - trigger_error("Failed to load GD Font file {$this->gd_font_file} ", E_USER_WARNING); - return; - } - } else { //gd font identifier - $font = $this->gd_font_file; - } - - imagestring($this->im, $font, $this->text_x_start, ($this->image_height / 2) - ($this->gd_font_size / 2), $this->code, $this->gdtextcolor); - } else { //ttf font - $font_size = $height2 * .35; - $bb = imagettfbbox($font_size, 0, $this->ttf_file, $this->code); - $tx = $bb[4] - $bb[0]; - $ty = $bb[5] - $bb[1]; - $x = floor($width2 / 2 - $tx / 2 - $bb[0]); - $y = round($height2 / 2 - $ty / 2 - $bb[1]); - - $strlen = strlen($this->code); - if (!is_array($this->multi_text_color)) $this->use_multi_text = false; - - - if ($this->use_multi_text == false && $this->text_angle_minimum == 0 && $this->text_angle_maximum == 0) { // no angled or multi-color characters - imagettftext($this->tmpimg, $font_size, 0, $x, $y, $this->gdtextcolor, $this->ttf_file, $this->code); - } else { - for($i = 0; $i < $strlen; ++$i) { - $angle = rand($this->text_angle_minimum, $this->text_angle_maximum); - $y = rand($y - 5, $y + 5); - if ($this->use_multi_text == true) { - $font_color = $this->gdmulticolor[rand(0, sizeof($this->gdmulticolor) - 1)]; - } else { - $font_color = $this->gdtextcolor; - } - - $ch = $this->code{$i}; - - imagettftext($this->tmpimg, $font_size, $angle, $x, $y, $font_color, $this->ttf_file, $ch); - - // estimate character widths to increment $x without creating spaces that are too large or too small - // these are best estimates to align text but may vary between fonts - // for optimal character widths, do not use multiple text colors or character angles and the complete string will be written by imagettftext - if (strpos('abcdeghknopqsuvxyz', $ch) !== false) { - $min_x = $font_size - ($this->iscale * 6); - $max_x = $font_size - ($this->iscale * 6); - } else if (strpos('ilI1', $ch) !== false) { - $min_x = $font_size / 5; - $max_x = $font_size / 3; - } else if (strpos('fjrt', $ch) !== false) { - $min_x = $font_size - ($this->iscale * 12); - $max_x = $font_size - ($this->iscale * 12); - } else if ($ch == 'wm') { - $min_x = $font_size; - $max_x = $font_size + ($this->iscale * 3); - } else { // numbers, capitals or unicode - $min_x = $font_size + ($this->iscale * 2); - $max_x = $font_size + ($this->iscale * 5); - } - - $x += rand($min_x, $max_x); - } //for loop - } // angled or multi-color - } //else ttf font - //$this->im = $this->tmpimg; - //$this->output(); - } //function - - /** - * Warp text from temporary image onto final image.
- * Modified for securimage - * - * @access private - * @since 2.0 - * @author Han-Kwang Nienhuys modified - * @copyright Han-Kwang Neinhuys - * - */ - function distortedCopy() - { - $numpoles = 3; // distortion factor - - // make array of poles AKA attractor points - for ($i = 0; $i < $numpoles; ++$i) { - $px[$i] = rand($this->image_width * 0.3, $this->image_width * 0.7); - $py[$i] = rand($this->image_height * 0.3, $this->image_height * 0.7); - $rad[$i] = rand($this->image_width * 0.4, $this->image_width * 0.7); - $tmp = -$this->frand() * 0.15 - 0.15; - $amp[$i] = $this->perturbation * $tmp; - } - - $bgCol = imagecolorat($this->tmpimg, 0, 0); - $width2 = $this->iscale * $this->image_width; - $height2 = $this->iscale * $this->image_height; - - imagepalettecopy($this->im, $this->tmpimg); // copy palette to final image so text colors come across - - // loop over $img pixels, take pixels from $tmpimg with distortion field - for ($ix = 0; $ix < $this->image_width; ++$ix) { - for ($iy = 0; $iy < $this->image_height; ++$iy) { - $x = $ix; - $y = $iy; - - for ($i = 0; $i < $numpoles; ++$i) { - $dx = $ix - $px[$i]; - $dy = $iy - $py[$i]; - if ($dx == 0 && $dy == 0) continue; - - $r = sqrt($dx * $dx + $dy * $dy); - if ($r > $rad[$i]) continue; - - $rscale = $amp[$i] * sin(3.14 * $r / $rad[$i]); - $x += $dx * $rscale; - $y += $dy * $rscale; - } - - $c = $bgCol; - $x *= $this->iscale; - $y *= $this->iscale; - - if ($x >= 0 && $x < $width2 && $y >= 0 && $y < $height2) { - $c = imagecolorat($this->tmpimg, $x, $y); - } - - if ($c != $bgCol) { // only copy pixels of letters to preserve any background image - imagesetpixel($this->im, $ix, $iy, $c); - } - } - } - } - - /** - * Create a code and save to the session - * - * @access private - * @since 1.0.1 - * - */ - function createCode() - { - $this->code = false; - - if ($this->use_wordlist && is_readable($this->wordlist_file)) { - $this->code = $this->readCodeFromFile(); - } - - if ($this->code == false) { - $this->code = $this->generateCode($this->code_length); - } - - $this->saveData(); - } - - /** - * Generate a code - * - * @access private - * @param int $len The code length - * @return string - */ - function generateCode($len) - { - $code = ''; - - for($i = 1, $cslen = strlen($this->charset); $i <= $len; ++$i) { - $code .= $this->charset{rand(0, $cslen - 1)}; - } - return $code; - } - - /** - * Reads a word list file to get a code - * - * @access private - * @since 1.0.2 - * @return mixed false on failure, a word on success - */ - function readCodeFromFile() - { - $fp = @fopen($this->wordlist_file, 'rb'); - if (!$fp) return false; - - $fsize = filesize($this->wordlist_file); - if ($fsize < 32) return false; // too small of a list to be effective - - if ($fsize < 128) { - $max = $fsize; // still pretty small but changes the range of seeking - } else { - $max = 128; - } - - fseek($fp, rand(0, $fsize - $max), SEEK_SET); - $data = fread($fp, 128); // read a random 128 bytes from file - fclose($fp); - $data = preg_replace("/\r?\n/", "\n", $data); - - $start = strpos($data, "\n", rand(0, 100)) + 1; // random start position - $end = strpos($data, "\n", $start); // find end of word - - return strtolower(substr($data, $start, $end - $start)); // return substring in 128 bytes - } - - /** - * Output image to the browser - * - * @access private - * - */ - function output() - { - header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); - header("Cache-Control: no-store, no-cache, must-revalidate"); - header("Cache-Control: post-check=0, pre-check=0", false); - header("Pragma: no-cache"); - - switch($this->image_type) - { - case SI_IMAGE_JPEG: - header("Content-Type: image/jpeg"); - imagejpeg($this->im, null, 90); - break; - - case SI_IMAGE_GIF: - header("Content-Type: image/gif"); - imagegif($this->im); - break; - - default: - header("Content-Type: image/png"); - imagepng($this->im); - break; - } - - imagedestroy($this->im); - exit; - } - - /** - * Get WAV or MP3 file data of the spoken code.
- * This is appropriate for output to the browser as audio/x-wav or audio/mpeg - * - * @since 1.0.1 - * @return string WAV or MP3 data - * - */ - function getAudibleCode($format = 'wav') - { - $letters = array(); - $code = $this->getCode(); - - if ($code == '') { - $this->createCode(); - $code = $this->getCode(); - } - - for($i = 0; $i < strlen($code); ++$i) { - $letters[] = $code{$i}; - } - - if ($format == 'mp3') { - return $this->generateMP3($letters); - } else { - return $this->generateWAV($letters); - } - } - - /** - * Set the path to the audio directory.
- * - * @since 1.0.4 - * @return bool true if the directory exists and is readble, false if not - */ - function setAudioPath($audio_directory) - { - if (is_dir($audio_directory) && is_readable($audio_directory)) { - $this->audio_path = $audio_directory; - return true; - } else { - return false; - } - } - - /** - * Save the code in the session - * - * @access private - * - */ - function saveData() - { - $_SESSION['securimage_code_value'] = strtolower($this->code); - $_SESSION['securimage_code_ctime'] = time(); - - $this->saveCodeToDatabase(); - } - - /** - * Validate the code to the user code - * - * @access private - * - */ - function validate() - { - // retrieve code from session, if no code exists check sqlite database if supported. - - if (isset($_SESSION['securimage_code_value']) && trim($_SESSION['securimage_code_value']) != '') { - if ($this->isCodeExpired($_SESSION['securimage_code_ctime']) == false) { - $code = $_SESSION['securimage_code_value']; - } - } else if ($this->use_sqlite_db == true && function_exists('sqlite_open')) { // no code in session - may mean user has cookies turned off - $this->openDatabase(); - $code = $this->getCodeFromDatabase(); - } else { - // session code invalid or non-existant and code not found in sqlite db or sqlite is not available - $code = ''; - } - - $code = trim(strtolower($code)); - $code_entered = trim(strtolower($this->code_entered)); - $this->correct_code = false; - - if ($code != '') { - if ($code == $code_entered) { - $this->correct_code = true; - $_SESSION['securimage_code_value'] = ''; - $_SESSION['securimage_code_ctime'] = ''; - $this->clearCodeFromDatabase(); - } - } - } - - /** - * Get the captcha code - * - * @since 1.0.1 - * @return string - */ - function getCode() - { - if (isset($_SESSION['securimage_code_value']) && !empty($_SESSION['securimage_code_value'])) { - return strtolower($_SESSION['securimage_code_value']); - } else { - if ($this->sqlite_handle == false) $this->openDatabase(); - - return $this->getCodeFromDatabase(); // attempt to get from database, returns empty string if sqlite is not available or disabled - } - } - - /** - * Check if the user entered code was correct - * - * @access private - * @return boolean - */ - function checkCode() - { - return $this->correct_code; - } - - /** - * Generate a wav file by concatenating individual files - * - * @since 1.0.1 - * @access private - * @param array $letters Array of letters to build a file from - * @return string WAV file data - */ - function generateWAV($letters) - { - $data_len = 0; - $files = array(); - $out_data = ''; - - foreach ($letters as $letter) { - $filename = $this->audio_path . strtoupper($letter) . '.wav'; - - $fp = fopen($filename, 'rb'); - - $file = array(); - - $data = fread($fp, filesize($filename)); // read file in - - $header = substr($data, 0, 36); - $body = substr($data, 44); - - - $data = unpack('NChunkID/VChunkSize/NFormat/NSubChunk1ID/VSubChunk1Size/vAudioFormat/vNumChannels/VSampleRate/VByteRate/vBlockAlign/vBitsPerSample', $header); - - $file['sub_chunk1_id'] = $data['SubChunk1ID']; - $file['bits_per_sample'] = $data['BitsPerSample']; - $file['channels'] = $data['NumChannels']; - $file['format'] = $data['AudioFormat']; - $file['sample_rate'] = $data['SampleRate']; - $file['size'] = $data['ChunkSize'] + 8; - $file['data'] = $body; - - if ( ($p = strpos($file['data'], 'LIST')) !== false) { - // If the LIST data is not at the end of the file, this will probably break your sound file - $info = substr($file['data'], $p + 4, 8); - $data = unpack('Vlength/Vjunk', $info); - $file['data'] = substr($file['data'], 0, $p); - $file['size'] = $file['size'] - (strlen($file['data']) - $p); - } - - $files[] = $file; - $data = null; - $header = null; - $body = null; - - $data_len += strlen($file['data']); - - fclose($fp); - } - - $out_data = ''; - for($i = 0; $i < sizeof($files); ++$i) { - if ($i == 0) { // output header - $out_data .= pack('C4VC8', ord('R'), ord('I'), ord('F'), ord('F'), $data_len + 36, ord('W'), ord('A'), ord('V'), ord('E'), ord('f'), ord('m'), ord('t'), ord(' ')); - - $out_data .= pack('VvvVVvv', - 16, - $files[$i]['format'], - $files[$i]['channels'], - $files[$i]['sample_rate'], - $files[$i]['sample_rate'] * (($files[$i]['bits_per_sample'] * $files[$i]['channels']) / 8), - ($files[$i]['bits_per_sample'] * $files[$i]['channels']) / 8, - $files[$i]['bits_per_sample'] ); - - $out_data .= pack('C4', ord('d'), ord('a'), ord('t'), ord('a')); - - $out_data .= pack('V', $data_len); - } - - $out_data .= $files[$i]['data']; - } - - $this->scrambleAudioData($out_data, 'wav'); - return $out_data; - } - - /** - * Randomly modify the audio data to scramble sound and prevent binary recognition.
- * Take care not to "break" the audio file by leaving the header data intact. - * - * @since 2.0 - * @access private - * @param $data Sound data in mp3 of wav format - */ - function scrambleAudioData(&$data, $format) - { - if ($format == 'wav') { - $start = strpos($data, 'data') + 4; // look for "data" indicator - if ($start === false) $start = 44; // if not found assume 44 byte header - } else { // mp3 - $start = 4; // 4 byte (32 bit) frame header - } - - $start += rand(1, 64); // randomize starting offset - $datalen = strlen($data) - $start - 256; // leave last 256 bytes unchanged - - for ($i = $start; $i < $datalen; $i += 64) { - $ch = ord($data{$i}); - if ($ch < 9 || $ch > 119) continue; - - $data{$i} = chr($ch + rand(-8, 8)); - } - } - - /** - * Generate an mp3 file by concatenating individual files - * @since 1.0.4 - * @access private - * @param array $letters Array of letters to build a file from - * @return string MP3 file data - */ - function generateMP3($letters) - { - $data_len = 0; - $files = array(); - $out_data = ''; - - foreach ($letters as $letter) { - $filename = $this->audio_path . strtoupper($letter) . '.mp3'; - - $fp = fopen($filename, 'rb'); - $data = fread($fp, filesize($filename)); // read file in - - $this->scrambleAudioData($data, 'mp3'); - $out_data .= $data; - - fclose($fp); - } - - - return $out_data; - } - - /** - * Generate random number less than 1 - * @since 2.0 - * @access private - * @return float - */ - function frand() - { - return 0.0001*rand(0,9999); - } - - /** - * Print signature text on image - * - * @since 2.0 - * @access private - * - */ - function addSignature() - { - if ($this->use_gd_font) { - imagestring($this->im, 5, $this->image_width - (strlen($this->image_signature) * 10), $this->image_height - 20, $this->image_signature, $this->gdsignaturecolor); - } else { - - $bbox = imagettfbbox(10, 0, $this->signature_font, $this->image_signature); - $textlen = $bbox[2] - $bbox[0]; - $x = $this->image_width - $textlen - 5; - $y = $this->image_height - 3; - - imagettftext($this->im, 10, 0, $x, $y, $this->gdsignaturecolor, $this->signature_font, $this->image_signature); - } - } - - /** - * Get hashed IP address of remote user - * - * @access private - * @since 2.0.1 - * @return string - */ - function getIPHash() - { - return strtolower(md5($_SERVER['REMOTE_ADDR'])); - } - - /** - * Open SQLite database - * - * @access private - * @since 2.0.1 - * @return bool true if database was opened successfully - */ - function openDatabase() - { - $this->sqlite_handle = false; - - if ($this->use_sqlite_db && function_exists('sqlite_open')) { - $this->sqlite_handle = sqlite_open($this->sqlite_database, 0666, $error); - - if ($this->sqlite_handle !== false) { - $res = sqlite_query($this->sqlite_handle, "PRAGMA table_info(codes)"); - if (sqlite_num_rows($res) == 0) { - sqlite_query($this->sqlite_handle, "CREATE TABLE codes (iphash VARCHAR(32) PRIMARY KEY, code VARCHAR(32) NOT NULL, created INTEGER)"); - } - } - - return $this->sqlite_handle != false; - } - - return $this->sqlite_handle; - } - - /** - * Save captcha code to sqlite database - * - * @access private - * @since 2.0.1 - * @return bool true if code was saved, false if not - */ - function saveCodeToDatabase() - { - $success = false; - - $this->openDatabase(); - - if ($this->use_sqlite_db && $this->sqlite_handle !== false) { - $ip = $this->getIPHash(); - $time = time(); - $code = $_SESSION['securimage_code_value']; // hash code for security - if cookies are disabled the session still exists at this point - $success = sqlite_query($this->sqlite_handle, "INSERT OR REPLACE INTO codes(iphash, code, created) VALUES('$ip', '$code', $time)"); - } - - return $success !== false; - } - - /** - * Get stored captcha code from sqlite database based on ip address hash - * - * @access private - * @since 2.0.1 - * @return string captcha code - */ - function getCodeFromDatabase() - { - $code = ''; - - if ($this->use_sqlite_db && $this->sqlite_handle !== false) { - $ip = $this->getIPHash(); - - $res = sqlite_query($this->sqlite_handle, "SELECT * FROM codes WHERE iphash = '$ip'"); - if ($res && sqlite_num_rows($res) > 0) { - $res = sqlite_fetch_array($res); - - if ($this->isCodeExpired($res['created']) == false) { - $code = $res['code']; - } - } - } - - return $code; - } - - /** - * Delete a code from the database by ip address hash - * - * @access private - * @since 2.0.1 - */ - function clearCodeFromDatabase() - { - if ($this->sqlite_handle !== false) { - $ip = $this->getIPHash(); - - sqlite_query($this->sqlite_handle, "DELETE FROM codes WHERE iphash = '$ip'"); - } - } - - /** - * Purge codes over a day old from database - * - * @access private - * @since 2.0.1 - */ - function purgeOldCodesFromDatabase() - { - if ($this->use_sqlite_db && $this->sqlite_handle !== false) { - $now = time(); - $limit = (!is_numeric($this->expiry_time) || $this->expiry_time < 1) ? 86400 : $this->expiry_time; - - sqlite_query($this->sqlite_handle, "DELETE FROM codes WHERE $now - created > $limit"); - } - } - - /** - * Check a code to see if it is expired based on creation time - * - * @access private - * @since 2.0.1 - * @param $creation_time unix timestamp of code creation time - * @return bool true if code has expired, false if not - */ - function isCodeExpired($creation_time) - { - $expired = true; - - if (!is_numeric($this->expiry_time) || $this->expiry_time < 1) { - $expired = false; - } else if (time() - $creation_time < $this->expiry_time) { - $expired = false; - } - - return $expired; - } - -} /* class Securimage */ - - -/** - * Color object for Securimage CAPTCHA - * - * @since 2.0 - * @package Securimage - * @subpackage classes - * - */ -class Securimage_Color { - /** - * Red component: 0-255 - * - * @var int - */ - var $r; - /** - * Green component: 0-255 - * - * @var int - */ - var $g; - /** - * Blue component: 0-255 - * - * @var int - */ - var $b; - - /** - * Create a new Securimage_Color object.
- * Specify the red, green, and blue components using their HTML hex code equivalent.
- * Example: The code for the HTML color #4A203C is:
- * $color = new Securimage_Color(0x4A, 0x20, 0x3C); - * - * @param $red Red component 0-255 - * @param $green Green component 0-255 - * @param $blue Blue component 0-255 - */ - function Securimage_Color($red, $green = null, $blue = null) - { - if ($green == null && $blue == null && preg_match('/^#[a-f0-9]{3,6}$/i', $red)) { - $col = substr($red, 1); - if (strlen($col) == 3) { - $red = str_repeat(substr($col, 0, 1), 2); - $green = str_repeat(substr($col, 1, 1), 2); - $blue = str_repeat(substr($col, 2, 1), 2); - } else { - $red = substr($col, 0, 2); - $green = substr($col, 2, 2); - $blue = substr($col, 4, 2); - } - - $red = hexdec($red); - $green = hexdec($green); - $blue = hexdec($blue); - } else { - if ($red < 0) $red = 0; - if ($red > 255) $red = 255; - if ($green < 0) $green = 0; - if ($green > 255) $green = 255; - if ($blue < 0) $blue = 0; - if ($blue > 255) $blue = 255; - } - - $this->r = $red; - $this->g = $green; - $this->b = $blue; - } -} diff --git a/includes/securimage/securimage_play.php b/includes/securimage/securimage_play.php deleted file mode 100644 index 1f369bc..0000000 --- a/includes/securimage/securimage_play.php +++ /dev/null @@ -1,43 +0,0 @@ - - * File: securimage_play.php
- * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version.

- * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details.

- * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

- * - * Any modifications to the library should be indicated clearly in the source code - * to inform users that the changes are not a part of the original software.

- * - * If you found this script useful, please take a quick moment to rate it.
- * http://www.hotscripts.com/rate/49400.html Thanks. - * - * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA - * @link http://www.phpcaptcha.org/latest.zip Download Latest Version - * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation - * @copyright 2009 Drew Phillips - * @author drew010 - * @version 2.0.1 BETA (December 6th, 2009) - * @package Securimage - * - */ - -include 'securimage.php'; - -$img = new Securimage(); -$img->audio_format = (isset($_GET['format']) && in_array(strtolower($_GET['format']), array('mp3', 'wav')) ? strtolower($_GET['format']) : 'mp3'); -//$img->setAudioPath('/path/to/securimage/audio/'); - -$img->outputAudioFile(); diff --git a/includes/securimage/securimage_play.swf b/includes/securimage/securimage_play.swf deleted file mode 100644 index d1718b7..0000000 Binary files a/includes/securimage/securimage_play.swf and /dev/null differ diff --git a/includes/securimage/securimage_show.php b/includes/securimage/securimage_show.php deleted file mode 100644 index 39a4957..0000000 --- a/includes/securimage/securimage_show.php +++ /dev/null @@ -1,55 +0,0 @@ - - * File: securimage_show.php
- * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version.

- * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details.

- * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

- * - * Any modifications to the library should be indicated clearly in the source code - * to inform users that the changes are not a part of the original software.

- * - * If you found this script useful, please take a quick moment to rate it.
- * http://www.hotscripts.com/rate/49400.html Thanks. - * - * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA - * @link http://www.phpcaptcha.org/latest.zip Download Latest Version - * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation - * @copyright 2009 Drew Phillips - * @author drew010 - * @version 2.0.1 BETA (December 6th, 2009) - * @package Securimage - * - */ - -include 'securimage.php'; - -$img = new securimage(); - -// Change some settings - -//$img->image_width = 275; -//$img->image_height = 90; -//$img->perturbation = 0.9; // 1.0 = high distortion, higher numbers = more distortion -//$img->image_bg_color = new Securimage_Color("#0099CC"); -//$img->text_color = new Securimage_Color("#EAEAEA"); -//$img->text_transparency_percentage = 65; // 100 = completely transparent -//$img->num_lines = 8; -//$img->line_color = new Securimage_Color("#0000CC"); -//$img->signature_color = new Securimage_Color(rand(0, 64), rand(64, 128), rand(128, 255)); -//$img->image_type = SI_IMAGE_PNG; - - -$img->show(); // alternate use: $img->show('/path/to/background_image.jpg'); diff --git a/includes/securimage/securimage_show_example.php b/includes/securimage/securimage_show_example.php deleted file mode 100644 index 1d34753..0000000 --- a/includes/securimage/securimage_show_example.php +++ /dev/null @@ -1,64 +0,0 @@ - - * File: securimage_show_example.php
- * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version.

- * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details.

- * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

- * - * Any modifications to the library should be indicated clearly in the source code - * to inform users that the changes are not a part of the original software.

- * - * If you found this script useful, please take a quick moment to rate it.
- * http://www.hotscripts.com/rate/49400.html Thanks. - * - * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA - * @link http://www.phpcaptcha.org/latest.zip Download Latest Version - * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation - * @copyright 2009 Drew Phillips - * @author Drew Phillips - * @version 2.0.1 BETA (December 6th, 2009) - * @package Securimage - * - */ - -include 'securimage.php'; - -$img = new securimage(); - -//Change some settings -$img->image_width = 250; -$img->image_height = 80; -$img->perturbation = 0.85; -$img->image_bg_color = new Securimage_Color("#f6f6f6"); -$img->multi_text_color = array(new Securimage_Color("#3399ff"), - new Securimage_Color("#3300cc"), - new Securimage_Color("#3333cc"), - new Securimage_Color("#6666ff"), - new Securimage_Color("#99cccc") - ); -$img->use_multi_text = true; -$img->text_angle_minimum = -5; -$img->text_angle_maximum = 5; -$img->use_transparent_text = true; -$img->text_transparency_percentage = 30; // 100 = completely transparent -$img->num_lines = 7; -$img->line_color = new Securimage_Color("#eaeaea"); -$img->image_signature = 'phpcaptcha.org'; -$img->signature_color = new Securimage_Color(rand(0, 64), rand(64, 128), rand(128, 255)); -$img->use_wordlist = true; - -$img->show('backgrounds/bg3.jpg'); // alternate use: $img->show('/path/to/background_image.jpg'); - diff --git a/includes/securimage/securimage_show_example2.php b/includes/securimage/securimage_show_example2.php deleted file mode 100644 index 941379b..0000000 --- a/includes/securimage/securimage_show_example2.php +++ /dev/null @@ -1,55 +0,0 @@ - - * File: securimage_show_example2.php
- * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version.

- * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details.

- * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

- * - * Any modifications to the library should be indicated clearly in the source code - * to inform users that the changes are not a part of the original software.

- * - * If you found this script useful, please take a quick moment to rate it.
- * http://www.hotscripts.com/rate/49400.html Thanks. - * - * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA - * @link http://www.phpcaptcha.org/latest.zip Download Latest Version - * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation - * @copyright 2009 Drew Phillips - * @author Drew Phillips - * @version 2.0.1 BETA (December 6th, 2009) - * @package Securimage - * - */ - -include 'securimage.php'; - -$img = new securimage(); - -//Change some settings -$img->image_width = 280; -$img->image_height = 100; -$img->perturbation = 0.9; -$img->code_length = rand(5,6); -$img->image_bg_color = new Securimage_Color("#ffffff"); -$img->use_transparent_text = true; -$img->text_transparency_percentage = 75; // 100 = completely transparent -$img->num_lines = 15; -$img->image_signature = ''; -$img->text_color = new Securimage_Color("#000000"); -$img->line_color = new Securimage_Color("#cccccc"); - -$img->show(''); // alternate use: $img->show('/path/to/background_image.jpg'); - diff --git a/includes/securimage/words/words.txt b/includes/securimage/words/words.txt deleted file mode 100644 index eaeb84a..0000000 --- a/includes/securimage/words/words.txt +++ /dev/null @@ -1,15621 +0,0 @@ -aahing -aaliis -aarrgh -abacas -abacus -abakas -abamps -abased -abaser -abases -abasia -abated -abater -abates -abatis -abator -abayas -abbacy -abbess -abbeys -abbots -abduce -abduct -abeles -abelia -abhors -abided -abider -abides -abject -abjure -ablate -ablaut -ablaze -ablest -ablins -abloom -ablush -abmhos -aboard -aboded -abodes -abohms -abolla -abomas -aboral -aborts -abound -aboves -abrade -abroad -abrupt -abseil -absent -absorb -absurd -abulia -abulic -abvolt -abwatt -abying -abysms -acacia -acajou -acarid -acarus -accede -accent -accept -access -accord -accost -accrue -accuse -acedia -acetal -acetic -acetin -acetum -acetyl -achene -achier -aching -acidic -acidly -acinar -acinic -acinus -ackees -acnode -acorns -acquit -across -acting -actins -action -active -actors -actual -acuate -acuity -aculei -acumen -acuter -acutes -adages -adagio -adapts -addend -adders -addict -adding -addled -addles -adduce -adduct -adeems -adenyl -adepts -adhere -adieus -adieux -adipic -adjoin -adjure -adjust -admass -admire -admits -admixt -adnate -adnexa -adnoun -adobes -adobos -adonis -adopts -adored -adorer -adores -adorns -adrift -adroit -adsorb -adults -advect -advent -adverb -advert -advice -advise -adytum -adzing -adzuki -aecial -aecium -aedile -aedine -aeneus -aeonic -aerate -aerial -aeried -aerier -aeries -aerify -aerily -aerobe -aerugo -aether -afeard -affair -affect -affine -affirm -afflux -afford -affray -afghan -afield -aflame -afloat -afraid -afreet -afresh -afrits -afters -aftosa -agamas -agamic -agamid -agapae -agapai -agapes -agaric -agates -agaves -agedly -ageing -ageism -ageist -agency -agenda -agenes -agents -aggada -aggers -aggies -aggros -aghast -agings -agisms -agists -agitas -aglare -agleam -aglets -agnail -agnate -agnize -agonal -agones -agonic -agorae -agoras -agorot -agouti -agouty -agrafe -agreed -agrees -agrias -aguish -ahchoo -ahimsa -aholds -ahorse -aiders -aidful -aiding -aidman -aidmen -aiglet -aigret -aikido -ailing -aimers -aimful -aiming -aiolis -airbag -airbus -airers -airest -airier -airily -airing -airman -airmen -airted -airths -airway -aisled -aisles -aivers -ajivas -ajowan -ajugas -akelas -akenes -akimbo -alamos -alands -alanin -alants -alanyl -alarms -alarum -alaska -alated -alates -albata -albedo -albeit -albino -albite -albums -alcade -alcaic -alcids -alcove -alders -aldols -aldose -aldrin -alegar -alephs -alerts -alevin -alexia -alexin -alfaki -algins -algoid -algors -algums -alibis -alible -alidad -aliens -alight -aligns -alined -aliner -alines -aliped -aliyah -aliyas -aliyos -aliyot -alkali -alkane -alkene -alkies -alkine -alkoxy -alkyds -alkyls -alkyne -allays -allees -allege -allele -alleys -allied -allies -allium -allods -allots -allows -alloys -allude -allure -allyls -almahs -almehs -almner -almond -almost -almuce -almude -almuds -almugs -alnico -alodia -alohas -aloins -alpaca -alphas -alphyl -alpine -alsike -altars -alters -althea -aludel -alulae -alular -alumin -alumna -alumni -alvine -always -amadou -amarna -amatol -amazed -amazes -amazon -ambage -ambari -ambary -ambeer -ambers -ambery -ambits -ambled -ambler -ambles -ambush -amebae -ameban -amebas -amebic -ameers -amends -aments -amerce -amices -amicus -amides -amidic -amidin -amidol -amidst -amigas -amigos -amines -aminic -ammine -ammino -ammono -amnion -amnios -amoeba -amoles -amoral -amount -amours -ampere -amping -ampler -ampule -ampuls -amrita -amtrac -amucks -amulet -amused -amuser -amuses -amusia -amylic -amylum -anabas -anadem -analog -ananke -anarch -anatto -anchor -anchos -ancone -andros -anears -aneled -aneles -anemia -anemic -anenst -anergy -angary -angels -angers -angina -angled -angler -angles -anglos -angora -angsts -anilin -animal -animas -animes -animis -animus -anions -anises -anisic -ankled -ankles -anklet -ankush -anlace -anlage -annals -anneal -annexe -annona -annoys -annual -annuli -annuls -anodal -anodes -anodic -anoint -anoles -anomic -anomie -anonym -anopia -anorak -anoxia -anoxic -ansate -answer -anteed -anthem -anther -antiar -antick -antics -anting -antler -antral -antres -antrum -anural -anuran -anuria -anuric -anuses -anvils -anyhow -anyone -anyons -anyway -aorist -aortae -aortal -aortas -aortic -aoudad -apache -apathy -apercu -apexes -aphids -aphtha -apiary -apical -apices -apiece -aplite -aplomb -apneal -apneas -apneic -apnoea -apodal -apogee -apollo -apolog -aporia -appall -appals -appeal -appear -appels -append -apples -applet -appose -aprons -aptest -arabic -arable -arames -aramid -arbors -arbour -arbute -arcade -arcana -arcane -arched -archer -arches -archil -archly -archon -arcing -arcked -arctic -ardebs -ardent -ardors -ardour -arecas -arenas -arenes -areola -areole -arepas -aretes -argala -argali -argals -argent -argils -argled -argles -argols -argons -argosy -argots -argued -arguer -argues -argufy -argyle -argyll -arhats -ariary -arider -aridly -ariels -aright -ariled -ariose -ariosi -arioso -arisen -arises -arista -aristo -arkose -armada -armers -armets -armful -armies -arming -armlet -armors -armory -armour -armpit -armure -arnica -aroids -aroint -aromas -around -arouse -aroynt -arpens -arpent -arrack -arrant -arrays -arrear -arrest -arriba -arrive -arroba -arrows -arrowy -arroyo -arseno -arshin -arsine -arsino -arsons -artels -artery -artful -artier -artily -artist -asanas -asarum -ascend -ascent -ascots -asdics -ashcan -ashier -ashing -ashlar -ashler -ashman -ashmen -ashore -ashram -asides -askant -askers -asking -aslant -asleep -aslope -aslosh -aspect -aspens -aspers -aspics -aspire -aspish -asrama -assail -assais -assays -assent -assert -assess -assets -assign -assist -assize -assoil -assort -assume -assure -astern -asters -asthma -astony -astral -astray -astute -aswarm -aswirl -aswoon -asylum -atabal -ataman -atavic -ataxia -ataxic -atelic -atlatl -atmans -atolls -atomic -atonal -atoned -atoner -atones -atonia -atonic -atopic -atrial -atrium -attach -attack -attain -attars -attend -attent -attest -attics -attire -attorn -attrit -attune -atwain -atween -atypic -aubade -auburn -aucuba -audads -audial -audile -auding -audios -audits -augend -augers -aughts -augite -augurs -augury -august -auklet -aulder -auntie -auntly -aurate -aureus -aurist -aurora -aurous -aurums -auspex -ausubo -auteur -author -autism -autist -autoed -autumn -auxins -avails -avatar -avaunt -avenge -avenue -averse -averts -avians -aviary -aviate -avidin -avidly -avions -avisos -avocet -avoids -avoset -avouch -avowal -avowed -avower -avulse -awaits -awaked -awaken -awakes -awards -aweary -aweigh -aweing -awhile -awhirl -awless -awmous -awning -awoken -axeman -axemen -axenic -axilla -axioms -axions -axised -axises -axites -axlike -axonal -axones -axonic -axseed -azalea -azides -azines -azlons -azoles -azonal -azonic -azoted -azotes -azoths -azotic -azukis -azures -azygos -baaing -baalim -baases -babble -babels -babied -babier -babies -babkas -babool -baboon -baboos -babuls -baccae -bached -baches -backed -backer -backup -bacons -bacula -badass -badder -baddie -badged -badger -badges -badman -badmen -baffed -baffle -bagels -bagful -bagged -bagger -baggie -bagman -bagmen -bagnio -baguet -bagwig -bailed -bailee -bailer -bailey -bailie -bailor -bairns -baited -baiter -baizas -baizes -bakers -bakery -baking -balata -balboa -balded -balder -baldly -baleen -balers -baling -balked -balker -ballad -balled -baller -ballet -ballon -ballot -ballsy -balsam -balsas -bamboo -bammed -banana -bancos -bandas -banded -bander -bandit -bandog -banged -banger -bangle -banian -baning -banish -banjax -banjos -banked -banker -bankit -banned -banner -bannet -bantam -banter -banyan -banzai -baobab -barbal -barbed -barbel -barber -barbes -barbet -barbie -barbut -barcas -barded -bardes -bardic -barege -barely -barest -barfed -barfly -barged -bargee -barges -barhop -baring -barite -barium -barked -barker -barley -barlow -barman -barmen -barmie -barned -barney -barong -barons -barony -barque -barred -barrel -barren -barres -barret -barrio -barrow -barter -baryes -baryon -baryta -baryte -basalt -basely -basest -bashaw -bashed -basher -bashes -basics -basify -basils -basing -basins -basion -basked -basket -basque -basted -baster -bastes -batboy -bateau -bathed -bather -bathes -bathos -batiks -bating -batman -batmen -batons -batted -batten -batter -battik -battle -battue -baubee -bauble -baulks -baulky -bawbee -bawdry -bawled -bawler -bawtie -bayamo -bayard -baying -bayman -baymen -bayous -bazaar -bazars -bazoos -beachy -beacon -beaded -beader -beadle -beagle -beaked -beaker -beamed -beaned -beanie -beanos -beards -bearer -beaten -beater -beauts -beauty -bebops -becalm -became -becaps -becked -becket -beckon -beclog -become -bedamn -bedaub -bedbug -bedded -bedder -bedeck -bedell -bedels -bedews -bedims -bedlam -bedpan -bedrid -bedrug -bedsit -beduin -bedumb -beebee -beechy -beefed -beeped -beeper -beetle -beeves -beezer -befall -befell -befits -beflag -beflea -befogs -befool -before -befoul -befret -begall -begaze -begets -beggar -begged -begins -begird -begirt -beglad -begone -begrim -begulf -begums -behalf -behave -behead -beheld -behest -behind -behold -behoof -behove -behowl -beiges -beigne -beings -bekiss -beknot -belady -belaud -belays -beldam -beleap -belfry -belgas -belied -belief -belier -belies -belike -belive -belled -belles -bellow -belong -belons -belows -belted -belter -beluga -bemata -bemean -bemire -bemist -bemixt -bemoan -bemock -bemuse -bename -benday -bended -bendee -bender -bendys -benign -bennes -bennet -bennis -bentos -benumb -benzal -benzin -benzol -benzyl -berake -berate -bereft -berets -berime -berlin -bermed -bermes -bertha -berths -beryls -beseem -besets -beside -besmut -besnow -besoms -besots -bested -bestir -bestow -bestud -betake -betels -bethel -betide -betime -betise -betons -betony -betook -betray -bettas -betted -better -bettor -bevels -bevies -bevors -bewail -beware -beweep -bewept -bewigs -beworm -bewrap -bewray -beylic -beylik -beyond -bezant -bezazz -bezels -bezils -bezoar -bhakta -bhakti -bhangs -bharal -bhoots -bialis -bialys -biased -biases -biaxal -bibbed -bibber -bibles -bicarb -biceps -bicker -bicorn -bicron -bidden -bidder -biders -bidets -biding -bields -biface -biffed -biffin -biflex -bifold -biform -bigamy -bigeye -bigger -biggie -biggin -bights -bigots -bigwig -bijous -bijoux -bikers -bikies -biking -bikini -bilboa -bilbos -bilged -bilges -bilked -bilker -billed -biller -billet -billie -billon -billow -bimahs -bimbos -binary -binate -binder -bindis -bindle -biners -binged -binger -binges -bingos -binits -binned -binocs -biogas -biogen -biomes -bionic -bionts -biopic -biopsy -biotas -biotic -biotin -bipack -bipeds -bipods -birded -birder -birdie -bireme -birkie -birled -birler -birles -birred -birses -births -bisect -bishop -bisons -bisque -bister -bistre -bistro -bitchy -biters -biting -bitmap -bitted -bitten -bitter -bizone -bizzes -blabby -blacks -bladed -blader -blades -blaffs -blains -blamed -blamer -blames -blanch -blanks -blared -blares -blasts -blasty -blawed -blazed -blazer -blazes -blazon -bleach -bleaks -blears -bleary -bleats -blebby -bleeds -bleeps -blench -blende -blends -blenny -blight -blimey -blimps -blinds -blinis -blinks -blintz -blites -blithe -bloats -blocks -blocky -blokes -blonde -blonds -bloods -bloody -blooey -blooie -blooms -bloomy -bloops -blotch -blotto -blotty -blouse -blousy -blowby -blowed -blower -blowsy -blowup -blowzy -bludge -bluely -bluest -bluesy -bluets -blueys -bluffs -bluing -bluish -blumed -blumes -blunge -blunts -blurbs -blurry -blurts -blypes -boards -boarts -boasts -boated -boatel -boater -bobbed -bobber -bobbin -bobble -bobcat -bocces -boccia -boccie -boccis -boches -bodega -bodice -bodied -bodies -bodily -boding -bodkin -boffed -boffin -boffos -bogans -bogart -bogeys -bogged -boggle -bogies -bogles -boheas -bohunk -boiled -boiler -boings -boinks -boites -bolder -boldly -bolero -bolete -boleti -bolide -bolled -bollix -bollox -bolshy -bolson -bolted -bolter -bombax -bombed -bomber -bombes -bombyx -bonaci -bonbon -bonded -bonder -bonduc -boners -bonged -bongos -bonier -boning -bonita -bonito -bonked -bonnes -bonnet -bonnie -bonobo -bonsai -bonzer -bonzes -boobed -boobie -booboo -boocoo -boodle -booger -boogey -boogie -boohoo -booing -boojum -booked -booker -bookie -bookoo -boomed -boomer -boosts -booted -bootee -booths -bootie -boozed -boozer -boozes -bopeep -bopped -bopper -borage -borals -borane -borate -bordel -border -boreal -boreas -boreen -borers -boride -boring -borked -borons -borrow -borsch -borsht -borzoi -boshes -bosker -bosket -bosoms -bosomy -bosons -bosque -bossed -bosses -boston -bosuns -botany -botchy -botels -botfly -bother -bottle -bottom -boubou -boucle -boudin -bouffe -boughs -bought -bougie -boules -boulle -bounce -bouncy -bounds -bounty -bourgs -bourne -bourns -bourse -boused -bouses -bouton -bovids -bovine -bowers -bowery -bowfin -bowing -bowled -bowleg -bowler -bowman -bowmen -bowpot -bowsed -bowses -bowwow -bowyer -boxcar -boxers -boxful -boxier -boxily -boxing -boyard -boyars -boyish -boylas -braced -bracer -braces -brachs -bracts -braggy -brahma -braids -brails -brains -brainy -braise -braize -braked -brakes -branch -brands -brandy -branks -branny -brants -brashy -brasil -brassy -bratty -bravas -braved -braver -braves -bravos -brawer -brawls -brawly -brawns -brawny -brayed -brayer -brazas -brazed -brazen -brazer -brazes -brazil -breach -breads -bready -breaks -breams -breath -bredes -breech -breeds -breeks -breeze -breezy -bregma -brents -breves -brevet -brewed -brewer -brewis -briard -briars -briary -bribed -bribee -briber -bribes -bricks -bricky -bridal -brides -bridge -bridle -briefs -briers -briery -bright -brillo -brills -brined -briner -brines -brings -brinks -briony -brises -brisks -briths -britts -broach -broads -broche -brocks -brogan -brogue -broils -broken -broker -brolly -bromal -bromes -bromic -bromid -bromin -bromos -bronco -broncs -bronze -bronzy -brooch -broods -broody -brooks -brooms -broomy -broses -broths -brothy -browed -browns -browny -browse -brucin -brughs -bruins -bruise -bruits -brulot -brumal -brumby -brumes -brunch -brunet -brunts -brushy -brutal -bruted -brutes -bruxed -bruxes -bryony -bubale -bubals -bubbas -bubble -bubbly -bubkes -buboed -buboes -buccal -bucked -bucker -bucket -buckle -buckos -buckra -budded -budder -buddha -buddle -budged -budger -budges -budget -budgie -buffed -buffer -buffet -buffos -bugeye -bugged -bugger -bugled -bugler -bugles -bugout -bugsha -builds -bulbar -bulbed -bulbel -bulbil -bulbul -bulged -bulger -bulges -bulgur -bulked -bullae -bulled -bullet -bumble -bumkin -bummed -bummer -bumped -bumper -bumphs -bunchy -buncos -bundle -bundts -bunged -bungee -bungle -bunion -bunked -bunker -bunkos -bunkum -bunted -bunter -bunyas -buoyed -bupkes -bupkus -buppie -buqsha -burans -burble -burbly -burbot -burden -burdie -bureau -burets -burgee -burger -burghs -burgle -burgoo -burial -buried -burier -buries -burins -burkas -burked -burker -burkes -burlap -burled -burler -burley -burned -burner -burnet -burnie -burped -burqas -burred -burrer -burros -burrow -bursae -bursal -bursar -bursas -burses -bursts -burton -busbar -busboy -bushed -bushel -busher -bushes -bushwa -busied -busier -busies -busily -busing -busked -busker -buskin -busman -busmen -bussed -busses -busted -buster -bustic -bustle -butane -butene -buteos -butled -butler -butles -butted -butter -buttes -button -bututs -butyls -buyers -buying -buyoff -buyout -buzuki -buzzed -buzzer -buzzes -bwanas -byelaw -bygone -bylaws -byline -byname -bypass -bypast -bypath -byplay -byrled -byrnie -byroad -byssal -byssus -bytalk -byways -byword -bywork -byzant -cabala -cabals -cabana -cabbed -cabbie -cabers -cabins -cabled -cabler -cables -cablet -cabman -cabmen -cabobs -cacaos -cached -caches -cachet -cachou -cackle -cactus -caddie -caddis -cadent -cadets -cadged -cadger -cadges -cadmic -cadres -caecal -caecum -caeoma -caesar -caftan -cagers -cagier -cagily -caging -cahier -cahoot -cahows -caiman -caique -cairds -cairns -cairny -cajole -cakier -caking -calami -calash -calcar -calces -calcic -calesa -calico -califs -caliph -calked -calker -calkin -callan -callas -called -callee -caller -callet -callow -callus -calmed -calmer -calmly -calory -calpac -calque -calved -calves -calxes -camail -camber -cambia -camels -cameos -camera -camion -camisa -camise -camlet -cammie -camped -camper -campos -campus -canals -canape -canard -canary -cancan -cancel -cancer -cancha -candid -candle -candor -caners -canful -cangue -canids -canine -caning -canker -cannas -canned -cannel -canner -cannie -cannon -cannot -canoed -canoer -canoes -canola -canons -canopy -cansos -cantal -canted -canter -canthi -cantic -cantle -canton -cantor -cantos -cantus -canula -canvas -canyon -capers -capful -capias -capita -caplet -caplin -capons -capote -capped -capper -capric -capris -capsid -captan -captor -carack -carafe -carate -carats -carbon -carbos -carboy -carcel -carded -carder -cardia -cardio -cardon -careen -career -carers -caress -carets -carful -cargos -carhop -caribe -caried -caries -carina -caring -carked -carles -carlin -carman -carmen -carnal -carnet -carney -carnie -carobs -caroch -caroli -carols -caroms -carpal -carped -carpel -carper -carpet -carpus -carrel -carrom -carrot -carses -carted -cartel -carter -cartes -carton -cartop -carved -carvel -carven -carver -carves -casaba -casava -casbah -casefy -caseic -casein -casern -cashaw -cashed -cashes -cashew -cashoo -casing -casini -casino -casita -casked -casket -casque -caster -castes -castle -castor -casual -catalo -catchy -catena -caters -catgut -cation -catkin -catlin -catnap -catnip -catsup -catted -cattie -cattle -caucus -caudad -caudal -caudex -caudle -caught -caulds -caules -caulis -caulks -causal -caused -causer -causes -causey -caveat -cavern -cavers -caviar -cavies -cavils -caving -cavity -cavort -cawing -cayman -cayuse -ceased -ceases -cebids -ceboid -cecity -cedarn -cedars -cedary -ceders -ceding -cedula -ceibas -ceiled -ceiler -ceilis -celebs -celery -celiac -cellae -cellar -celled -cellos -celoms -cement -cenote -censed -censer -censes -censor -census -centai -cental -centas -center -centos -centra -centre -centum -ceorls -cerate -cercal -cercis -cercus -cereal -cereus -cerias -cering -ceriph -cerise -cerite -cerium -cermet -cerous -certes -ceruse -cervid -cervix -cesium -cessed -cesses -cestas -cestoi -cestos -cestus -cesura -cetane -chabuk -chacma -chadar -chador -chadri -chaeta -chafed -chafer -chafes -chaffs -chaffy -chaine -chains -chairs -chaise -chakra -chalah -chaleh -chalet -chalks -chalky -challa -chally -chalot -chammy -champs -champy -chance -chancy -change -changs -chants -chanty -chapel -chapes -charas -chards -chared -chares -charge -charka -charks -charms -charro -charrs -charry -charts -chased -chaser -chases -chasms -chasmy -chasse -chaste -chatty -chaunt -chawed -chawer -chazan -cheapo -cheaps -cheats -chebec -checks -cheder -cheeks -cheeky -cheeps -cheero -cheers -cheery -cheese -cheesy -chefed -chegoe -chelae -chelas -chemic -chemos -cheque -cherry -cherts -cherty -cherub -chests -chesty -chetah -cheths -chevre -chewed -chewer -chiasm -chiaus -chicas -chicer -chichi -chicks -chicle -chicly -chicos -chided -chider -chides -chiefs -chield -chiels -chigoe -childe -chiles -chilis -chilli -chills -chilly -chimar -chimbs -chimed -chimer -chimes -chimla -chimps -chinas -chinch -chined -chines -chinks -chinky -chinos -chints -chintz -chippy -chiral -chirks -chirms -chiros -chirps -chirpy -chirre -chirrs -chirus -chisel -chital -chitin -chiton -chitty -chives -chivvy -choana -chocks -choice -choirs -choked -choker -chokes -chokey -cholas -choler -cholla -cholos -chomps -chooks -choose -choosy -chopin -choppy -choral -chords -chorea -chored -chores -choric -chorus -chosen -choses -chotts -chough -chouse -choush -chowed -chowse -chrism -chroma -chrome -chromo -chromy -chubby -chucks -chucky -chufas -chuffs -chuffy -chukar -chukka -chummy -chumps -chunks -chunky -chuppa -church -churls -churns -churro -churrs -chuted -chutes -chyles -chymes -chymic -cibols -cicada -cicala -cicale -cicely -cicero -ciders -cigars -cilice -cilium -cinder -cinema -cineol -cinque -cipher -circle -circus -cirque -cirrus -ciscos -cisted -cistus -citers -cither -citied -cities -citify -citing -citola -citole -citral -citric -citrin -citron -citrus -civets -civics -civies -civism -clachs -clacks -clades -claims -clammy -clamor -clamps -clangs -clanks -clanky -claque -claret -claros -clasps -claspt -classy -clasts -clause -claver -claves -clavus -clawed -clawer -claxon -clayed -clayey -cleans -clears -cleats -cleave -cleeks -clefts -clench -cleome -cleped -clepes -clergy -cleric -clerid -clerks -clever -clevis -clewed -cliche -clicks -client -cliffs -cliffy -clifts -climax -climbs -climes -clinal -clinch -clines -clings -clingy -clinic -clinks -clique -cliquy -clitic -clivia -cloaca -cloaks -cloche -clocks -cloddy -cloggy -clomps -clonal -cloned -cloner -clones -clonic -clonks -clonus -cloots -cloque -closed -closer -closes -closet -clothe -cloths -clotty -clouds -cloudy -clough -clours -clouts -cloven -clover -cloves -clowns -cloyed -clozes -clubby -clucks -cluing -clumps -clumpy -clumsy -clunks -clunky -clutch -clypei -cnidae -coacts -coalas -coaled -coaler -coapts -coarse -coasts -coated -coatee -coater -coatis -coaxal -coaxed -coaxer -coaxes -cobalt -cobber -cobble -cobias -cobles -cobnut -cobras -cobweb -cocain -coccal -coccic -coccid -coccus -coccyx -cochin -cocoas -cocoon -codded -codder -coddle -codecs -codeia -codens -coders -codify -coding -codlin -codons -coedit -coelom -coempt -coerce -coeval -coffee -coffer -coffin -coffle -cogent -cogged -cogito -cognac -cogons -cogway -cohead -coheir -cohere -cohogs -cohort -cohosh -cohost -cohune -coifed -coiffe -coigne -coigns -coiled -coiler -coined -coiner -coital -coitus -cojoin -coking -colbys -colder -coldly -colead -coleus -colics -colies -colins -collar -collet -collie -collop -colobi -cologs -colone -coloni -colons -colony -colors -colour -colter -colugo -column -colure -colzas -comade -comake -comate -combat -combed -comber -combes -combos -comedo -comedy -comely -comers -cometh -comets -comfit -comics -coming -comity -commas -commie -commit -commix -common -comose -comous -compas -comped -compel -comply -compos -compts -comtes -concha -concho -conchs -conchy -concur -condor -condos -coneys -confab -confer -confit -congas -congee -conger -conges -congii -congos -congou -conics -conies -conine -coning -conins -conium -conked -conker -conned -conner -conoid -consol -consul -contes -contos -contra -convex -convey -convoy -coocoo -cooeed -cooees -cooers -cooeys -cooing -cooked -cooker -cookey -cookie -cooled -cooler -coolie -coolly -coolth -coombe -coombs -cooped -cooper -coopts -cooter -cootie -copalm -copals -copays -copeck -copens -copers -copied -copier -copies -coping -coplot -copout -copped -copper -coppra -coprah -copras -copses -copter -copula -coquet -corals -corban -corbel -corbie -corded -corder -cordon -corers -corgis -coring -corium -corked -corker -cormel -cornea -corned -cornel -corner -cornet -cornua -cornus -corody -corona -corpse -corpus -corral -corrie -corsac -corses -corset -cortex -cortin -corvee -corves -corvet -corvid -corymb -coryza -cosecs -cosets -coseys -coshed -cosher -coshes -cosied -cosier -cosies -cosign -cosily -cosine -cosmic -cosmid -cosmos -cosset -costae -costal -costar -costed -coster -costly -cotans -coteau -coting -cottae -cottar -cottas -cotter -cotton -cotype -cougar -coughs -coulee -coulis -counts -county -couped -coupes -couple -coupon -course -courts -cousin -couter -couths -covary -covens -covers -covert -covets -coveys -coving -covins -cowage -coward -cowboy -cowers -cowier -cowing -cowled -cowman -cowmen -cowpat -cowpea -cowpie -cowpox -cowrie -coxing -coydog -coyest -coying -coyish -coyote -coypou -coypus -cozens -cozeys -cozied -cozier -cozies -cozily -cozzes -craals -crabby -cracks -cracky -cradle -crafts -crafty -craggy -crakes -crambe -crambo -cramps -crampy -cranch -craned -cranes -crania -cranks -cranky -cranny -crapes -crappy -crases -crasis -cratch -crated -crater -crates -craton -cravat -craved -craven -craver -craves -crawls -crawly -crayon -crazed -crazes -creaks -creaky -creams -creamy -crease -creasy -create -creche -credal -credit -credos -creeds -creeks -creels -creeps -creepy -creese -creesh -cremes -crenel -creole -creped -crepes -crepey -crepon -cresol -cressy -crests -cresyl -cretic -cretin -crewed -crewel -cricks -criers -crikey -crimes -crimps -crimpy -cringe -crinum -cripes -crises -crisic -crisis -crisps -crispy -crissa -crista -critic -croaks -croaky -crocks -crocus -crofts -crojik -crones -crooks -croons -crores -crosse -crotch -croton -crouch -croupe -croups -croupy -crouse -croute -crowds -crowdy -crowed -crower -crowns -crozer -crozes -cruces -crucks -cruddy -cruder -crudes -cruets -cruise -crumbs -crumby -crummy -crumps -crunch -cruors -crural -cruses -cruset -crusts -crusty -crutch -cruxes -crwths -crying -crypto -crypts -cuatro -cubage -cubebs -cubers -cubics -cubing -cubism -cubist -cubiti -cubits -cuboid -cuckoo -cuddie -cuddle -cuddly -cudgel -cueing -cuesta -cuffed -cuisse -culets -cullay -culled -culler -cullet -cullis -culmed -culpae -cultch -cultic -cultus -culver -cumber -cumbia -cumins -cummer -cummin -cumuli -cundum -cuneal -cunner -cupels -cupful -cupids -cupola -cuppas -cupped -cupper -cupric -cuprum -cupula -cupule -curacy -curagh -curara -curare -curari -curate -curbed -curber -curded -curdle -curers -curets -curfew -curiae -curial -curies -curing -curios -curite -curium -curled -curler -curlew -curran -curred -currie -cursed -curser -curses -cursor -curtal -curter -curtly -curtsy -curule -curved -curves -curvet -curvey -cuscus -cusecs -cushat -cushaw -cuspal -cusped -cuspid -cuspis -cussed -cusser -cusses -cussos -custom -custos -cutely -cutest -cutesy -cuteys -cuties -cutins -cutlas -cutler -cutlet -cutoff -cutout -cutter -cuttle -cutups -cuvees -cyanic -cyanid -cyanin -cyborg -cycads -cycled -cycler -cycles -cyclic -cyclin -cyclos -cyders -cyeses -cyesis -cygnet -cymars -cymbal -cymene -cymlin -cymoid -cymols -cymose -cymous -cynics -cypher -cypres -cyprus -cystic -cytons -dabbed -dabber -dabble -dachas -dacite -dacker -dacoit -dacron -dactyl -daddle -dadgum -dadoed -dadoes -daedal -daemon -daffed -dafter -daftly -daggas -dagger -daggle -dagoba -dagoes -dahlia -dahoon -daiker -daikon -daimen -daimio -daimon -daimyo -dainty -daises -dakoit -dalasi -daledh -daleth -dalles -dalton -damage -damans -damars -damask -dammar -dammed -dammer -dammit -damned -damner -damped -dampen -damper -damply -damsel -damson -danced -dancer -dances -dander -dandle -danged -danger -dangle -dangly -danios -danish -danker -dankly -daphne -dapped -dapper -dapple -darbar -darers -darics -daring -darked -darken -darker -darkey -darkie -darkle -darkly -darned -darnel -darner -darted -darter -dartle -dashed -dasher -dashes -dashis -dassie -datary -datcha -daters -dating -dative -dattos -datums -datura -daubed -dauber -daubes -daubry -daunts -dauted -dautie -davens -davies -davits -dawdle -dawing -dawned -dawted -dawtie -daybed -dayfly -daylit -dazing -dazzle -deacon -deaden -deader -deadly -deafen -deafer -deafly -deairs -dealer -deaned -dearer -dearie -dearly -dearth -deasil -deaths -deathy -deaved -deaves -debags -debark -debars -debase -debate -debeak -debits -debone -debris -debtor -debugs -debunk -debuts -debyes -decade -decafs -decals -decamp -decane -decant -decare -decays -deceit -decent -decern -decide -decile -decked -deckel -decker -deckle -declaw -decoct -decode -decors -decoys -decree -decury -dedans -deduce -deduct -deeded -deejay -deemed -deepen -deeper -deeply -deewan -deface -defame -defang -defats -defeat -defect -defend -defers -deffer -defied -defier -defies -defile -define -deflea -defoam -defogs -deform -defrag -defray -defter -deftly -defuel -defund -defuse -defuze -degage -degame -degami -degerm -degree -degums -degust -dehorn -dehort -deiced -deicer -deices -deific -deigns -deisms -deists -deixis -deject -dekare -deking -dekkos -delate -delays -delead -delete -delfts -delict -delime -delish -delist -deltas -deltic -delude -deluge -deluxe -delved -delver -delves -demand -demark -demast -demean -dement -demies -demise -demits -demobs -demode -demoed -demons -demote -demure -demurs -denari -denars -denary -dengue -denial -denied -denier -denies -denims -denned -denote -denser -dental -dented -dentil -dentin -denude -deodar -depart -depend -deperm -depict -deploy -depone -deport -depose -depots -depths -depute -deputy -derail -derate -derats -derays -deride -derive -dermal -dermas -dermic -dermis -derris -desalt -desand -descry -desert -design -desire -desist -desman -desmid -desorb -desoxy -despot -detach -detail -detain -detect -detent -deters -detest -detick -detour -deuced -deuces -devein -devels -devest -device -devils -devise -devoid -devoir -devons -devote -devour -devout -dewans -dewars -dewier -dewily -dewing -dewlap -dewool -deworm -dexies -dexter -dextro -dezinc -dharma -dharna -dhobis -dholes -dhooly -dhoora -dhooti -dhotis -dhurna -dhutis -diacid -diadem -dialed -dialer -dialog -diamin -diaper -diapir -diatom -diazin -dibbed -dibber -dibble -dibbuk -dicast -dicers -dicier -dicing -dicked -dicker -dickey -dickie -dicots -dictum -didact -diddle -diddly -didies -didoes -dieing -dienes -dieoff -diesel -dieses -diesis -dieted -dieter -differ -digamy -digest -digged -digger -dights -digits -diglot -dikdik -dikers -diking -diktat -dilate -dildoe -dildos -dilled -dilute -dimers -dimity -dimmed -dimmer -dimout -dimple -dimply -dimwit -dinars -dindle -dinero -diners -dinged -dinger -dinges -dingey -dinghy -dingle -dingus -dining -dinked -dinkey -dinkly -dinkum -dinned -dinner -dinted -diobol -diodes -dioecy -dioxan -dioxid -dioxin -diplex -diploe -dipnet -dipody -dipole -dipped -dipper -dipsas -dipsos -diquat -dirams -dirdum -direct -direly -direst -dirges -dirham -dirked -dirled -dirndl -disarm -disbar -disbud -disced -discos -discus -diseur -dished -dishes -disked -dismal -dismay -dismes -disown -dispel -dissed -disses -distal -distil -disuse -dither -dittos -ditzes -diuron -divans -divers -divert -divest -divide -divine -diving -divots -diwans -dixits -dizens -djebel -djinni -djinns -djinny -doable -doated -dobber -dobbin -dobies -doblas -doblon -dobras -dobros -dobson -docent -docile -docked -docker -docket -doctor -dodder -dodged -dodgem -dodger -dodges -dodoes -doffed -doffer -dogdom -dogear -dogeys -dogged -dogger -doggie -dogies -dogleg -dogmas -dognap -doiled -doings -doited -doling -dollar -dolled -dollop -dolman -dolmas -dolmen -dolors -dolour -domain -domine -doming -domino -donate -donees -dongas -dongle -donjon -donkey -donnas -donned -donnee -donors -donsie -donuts -donzel -doobie -doodad -doodle -doodoo -doofus -doolee -doolie -doomed -doowop -doozer -doozie -dopant -dopers -dopier -dopily -doping -dorado -dorbug -dories -dormer -dormie -dormin -dorper -dorsad -dorsal -dorsel -dorser -dorsum -dosage -dosers -dosing -dossal -dossed -dossel -dosser -dosses -dossil -dotage -dotard -doters -dotier -doting -dotted -dottel -dotter -dottle -double -doubly -doubts -douche -doughs -dought -doughy -doulas -doumas -dourah -douras -dourer -dourly -doused -douser -douses -dovens -dovish -dowels -dowers -dowery -dowing -downed -downer -dowsed -dowser -dowses -doxies -doyens -doyley -dozens -dozers -dozier -dozily -dozing -drably -drachm -draffs -draffy -drafts -drafty -dragee -draggy -dragon -drails -drains -drakes -dramas -drawee -drawer -drawls -drawly -drayed -dreads -dreams -dreamt -dreamy -drears -dreary -drecks -drecky -dredge -dreggy -dreich -dreidl -dreigh -drench -dressy -driegh -driers -driest -drifts -drifty -drills -drinks -drippy -drivel -driven -driver -drives -drogue -droids -droits -drolls -drolly -dromon -droned -droner -drones -drongo -drools -drooly -droops -droopy -dropsy -drosky -drossy -drouks -drouth -droved -drover -droves -drownd -drowns -drowse -drowsy -drudge -druggy -druids -drumly -drunks -drupes -druses -dryads -dryers -dryest -drying -dryish -drylot -dually -dubbed -dubber -dubbin -ducats -ducked -ducker -duckie -ductal -ducted -duddie -dudeen -duding -dudish -dueled -dueler -duelli -duello -duende -duenna -dueted -duffel -duffer -duffle -dugong -dugout -duiker -duking -dulcet -dulias -dulled -duller -dulses -dumbed -dumber -dumbly -dumbos -dumdum -dumped -dumper -dunams -dunces -dunged -dunite -dunked -dunker -dunlin -dunned -dunner -dunted -duolog -duomos -dupers -dupery -duping -duplex -dupped -durbar -duress -durian -during -durion -durned -durocs -durras -durrie -durums -dusked -dusted -duster -dustup -duties -duvets -dwarfs -dweebs -dweeby -dwells -dwined -dwines -dyable -dyadic -dybbuk -dyeing -dyings -dyking -dynamo -dynast -dynein -dynels -dynode -dyvour -eagers -eagled -eagles -eaglet -eagres -earbud -earful -earing -earlap -earned -earner -earths -earthy -earwax -earwig -easels -easier -easies -easily -easing -easter -eaters -eatery -eating -ebbets -ebbing -ebooks -ecarte -ecesic -ecesis -echard -eching -echini -echoed -echoer -echoes -echoey -echoic -eclair -eclats -ectype -eczema -eddied -eddies -eddoes -edemas -edenic -edgers -edgier -edgily -edging -edible -edicts -ediles -edited -editor -educed -educes -educts -eelier -eerier -eerily -efface -effect -effete -effigy -efflux -effort -effuse -egesta -egests -eggars -eggcup -eggers -egging -eggnog -egises -egoism -egoist -egress -egrets -eiders -eidola -eighth -eights -eighty -eikons -either -ejecta -ejects -ekuele -elains -elands -elapid -elapse -elated -elater -elates -elbows -elders -eldest -elects -elegit -elemis -eleven -elevon -elfins -elfish -elicit -elided -elides -elints -elites -elixir -elmier -elodea -eloign -eloins -eloped -eloper -elopes -eluant -eluate -eluded -eluder -eludes -eluent -eluted -elutes -eluvia -elvers -elvish -elytra -emails -embalm -embank -embark -embars -embays -embeds -embers -emblem -embody -emboli -emboly -embosk -emboss -embows -embrue -embryo -emceed -emcees -emdash -emeers -emends -emerge -emerod -emeses -emesis -emetic -emetin -emeute -emigre -emmers -emmets -emodin -emoted -emoter -emotes -empale -empery -empire -employ -emydes -enable -enacts -enamel -enamor -enates -enatic -encage -encamp -encase -encash -encina -encode -encore -encyst -endash -endear -enders -ending -endite -endive -endows -endrin -endued -endues -endure -enduro -energy -enface -enfold -engage -engild -engine -engird -engirt -englut -engram -engulf -enhalo -enigma -enisle -enjoin -enjoys -enlace -enlist -enmesh -enmity -ennead -ennuis -ennuye -enokis -enolic -enosis -enough -enrage -enrapt -enrich -enrobe -enroll -enrols -enroot -enserf -ensign -ensile -ensoul -ensued -ensues -ensure -entail -entera -enters -entice -entire -entity -entoil -entomb -entrap -entree -enured -enures -envied -envier -envies -enviro -envois -envoys -enwind -enwomb -enwrap -enzyme -enzyms -eocene -eolian -eolith -eonian -eonism -eosine -eosins -epacts -eparch -ephahs -ephebe -ephebi -ephods -ephori -ephors -epical -epigon -epilog -epimer -epizoa -epochs -epodes -eponym -epopee -eposes -equals -equate -equids -equine -equips -equity -erased -eraser -erases -erbium -erects -erenow -ergate -ergots -ericas -eringo -ermine -eroded -erodes -eroses -erotic -errand -errant -errata -erring -errors -ersatz -eructs -erugos -erupts -ervils -eryngo -escape -escarp -escars -eschar -eschew -escort -escots -escrow -escudo -eskars -eskers -espial -espied -espies -esprit -essays -essoin -estate -esteem -esters -estops -estral -estray -estrin -estrum -estrus -etalon -etamin -etapes -etched -etcher -etches -eterne -ethane -ethene -ethers -ethics -ethion -ethnic -ethnos -ethoxy -ethyls -ethyne -etoile -etudes -etwees -etymon -euchre -eulogy -eunuch -eupnea -eureka -euripi -euroky -eutaxy -evaded -evader -evades -evened -evener -evenly -events -everts -evicts -eviler -evilly -evince -evited -evites -evoked -evoker -evokes -evolve -evulse -evzone -exacta -exacts -exalts -examen -exarch -exceed -excels -except -excess -excide -excise -excite -excuse -exedra -exempt -exequy -exerts -exeunt -exhale -exhort -exhume -exiled -exiler -exiles -exilic -exines -exists -exited -exodoi -exodos -exodus -exogen -exonic -exonym -exotic -expand -expats -expect -expels -expend -expert -expire -expiry -export -expose -exsect -exsert -extant -extend -extent -extern -extoll -extols -extort -extras -exuded -exudes -exults -exurbs -exuvia -eyases -eyebar -eyecup -eyeful -eyeing -eyelet -eyelid -eyries -fabber -fabled -fabler -fables -fabric -facade -facers -facete -facets -faceup -facial -facile -facing -factor -facula -fadein -faders -fading -faenas -faerie -failed -faille -fainer -faints -faired -fairer -fairly -faiths -fajita -fakeer -fakers -fakery -faking -fakirs -falces -falcon -fallal -fallen -faller -fallow -falser -falsie -falter -family -famine -faming -famish -famous -famuli -fandom -fanega -fanfic -fangas -fanged -fanion -fanjet -fanned -fanner -fanons -fantod -fantom -fanums -faqirs -faquir -farads -farced -farcer -farces -farcie -farded -fardel -farers -farfal -farfel -farina -faring -farles -farmed -farmer -farrow -farted -fasces -fascia -fashed -fashes -fasted -fasten -faster -father -fathom -fating -fatwas -faucal -fauces -faucet -faulds -faults -faulty -faunae -faunal -faunas -fauves -favela -favism -favors -favour -fawned -fawner -faxing -faying -fazing -fealty -feared -fearer -feased -feases -feasts -feater -featly -feazed -feazes -feckly -fecund -fedora -feeble -feebly -feeder -feeing -feeler -feezed -feezes -feigns -feijoa -feints -feirie -feists -feisty -felids -feline -fellah -fellas -felled -feller -felloe -fellow -felons -felony -felsic -felted -female -femmes -femora -femurs -fenced -fencer -fences -fended -fender -fennec -fennel -feoffs -ferals -ferbam -feriae -ferial -ferias -ferine -ferity -ferlie -fermis -ferrel -ferret -ferric -ferrum -ferula -ferule -fervid -fervor -fescue -fessed -fesses -festal -fester -fetial -fetich -feting -fetish -fetors -fetted -fetter -fettle -feuars -feudal -feuded -feuing -fevers -fewest -feyest -fezzed -fezzes -fiacre -fiance -fiasco -fibbed -fibber -fibers -fibres -fibril -fibrin -fibula -fiches -fichus -ficins -fickle -fickly -ficoes -fiddle -fiddly -fidged -fidges -fidget -fields -fiends -fierce -fiesta -fifers -fifing -fifths -figged -fights -figure -filers -filets -filial -filing -filled -filler -filles -fillet -fillip -fillos -filmed -filmer -filmic -filmis -filose -filter -filths -filthy -fimble -finale -finals -fincas -finder -finely -finery -finest -finger -finial -fining -finish -finite -finito -finked -finned -fiords -fipple -fiques -firers -firing -firkin -firman -firmed -firmer -firmly -firsts -firths -fiscal -fished -fisher -fishes -fisted -fistic -fitchy -fitful -fitted -fitter -fivers -fixate -fixers -fixing -fixity -fixure -fizgig -fizzed -fizzer -fizzes -fizzle -fjelds -fjords -flabby -flacks -flacon -flaggy -flagon -flails -flairs -flaked -flaker -flakes -flakey -flambe -flamed -flamen -flamer -flames -flanes -flange -flanks -flappy -flared -flares -flashy -flasks -flatly -flatus -flaunt -flauta -flavin -flavor -flawed -flaxen -flaxes -flayed -flayer -fleams -fleche -flecks -flecky -fledge -fledgy -fleece -fleech -fleecy -fleers -fleets -flench -flense -fleshy -fletch -fleury -flexed -flexes -flexor -fleyed -flicks -fliers -fliest -flight -flimsy -flinch -flings -flints -flinty -flippy -flirts -flirty -flitch -flited -flites -floats -floaty -flocci -flocks -flocky -flongs -floods -flooey -flooie -floors -floosy -floozy -floppy -florae -floral -floras -floret -florid -florin -flossy -flotas -flours -floury -flouts -flowed -flower -fluent -fluffs -fluffy -fluids -fluish -fluked -flukes -flukey -flumed -flumes -flumps -flunks -flunky -fluors -flurry -fluted -fluter -flutes -flutey -fluxed -fluxes -fluyts -flyboy -flybys -flyers -flying -flyman -flymen -flyoff -flysch -flyted -flytes -flyway -foaled -foamed -foamer -fobbed -fodder -fodgel -foehns -foeman -foemen -foetal -foetid -foetor -foetus -fogbow -fogdog -fogeys -fogged -fogger -fogies -foible -foiled -foined -foison -foists -folate -folded -folder -foldup -foleys -foliar -folios -folium -folkie -folksy -folles -follis -follow -foment -fomite -fonded -fonder -fondle -fondly -fondue -fondus -fontal -foodie -fooled -footed -footer -footie -footle -footsy -foozle -fopped -forage -forams -forays -forbad -forbid -forbye -forced -forcer -forces -forded -fordid -foreby -foredo -forego -forest -forgat -forged -forger -forges -forget -forgot -forint -forked -forker -formal -format -formed -formee -former -formes -formic -formol -formyl -fornix -forrit -fortes -fortis -forums -forwhy -fossae -fossas -fosses -fossil -foster -fought -fouled -fouler -foully -founds -founts -fourth -foveae -foveal -foveas -fowled -fowler -foxier -foxily -foxing -foyers -fozier -fracas -fracti -fraena -frails -fraise -framed -framer -frames -francs -franks -frappe -frater -frauds -frayed -frazil -freaks -freaky -freely -freers -freest -freeze -french -frenum -frenzy -freres -fresco -fretty -friars -friary -fridge -friend -friers -frieze -friges -fright -frigid -frijol -frills -frilly -fringe -fringy -frisee -frises -frisks -frisky -frites -friths -fritts -frivol -frized -frizer -frizes -frizzy -frocks -froggy -frolic -fronds -fronts -frosts -frosty -froths -frothy -frouzy -frowns -frowst -frowsy -frowzy -frozen -frugal -fruits -fruity -frumps -frumpy -frusta -fryers -frying -frypan -fubbed -fucoid -fucose -fucous -fuddle -fudged -fudges -fueled -fueler -fugato -fugged -fugios -fugled -fugles -fugued -fugues -fuhrer -fulcra -fulfil -fulgid -fulham -fullam -fulled -fuller -fulmar -fumble -fumers -fumets -fumier -fuming -fumuli -funded -funder -fundic -fundus -funest -fungal -fungic -fungus -funked -funker -funkia -funned -funnel -funner -furane -furans -furfur -furies -furled -furler -furore -furors -furred -furrow -furzes -fusain -fusees -fusels -fusile -fusils -fusing -fusion -fussed -fusser -fusses -fustic -fusuma -futile -futons -future -futzed -futzes -fuzees -fuzils -fuzing -fuzzed -fuzzes -fylfot -fynbos -fyttes -gabbed -gabber -gabble -gabbro -gabies -gabion -gabled -gables -gaboon -gadded -gadder -gaddis -gadfly -gadget -gadids -gadoid -gaeing -gaffed -gaffer -gaffes -gagaku -gagers -gagged -gagger -gaggle -gaging -gagman -gagmen -gaiety -gaijin -gained -gainer -gainly -gainst -gaited -gaiter -galago -galahs -galaxy -galeae -galeas -galena -galere -galiot -galled -gallet -galley -gallic -gallon -gallop -gallus -galoot -galops -galore -galosh -galyac -galyak -gamays -gambas -gambes -gambia -gambir -gambit -gamble -gambol -gamely -gamers -gamest -gamete -gamier -gamily -gamine -gaming -gamins -gammas -gammed -gammer -gammon -gamuts -gander -ganefs -ganevs -ganged -ganger -gangly -gangue -ganjah -ganjas -gannet -ganofs -ganoid -gantry -gaoled -gaoler -gapers -gaping -gapped -garage -garbed -garble -garcon -gardai -garden -garget -gargle -garish -garlic -garner -garnet -garote -garred -garret -garron -garter -garths -garvey -gasbag -gascon -gashed -gasher -gashes -gasify -gasket -gaskin -gaslit -gasman -gasmen -gasped -gasper -gassed -gasser -gasses -gasted -gaster -gateau -gaters -gather -gating -gators -gauche -gaucho -gauged -gauger -gauges -gaults -gaumed -gauzes -gavage -gavels -gavial -gavots -gawked -gawker -gawped -gawper -gawsie -gayals -gaydar -gayest -gayety -gazabo -gazars -gazebo -gazers -gazing -gazoos -gazump -geared -gecked -geckos -geegaw -geeing -geeked -geests -geezer -geisha -gelada -gelant -gelate -gelati -gelato -gelcap -gelded -gelder -gelees -gelled -gemmae -gemmed -gemote -gemots -gender -genera -genets -geneva -genial -genies -genips -genius -genoas -genome -genoms -genres -genros -gentes -gentil -gentle -gently -gentoo -gentry -geodes -geodic -geoids -gerahs -gerbil -gerent -german -germen -gerund -gestes -gestic -getter -getups -gewgaw -geyser -gharri -gharry -ghauts -ghazis -gherao -ghetto -ghibli -ghosts -ghosty -ghouls -ghylls -giants -giaour -gibbed -gibber -gibbet -gibbon -gibers -gibing -giblet -gibson -giddap -gieing -gifted -giftee -gigged -giggle -giggly -giglet -giglot -gigolo -gigots -gigues -gilded -gilder -gilled -giller -gillie -gimbal -gimels -gimlet -gimmal -gimmes -gimmie -gimped -gingal -ginger -gingko -ginkgo -ginned -ginner -gipons -gipped -gipper -girded -girder -girdle -girlie -girned -girons -girted -girths -gismos -gitano -gitted -gittin -givens -givers -giving -gizmos -glaces -glacis -glades -gladly -glaire -glairs -glairy -glaive -glamor -glance -glands -glared -glares -glassy -glazed -glazer -glazes -gleams -gleamy -gleans -glebae -glebes -gledes -gleeds -gleeks -gleets -gleety -glegly -gleyed -glibly -glided -glider -glides -gliffs -glimed -glimes -glints -glinty -glioma -glitch -glitzy -gloams -gloats -global -globby -globed -globes -globin -gloggs -glomus -glooms -gloomy -gloppy -gloria -glossa -glossy -glosts -glouts -gloved -glover -gloves -glowed -glower -glozed -glozes -glucan -gluers -gluier -gluily -gluing -glumes -glumly -glumpy -glunch -gluons -glutei -gluten -glutes -glycan -glycin -glycol -glycyl -glyphs -gnarls -gnarly -gnarrs -gnatty -gnawed -gnawer -gneiss -gnomes -gnomic -gnomon -gnoses -gnosis -goaded -goaled -goalie -goanna -goatee -gobang -gobans -gobbed -gobbet -gobble -gobies -goblet -goblin -goboes -gobony -goddam -godded -godets -godown -godson -godwit -gofers -goffer -goggle -goggly -goglet -goings -goiter -goitre -golden -golder -golems -golfed -golfer -golosh -gombos -gomers -gomuti -gonefs -goners -gonged -goniff -gonifs -gonion -gonium -gonofs -gonoph -goodby -goodie -goodly -goofed -googly -googol -gooier -gooney -goonie -gooral -goosed -gooses -goosey -gopher -gorals -gorged -gorger -gorges -gorget -gorgon -gorhen -gorier -gorily -goring -gormed -gorses -gospel -gossan -gossip -gotcha -gothic -gotten -gouged -gouger -gouges -gourde -gourds -govern -gowans -gowany -gowned -goyish -graals -grabby -graben -graced -graces -graded -grader -grades -gradin -gradus -grafts -graham -grails -grains -grainy -gramas -gramma -gramme -grampa -gramps -grands -grange -granny -grants -granum -grapes -grapey -graphs -grappa -grasps -grassy -grated -grater -grates -gratin -gratis -graved -gravel -graven -graver -graves -gravid -grayed -grayer -grayly -grazed -grazer -grazes -grease -greasy -greats -greave -grebes -greeds -greedy -greens -greeny -greets -gregos -greige -gremmy -greyed -greyer -greyly -grided -grides -griefs -grieve -griffe -griffs -grifts -grigri -grille -grills -grilse -grimed -grimes -grimly -grinch -grinds -gringa -gringo -griots -griped -griper -gripes -gripey -grippe -grippy -grisly -grison -grists -griths -gritty -grivet -groans -groats -grocer -groggy -groins -grooms -groove -groovy -groped -groper -gropes -grosze -groszy -grotto -grotty -grouch -ground -groups -grouse -grouts -grouty -groved -grovel -groves -grower -growls -growly -growth -groyne -grubby -grudge -gruels -gruffs -gruffy -grugru -grumes -grumps -grumpy -grunge -grungy -grunts -grutch -guacos -guaiac -guanay -guanin -guanos -guards -guavas -guenon -guests -guffaw -guggle -guglet -guided -guider -guides -guidon -guilds -guiled -guiles -guilts -guilty -guimpe -guinea -guiros -guised -guises -guitar -gulags -gulden -gulfed -gulled -gullet -gulley -gulped -gulper -gumbos -gummas -gummed -gummer -gundog -gunite -gunman -gunmen -gunned -gunnel -gunnen -gunner -gunsel -gurged -gurges -gurgle -gurnet -gurney -gushed -gusher -gushes -gusset -gussie -gusted -guttae -gutted -gutter -guttle -guying -guyots -guzzle -gweduc -gybing -gyozas -gypped -gypper -gypsum -gyrase -gyrate -gyrene -gyring -gyrons -gyrose -gyttja -gyving -habile -habits -haboob -haceks -hacked -hackee -hacker -hackie -hackle -hackly -hading -hadith -hadjee -hadjes -hadjis -hadron -haeing -haemal -haemic -haemin -haeres -haffet -haffit -hafted -hafter -hagbut -hagdon -hagged -haggis -haggle -haikus -hailed -hailer -haints -hairdo -haired -hajjes -hajjis -hakeem -hakims -halala -halals -halers -haleru -halest -halide -halids -haling -halite -hallah -hallal -hallel -halloa -halloo -hallos -hallot -hallow -hallux -halmas -haloed -haloes -haloid -halons -halted -halter -halutz -halvah -halvas -halved -halves -hamada -hamals -hamate -hamaul -hamlet -hammal -hammam -hammed -hammer -hamper -hamuli -hamzah -hamzas -hances -handax -handed -hander -handle -hangar -hanged -hanger -hangul -hangup -haniwa -hanked -hanker -hankie -hansas -hansel -hanses -hansom -hanted -hantle -haoles -happed -happen -hapten -haptic -harbor -harden -harder -hardly -hareem -harems -haring -harked -harken -harlot -harmed -harmer -harmin -harped -harper -harpin -harrow -hartal -hashed -hashes -haslet -hasped -hassel -hassle -hasted -hasten -hastes -hatbox -haters -hatful -hating -hatpin -hatred -hatted -hatter -haughs -hauled -hauler -haulms -haulmy -haunch -haunts -hausen -havens -havers -having -havior -havocs -hawala -hawing -hawked -hawker -hawkey -hawkie -hawser -hawses -hayers -haying -haymow -hazans -hazard -hazels -hazers -hazier -hazily -hazing -hazmat -hazzan -headed -header -healed -healer -health -heaped -heaper -hearer -hearse -hearth -hearts -hearty -heated -heater -heaths -heathy -heaume -heaved -heaven -heaver -heaves -heckle -hectic -hector -heddle -heders -hedged -hedger -hedges -heeded -heeder -heehaw -heeled -heeler -heezed -heezes -hefted -hefter -hegari -hegira -heifer -height -heiled -heinie -heired -heishi -heists -hejira -heliac -helios -helium -helled -heller -hellos -helmed -helmet -helots -helped -helper -helved -helves -hemins -hemmed -hemmer -hemoid -hempen -hempie -henbit -henges -henley -hennas -henrys -hented -hepcat -hepper -heptad -herald -herbal -herbed -herded -herder -herdic -hereat -hereby -herein -hereof -hereon -heresy -hereto -heriot -hermae -hermai -hermit -hernia -heroes -heroic -heroin -herons -herpes -hetero -hetman -heuchs -heughs -hewers -hewing -hexade -hexads -hexane -hexers -hexing -hexone -hexose -hexyls -heyday -heydey -hiatal -hiatus -hiccup -hickey -hickie -hidden -hiders -hiding -hieing -hiemal -higgle -higher -highly -highth -hights -hijabs -hijack -hijrah -hijras -hikers -hiking -hilled -hiller -hilloa -hillos -hilted -hinder -hinged -hinger -hinges -hinted -hinter -hipped -hipper -hippie -hippos -hirees -hirers -hiring -hirple -hirsel -hirsle -hispid -hissed -hisser -hisses -histed -hither -hitman -hitmen -hitter -hiving -hoagie -hoards -hoarse -hoaxed -hoaxer -hoaxes -hobbed -hobber -hobbit -hobble -hobnob -hoboed -hoboes -hocked -hocker -hockey -hodads -hodden -hoddin -hoeing -hogans -hogged -hogger -hogget -hognut -hogtie -hoicks -hoiden -hoised -hoises -hoists -hokier -hokily -hoking -hokums -holard -holden -holder -holdup -holier -holies -holily -holing -holism -holist -holked -hollas -holler -holloa -holloo -hollos -hollow -holmic -holpen -homage -hombre -homely -homers -homeys -homier -homies -homily -homing -hominy -hommos -honans -honcho -hondas -hondle -honers -honest -honeys -honied -honing -honked -honker -honkey -honkie -honors -honour -hooded -hoodie -hoodoo -hooeys -hoofed -hoofer -hookah -hookas -hooked -hooker -hookey -hookup -hoolie -hooped -hooper -hoopla -hoopoe -hoopoo -hoorah -hooray -hootch -hooted -hooter -hooved -hoover -hooves -hopers -hoping -hopped -hopper -hopple -horahs -horary -horded -hordes -horned -hornet -horrid -horror -horsed -horses -horsey -horste -horsts -hosels -hosers -hoseys -hosier -hosing -hostas -hosted -hostel -hostly -hotbed -hotbox -hotdog -hotels -hotrod -hotted -hotter -hottie -houdah -hounds -houris -hourly -housed -housel -houser -houses -hovels -hovers -howdah -howdie -howffs -howked -howled -howler -howlet -hoyden -hoyles -hryvna -hubbly -hubbub -hubcap -hubris -huckle -huddle -huffed -hugely -hugest -hugged -hugger -huipil -hulked -hulled -huller -hulloa -hulloo -hullos -humane -humans -humate -humble -humbly -humbug -humeri -hummed -hummer -hummus -humors -humour -humped -humper -humphs -humvee -hunger -hungry -hunker -hunkey -hunkie -hunted -hunter -huppah -hurdle -hurled -hurler -hurley -hurrah -hurray -hursts -hurter -hurtle -hushed -hushes -husked -husker -hussar -hustle -hutted -hutzpa -huzzah -huzzas -hyaena -hyalin -hybrid -hybris -hydrae -hydras -hydria -hydric -hydrid -hydros -hyenas -hyenic -hyetal -hymens -hymnal -hymned -hyoids -hypers -hyphae -hyphal -hyphen -hyping -hypnic -hypoed -hysons -hyssop -iambic -iambus -iatric -ibexes -ibices -ibidem -ibises -icebox -icecap -iceman -icemen -ichors -icicle -iciest -icings -ickers -ickier -ickily -icones -iconic -ideals -ideate -idiocy -idioms -idiots -idlers -idlest -idling -idylls -iffier -igging -igloos -ignify -ignite -ignore -iguana -ihrams -ilexes -iliads -illest -illite -illude -illume -imaged -imager -images -imagos -imaret -imaums -imbalm -imbark -imbeds -imbibe -imbody -imbrue -imbued -imbues -imides -imidic -imines -immane -immesh -immies -immune -immure -impact -impair -impala -impale -impark -impart -impawn -impede -impels -impend -imphee -imping -impish -impled -impone -import -impose -impost -improv -impugn -impure -impute -inaner -inanes -inarch -inarms -inborn -inbred -incage -incant -incase -incent -incept -incest -inched -incher -inches -incise -incite -inclip -incogs -income -incony -incubi -incult -incurs -incuse -indaba -indeed -indene -indent -indict -indies -indign -indigo -indite -indium -indole -indols -indoor -indows -indris -induce -induct -indued -indues -indult -inerts -infall -infamy -infant -infare -infect -infers -infest -infill -infirm -inflow -influx -infold -inform -infuse -ingate -ingest -ingles -ingots -ingulf -inhale -inhaul -inhere -inhume -inions -inject -injure -injury -inkers -inkier -inking -inkjet -inkles -inkpot -inlace -inlaid -inland -inlays -inlets -inlier -inmate -inmesh -inmost -innage -innate -inners -inning -inpour -inputs -inroad -inruns -inrush -insane -inseam -insect -insert -insets -inside -insist -insole -insoul -inspan -instal -instar -instep -instil -insult -insure -intact -intake -intend -intent -intern -inters -intima -intime -intine -intomb -intone -intort -intown -intron -intros -intuit -inturn -inulin -inured -inures -inurns -invade -invars -invent -invert -invest -invite -invoke -inwall -inward -inwind -inwove -inwrap -iodate -iodide -iodids -iodine -iodins -iodise -iodism -iodize -iodous -iolite -ionics -ionise -ionium -ionize -ionone -ipecac -irades -irater -ireful -irenic -irides -iridic -irised -irises -iritic -iritis -irking -irokos -ironed -ironer -irones -ironic -irreal -irrupt -isatin -ischia -island -islets -isling -isobar -isogon -isohel -isolog -isomer -isopod -isseis -issued -issuer -issues -isthmi -istles -italic -itched -itches -itemed -iterum -itself -ixodid -ixoras -ixtles -izzard -jabbed -jabber -jabiru -jabots -jacals -jacana -jackal -jacked -jacker -jacket -jading -jadish -jaeger -jagers -jagged -jagger -jagras -jaguar -jailed -jailer -jailor -jalaps -jalops -jalopy -jambed -jambes -jammed -jammer -jangle -jangly -japans -japers -japery -japing -jarful -jargon -jarina -jarrah -jarred -jarvey -jasmin -jasper -jassid -jauked -jaunce -jaunts -jaunty -jauped -jawans -jawing -jaygee -jayvee -jazzbo -jazzed -jazzer -jazzes -jeaned -jebels -jeeing -jeeped -jeered -jeerer -jehads -jejuna -jejune -jelled -jellos -jennet -jerboa -jereed -jerids -jerked -jerker -jerkin -jerrid -jersey -jessed -jesses -jested -jester -jesuit -jetlag -jetons -jetsam -jetsom -jetted -jetton -jetway -jewels -jewing -jezail -jibbed -jibber -jibers -jibing -jicama -jigged -jigger -jiggle -jiggly -jigsaw -jihads -jilted -jilter -jiminy -jimmie -jimper -jimply -jingal -jingko -jingle -jingly -jinked -jinker -jinnee -jinnis -jinxed -jinxes -jitney -jitter -jivers -jivier -jiving -jnanas -jobbed -jobber -jockey -jockos -jocose -jocund -jogged -jogger -joggle -johnny -joined -joiner -joints -joists -jojoba -jokers -jokier -jokily -joking -jolted -jolter -jorams -jordan -jorums -joseph -joshed -josher -joshes -josses -jostle -jotted -jotter -jouals -jouked -joules -jounce -jouncy -journo -jousts -jovial -jowars -jowing -jowled -joyful -joying -joyous -joypop -jubbah -jubhah -jubile -judder -judged -judger -judges -judoka -jugate -jugful -jugged -juggle -jugula -jugums -juiced -juicer -juices -jujube -juking -juleps -jumbal -jumble -jumbos -jumped -jumper -juncos -jungle -jungly -junior -junked -junker -junket -junkie -juntas -juntos -jupons -jurant -jurats -jurels -juried -juries -jurist -jurors -justed -juster -justle -justly -jutted -kababs -kabaka -kabala -kabars -kabaya -kabiki -kabobs -kabuki -kaffir -kafirs -kaftan -kahuna -kaiaks -kainit -kaiser -kakapo -kalams -kalian -kalifs -kaliph -kalium -kalmia -kalong -kalpac -kalpak -kalpas -kamala -kamiks -kamsin -kanaka -kanban -kanjis -kantar -kanzus -kaolin -kaonic -kapoks -kappas -kaputt -karate -karats -karmas -karmic -karoos -kaross -karroo -karsts -kasbah -kashas -kasher -kation -kauris -kavass -kayaks -kayles -kayoed -kayoes -kazoos -kebabs -kebars -kebbie -keblah -kebobs -kecked -keckle -keddah -kedged -kedges -keeked -keeled -keened -keener -keenly -keeper -keeves -kefirs -kegged -kegger -kegler -keleps -kelims -keloid -kelped -kelpie -kelson -kelter -kelvin -kenafs -kendos -kenned -kennel -kentes -kepped -keppen -kerbed -kerfed -kermes -kermis -kerned -kernel -kernes -kerria -kersey -ketene -ketols -ketone -ketose -kettle -kevels -kevils -kewpie -keying -keypad -keypal -keyset -keyway -khadis -khakis -khalif -khaphs -khazen -khedah -khedas -kheths -khoums -kiangs -kiaugh -kibbeh -kibbes -kibbis -kibble -kibeis -kibitz -kiblah -kiblas -kibosh -kicked -kicker -kickup -kidded -kidder -kiddie -kiddos -kidnap -kidney -kidvid -kilims -killed -killer -killie -kilned -kilted -kilter -kiltie -kimchi -kimono -kinara -kinase -kinder -kindle -kindly -kinema -kinged -kingly -kinins -kinked -kiosks -kipped -kippen -kipper -kirned -kirsch -kirtle -kishka -kishke -kismat -kismet -kissed -kisser -kisses -kitbag -kiters -kithed -kithes -kiting -kitsch -kitted -kittel -kitten -kittle -klatch -klaxon -klepht -klepto -klicks -klongs -kloofs -kludge -kludgy -kluged -kluges -klutzy -knacks -knarry -knaurs -knaves -knawel -knawes -kneads -kneels -knells -knifed -knifer -knifes -knight -knives -knobby -knocks -knolls -knolly -knosps -knotty -knouts -knower -knowns -knubby -knurls -knurly -koalas -kobold -koines -kolhoz -kolkoz -kombus -konked -koodoo -kookie -kopeck -kopeks -kopjes -koppas -koppie -korats -kormas -koruna -koruny -kosher -kotows -koumis -koumys -kouroi -kouros -kousso -kowtow -kraals -krafts -kraits -kraken -krater -krauts -kreeps -krewes -krills -krises -kronen -kroner -kronor -kronur -krooni -kroons -krubis -krubut -kuchen -kudzus -kugels -kukris -kulaki -kulaks -kultur -kumiss -kummel -kurgan -kurtas -kussos -kuvasz -kvases -kvells -kvetch -kwacha -kwanza -kyacks -kybosh -kyries -kythed -kythes -laager -labara -labels -labial -labile -labium -labors -labour -labret -labrum -lacers -laches -lacier -lacily -lacing -lacked -lacker -lackey -lactam -lactic -lacuna -lacune -ladder -laddie -ladens -laders -ladies -lading -ladino -ladled -ladler -ladles -ladron -lagans -lagend -lagers -lagged -lagger -lagoon -laguna -lagune -lahars -laical -laichs -laighs -lairds -laired -lakers -lakier -laking -lallan -lalled -lambda -lambed -lamber -lambie -lamedh -lameds -lamely -lament -lamest -lamiae -lamias -lamina -laming -lammed -lampad -lampas -lamped -lanais -lanate -lanced -lancer -lances -lancet -landau -landed -lander -lanely -langue -langur -lanker -lankly -lanner -lanose -lanugo -laogai -lapdog -lapels -lapful -lapins -lapped -lapper -lappet -lapsed -lapser -lapses -lapsus -laptop -larded -larder -lardon -larees -larger -larges -largos -lariat -larine -larked -larker -larrup -larums -larvae -larval -larvas -larynx -lascar -lasers -lashed -lasher -lashes -lasing -lasses -lassie -lassis -lassos -lasted -laster -lastly -lateen -lately -latens -latent -latest -lathed -lather -lathes -lathis -latigo -latina -latino -latish -latkes -latria -latten -latter -lattes -lattin -lauans -lauded -lauder -laughs -launce -launch -laurae -lauras -laurel -lavabo -lavage -lavash -laveer -lavers -laving -lavish -lawful -lawine -lawing -lawman -lawmen -lawyer -laxest -laxity -layers -laying -layins -layman -laymen -layoff -layout -layups -lazars -lazied -lazier -lazies -lazily -lazing -lazuli -leachy -leaded -leaden -leader -leafed -league -leaked -leaker -leally -lealty -leaned -leaner -leanly -leaped -leaper -learns -learnt -leased -leaser -leases -leasts -leaved -leaven -leaver -leaves -lebens -leched -lecher -leches -lechwe -lectin -lector -ledger -ledges -leered -leeway -lefter -legacy -legals -legate -legato -legend -legers -legged -leggin -legion -legist -legits -legman -legmen -legong -legume -lehuas -lekked -lekvar -lemans -lemmas -lemons -lemony -lemurs -lender -length -lenite -lenity -lensed -lenses -lenten -lentic -lentil -lentos -leones -lepers -leptin -lepton -lesbos -lesion -lessee -lessen -lesser -lesson -lessor -lethal -lethes -letted -letter -letups -leucin -leudes -leukon -levant -leveed -levees -levels -levers -levied -levier -levies -levins -levity -lewder -lewdly -lexeme -lexica -lezzes -lezzie -liable -liaise -lianas -lianes -liangs -liards -libber -libels -libers -libido -liblab -librae -libras -lichee -lichen -liches -lichis -lichts -licked -licker -lictor -lidars -lidded -lieder -liefer -liefly -lieges -lienal -lierne -liever -lifers -lifted -lifter -ligand -ligans -ligase -ligate -ligers -lights -lignan -lignin -ligula -ligule -ligure -likely -likens -likers -likest -liking -likuta -lilacs -lilied -lilies -lilted -limans -limbas -limbed -limber -limbic -limbos -limbus -limens -limeys -limier -limina -liming -limits -limmer -limned -limner -limnic -limpas -limped -limper -limpet -limpid -limply -limpsy -limuli -linacs -linage -linden -lineal -linear -linens -lineny -liners -lineup -lingam -lingas -linger -lingua -linier -lining -linins -linked -linker -linkup -linnet -linsey -linted -lintel -linter -lintol -linums -lipase -lipide -lipids -lipins -lipoid -lipoma -lipped -lippen -lipper -liquid -liquor -liroth -lisles -lisped -lisper -lissom -listed -listee -listel -listen -lister -litany -litchi -liters -lither -lithia -lithic -lithos -litmus -litres -litten -litter -little -lively -livens -livers -livery -livest -livier -living -livres -livyer -lizard -llamas -llanos -loaded -loader -loafed -loafer -loamed -loaned -loaner -loathe -loaves -lobate -lobbed -lobber -lobule -locale -locals -locate -lochan -lochia -locked -locker -locket -lockup -locoed -locoes -locule -loculi -locums -locust -lodens -lodged -lodger -lodges -lofted -lofter -logans -logged -logger -loggia -loggie -logics -logier -logily -logins -logion -logjam -logons -logway -loided -loiter -lolled -loller -lollop -lomein -loment -lonely -loners -longan -longed -longer -longes -longly -looeys -loofah -loofas -looies -looing -looked -looker -lookup -loomed -looney -loonie -looped -looper -loosed -loosen -looser -looses -looted -looter -lopers -loping -lopped -lopper -loquat -lorans -lorded -lordly -loreal -lorica -lories -losels -losers -losing -losses -lotahs -lotion -lotted -lotter -lottes -lottos -louche -louden -louder -loudly -loughs -louies -loumas -lounge -loungy -louped -loupen -loupes -loured -loused -louses -louted -louver -louvre -lovage -lovats -lovely -lovers -loving -lowboy -lowers -lowery -lowest -lowing -lowish -loxing -lubber -lubing -lubric -lucent -lucern -lucite -lucked -luckie -lucres -luetic -luffas -luffed -lugers -lugged -lugger -luggie -luging -lulled -luller -lumbar -lumber -lumens -lumina -lummox -lumped -lumpen -lumper -lunacy -lunars -lunate -lunets -lungan -lunged -lungee -lunger -lunges -lungis -lungyi -lunier -lunies -lunker -lunted -lunula -lunule -lupine -lupins -lupous -lurdan -lurers -luring -lurked -lurker -lushed -lusher -lushes -lushly -lusted -luster -lustra -lustre -luteal -lutein -luteum -luting -lutist -lutzes -luxate -luxury -lyases -lycees -lyceum -lychee -lyches -lycras -lyings -lymphs -lynxes -lyrate -lyrics -lyrism -lyrist -lysate -lysine -lysing -lysins -lyssas -lyttae -lyttas -macaco -macaws -macers -maches -machos -macing -mackle -macled -macles -macons -macron -macros -macula -macule -madame -madams -madcap -madded -madden -madder -madman -madmen -madras -madres -madtom -maduro -maenad -maffia -mafias -maftir -maggot -magian -magics -magilp -maglev -magmas -magnet -magnum -magots -magpie -maguey -mahoes -mahout -mahzor -maiden -maigre -maihem -mailed -mailer -mailes -maills -maimed -maimer -mainly -maists -maizes -majors -makars -makers -makeup -making -makuta -malady -malars -malate -malfed -malgre -malice -malign -maline -malkin -malled -mallee -mallei -mallet -mallow -maloti -malted -maltha -maltol -mambas -mambos -mameys -mamies -mamluk -mammae -mammal -mammas -mammee -mammer -mammet -mammey -mammie -mammon -mamzer -manage -manana -manats -manche -manege -manful -mangas -mangel -manger -manges -mangey -mangle -mangos -maniac -manias -manics -manila -manioc -manito -manitu -mannan -mannas -manned -manner -manors -manque -manses -mantas -mantel -mantes -mantic -mantid -mantis -mantle -mantra -mantua -manual -manure -maples -mapped -mapper -maquis -maraca -maraud -marble -marbly -marcel -margay -marges -margin -marina -marine -marish -markas -marked -marker -market -markka -markup -marled -marlin -marmot -maroon -marque -marram -marred -marrer -marron -marrow -marses -marshy -marted -marten -martin -martyr -marvel -masala -mascon -mascot -masers -mashed -masher -mashes -mashie -masjid -masked -maskeg -masker -masons -masque -massif -masted -master -mastic -mastix -maters -mateys -matier -mating -matins -matres -matrix -matron -matsah -matted -matter -mattes -mattin -mature -matzah -matzas -matzoh -matzos -matzot -mauger -maugre -mauled -mauler -maumet -maunds -maundy -mauves -mavens -mavies -mavins -mawing -maxima -maxims -maxing -maxixe -maybes -mayday -mayest -mayfly -mayhap -mayhem -maying -mayors -maypop -mayvin -mazard -mazers -mazier -mazily -mazing -mazuma -mbiras -meadow -meager -meagre -mealie -meaner -meanie -meanly -measle -measly -meatal -meated -meatus -meccas -medaka -medals -meddle -medfly -mediad -mediae -medial -median -medias -medick -medico -medics -medina -medium -medius -medlar -medley -medusa -meeker -meekly -meeter -meetly -megara -megilp -megohm -megrim -mehndi -meikle -meinie -melded -melder -melees -melena -melled -mellow -melody -meloid -melons -melted -melter -melton -member -memoir -memory -menace -menads -menage -mended -mender -menhir -menial -meninx -mensae -mensal -mensas -mensch -mensed -menses -mental -mentee -mentor -mentum -menudo -meoued -meowed -mercer -merces -merdes -merely -merest -merged -mergee -merger -merges -merino -merits -merles -merlin -merlon -merlot -merman -mermen -mescal -meshed -meshes -mesial -mesian -mesnes -mesons -messan -messed -messes -mestee -metage -metals -metate -meteor -metepa -meters -method -methyl -metier -meting -metols -metope -metred -metres -metric -metros -mettle -metump -mewing -mewled -mewler -mezcal -mezuza -mezzos -miaous -miaows -miasma -miasms -miauls -micell -miched -miches -mickey -mickle -micron -micros -midair -midcap -midday -midden -middle -midges -midget -midgut -midleg -midrib -midsts -midway -miffed -miggle -mights -mighty -mignon -mihrab -mikado -miking -mikron -mikvah -mikveh -mikvos -mikvot -miladi -milady -milage -milded -milden -milder -mildew -mildly -milers -milieu -milium -milked -milker -milled -miller -milles -millet -milneb -milord -milpas -milted -milter -mimbar -mimeos -mimers -mimics -miming -mimosa -minced -mincer -minces -minded -minder -miners -mingle -minify -minima -minims -mining -minion -minish -minium -minkes -minnow -minors -minted -minter -minuet -minute -minxes -minyan -mioses -miosis -miotic -mirage -mirier -miring -mirins -mirker -mirror -mirths -mirzas -misact -misadd -misaim -misate -miscue -miscut -misdid -miseat -misers -misery -misfed -misfit -mishap -miskal -mislay -misled -mislie -mislit -mismet -mispen -missal -missay -missed -missel -misses -misset -missis -missus -misted -mister -misuse -miters -mither -mitier -mitral -mitred -mitres -mitten -mixers -mixing -mixups -mizens -mizuna -mizzen -mizzle -mizzly -moaned -moaner -moated -mobbed -mobber -mobcap -mobile -mobled -mochas -mocked -mocker -mockup -modals -models -modems -modern -modest -modica -modify -modish -module -moduli -modulo -mogged -moggie -moghul -moguls -mohair -mohawk -mohels -mohurs -moiety -moiled -moiler -moirai -moires -mojoes -molars -molded -molder -molies -moline -mollah -mollie -moloch -molted -molten -molter -moment -mommas -momser -momzer -monads -mondes -mondos -moneys -monger -mongoe -mongol -mongos -mongst -monied -monies -monish -monism -monist -monkey -monody -montes -months -mooing -moolah -moolas -mooley -mooned -mooner -moored -mooted -mooter -mopeds -mopers -mopery -mopier -moping -mopish -mopoke -mopped -mopper -moppet -morale -morals -morays -morbid -moreen -morels -morgan -morgen -morgue -morion -morons -morose -morpho -morphs -morris -morros -morrow -morsel -mortal -mortar -morula -mosaic -moseys -moshav -moshed -mosher -moshes -mosque -mossed -mosser -mosses -mostly -motels -motets -mother -motifs -motile -motion -motive -motley -motmot -motors -mottes -mottle -mottos -moujik -moulds -mouldy -moulin -moults -mounds -mounts -mourns -moused -mouser -mouses -mousey -mousse -mouths -mouthy -mouton -movers -movies -moving -mowers -mowing -moxies -muches -muchly -mucins -mucked -mucker -muckle -mucluc -mucoid -mucors -mucosa -mucose -mucous -mudbug -mudcap -mudcat -mudded -mudder -muddle -muddly -mudhen -mudras -muesli -muffed -muffin -muffle -muftis -mugful -muggar -mugged -muggee -mugger -muggur -mughal -mujiks -mukluk -muktuk -mulcts -muleta -muleys -muling -mulish -mullah -mullas -mulled -mullen -muller -mullet -mulley -mumble -mumbly -mummed -mummer -mumped -mumper -mungos -muntin -muonic -murals -murder -murein -murids -murine -muring -murker -murkly -murmur -murphy -murras -murres -murrey -murrha -muscae -muscat -muscid -muscle -muscly -musers -museum -mushed -musher -mushes -musick -musics -musing -musjid -muskeg -musket -muskie -muskit -muskox -muslin -mussed -mussel -musses -musted -mustee -muster -musths -mutant -mutase -mutate -mutely -mutest -mutine -muting -mutiny -mutism -mutons -mutter -mutton -mutual -mutuel -mutule -muumuu -muzhik -muzjik -muzzle -myases -myasis -mycele -myelin -mylars -mynahs -myomas -myopes -myopia -myopic -myoses -myosin -myosis -myotic -myriad -myrica -myrrhs -myrtle -myself -mysids -mysost -mystic -mythic -mythoi -mythos -myxoid -myxoma -nabbed -nabber -nabobs -nachas -naches -nachos -nacred -nacres -nadirs -naevus -naffed -nagana -nagged -nagger -naiads -nailed -nailer -nairas -nairus -naiver -naives -nakfas -naleds -namely -namers -naming -nances -nandin -nanism -nankin -nannie -napalm -napery -napkin -nappas -napped -napper -nappes -nappie -narcos -narial -narine -narked -narrow -narwal -nasals -nasial -nasion -nastic -natant -nation -native -natron -natter -nature -naught -nausea -nautch -navaid -navars -navels -navies -nawabs -naysay -nazify -nearby -neared -nearer -nearly -neaten -neater -neatly -nebula -nebule -nebuly -necked -necker -nectar -needed -needer -needle -negate -neighs -nekton -nellie -nelson -neocon -neoned -nepeta -nephew -nereid -nereis -neroli -nerols -nerved -nerves -nesses -nested -nester -nestle -nestor -nether -netops -netted -netter -nettle -nettly -neumes -neumic -neural -neuron -neuter -nevoid -newbie -newels -newest -newies -newish -newsie -newton -niacin -nibbed -nibble -nicads -nicely -nicest -nicety -niched -niches -nicked -nickel -nicker -nickle -nicols -nidate -nidget -nidify -niding -nieces -nielli -niello -nieves -niffer -nigger -niggle -niggly -nighed -nigher -nights -nighty -nihils -nilgai -nilgau -nilled -nimble -nimbly -nimbus -nimmed -nimrod -ninety -ninjas -ninons -ninths -niobic -nipped -nipper -nipple -niseis -niters -nitery -nitons -nitres -nitric -nitrid -nitril -nitros -nitwit -nixies -nixing -nizams -nobble -nobler -nobles -nobody -nocent -nocked -nodded -nodder -noddle -nodose -nodous -nodule -noesis -noetic -nogged -noggin -noised -noises -nomads -nomina -nomism -nonage -nonart -nonces -noncom -nonego -nonets -nonfan -nonfat -nongay -nonman -nonmen -nonpar -nontax -nonuse -nonwar -nonyls -noodge -noodle -noogie -nookie -noosed -nooser -nooses -nopals -nordic -norias -norite -normal -normed -norths -noshed -nosher -noshes -nosier -nosily -nosing -nostoc -notary -notate -noters -nother -notice -notify -noting -notion -nougat -nought -nounal -nouses -novels -novena -novice -noways -nowise -noyade -nozzle -nuance -nubbin -nubble -nubbly -nubias -nubile -nubuck -nuchae -nuchal -nuclei -nudely -nudest -nudged -nudger -nudges -nudies -nudism -nudist -nudity -nudnik -nugget -nuking -nullah -nulled -numbat -numbed -number -numbly -numina -nuncio -nuncle -nurled -nursed -nurser -nurses -nutant -nutate -nutlet -nutmeg -nutria -nuzzle -nyalas -oafish -oakier -oakums -oaring -oaters -obeahs -obelia -obelus -obento -obeyed -obeyer -obiism -object -objets -oblast -oblate -oblige -oblong -oboist -oboles -obolus -obsess -obtain -obtect -obtest -obtund -obtuse -obvert -occult -occupy -occurs -oceans -ocelli -ocelot -ochers -ochery -ochone -ochrea -ochred -ochres -ocicat -ockers -ocreae -octads -octane -octans -octant -octave -octavo -octets -octopi -octroi -octyls -ocular -oculus -oddest -oddish -oddity -odeons -odeums -odious -odists -odiums -odored -odours -odyles -oedema -oeuvre -offals -offcut -offend -offers -office -offing -offish -offkey -offset -oftest -ogdoad -oghams -ogival -ogives -oglers -ogling -ogress -ogrish -ogrism -ohmage -oidium -oilcan -oilcup -oilers -oilier -oilily -oiling -oilman -oilmen -oilway -oinked -okapis -okayed -oldest -oldies -oldish -oleate -olefin -oleine -oleins -oleums -olingo -olives -omasum -ombers -ombres -omegas -omelet -omened -omenta -onager -onagri -onions -oniony -onlays -online -onload -onrush -onsets -onside -onuses -onward -onyxes -oocyst -oocyte -oodles -oogamy -oogeny -oohing -oolite -oolith -oology -oolong -oomiac -oomiak -oompah -oomphs -oorali -ootids -oozier -oozily -oozing -opaque -opened -opener -openly -operas -operon -ophite -opiate -opined -opines -opioid -opiums -oppose -oppugn -opsins -optics -optima -optime -opting -option -opuses -orache -oracle -orally -orange -orangs -orangy -orated -orates -orator -orbier -orbing -orbits -orcein -orchid -orchil -orchis -orcins -ordain -ordeal -orders -ordure -oreads -oreide -orfray -organs -orgone -oribis -oriels -orient -origan -origin -oriole -orisha -orison -orlons -orlops -ormers -ormolu -ornate -ornery -oroide -orphan -orphic -orpine -orpins -orrery -orrice -oryxes -oscine -oscula -oscule -osetra -osiers -osmics -osmium -osmole -osmols -osmose -osmous -osmund -osprey -ossein -ossify -osteal -ostium -ostler -ostomy -otalgy -others -otiose -otitic -otitis -ottars -ottava -otters -ouched -ouches -oughts -ounces -ouphes -ourang -ourari -ourebi -ousels -ousted -ouster -outact -outadd -outage -outask -outate -outbeg -outbid -outbox -outbuy -outbye -outcry -outdid -outeat -outers -outfit -outfly -outfox -outgas -outgun -outhit -outing -outjut -outlaw -outlay -outled -outlet -outlie -outman -output -outran -outrig -outrow -outrun -outsat -outsaw -outsay -outsee -outset -outsin -outsit -outvie -outwar -outwit -ouzels -ovally -overdo -overed -overly -ovibos -ovines -ovisac -ovoids -ovolos -ovonic -ovular -ovules -owlets -owlish -owners -owning -oxalic -oxalis -oxbows -oxcart -oxeyes -oxford -oxides -oxidic -oximes -oxlike -oxlips -oxtail -oxters -oxygen -oyezes -oyster -ozalid -ozones -ozonic -pablum -pacers -pachas -pacier -pacify -pacing -packed -packer -packet -packly -padauk -padded -padder -paddle -padles -padnag -padouk -padres -paeans -paella -paeons -paesan -pagans -pagers -paging -pagoda -pagods -paiked -painch -pained -paints -painty -paired -paisan -paisas -pajama -pakeha -pakora -palace -palais -palapa -palate -paleae -paleal -palely -palest -palets -palier -paling -palish -palled -pallet -pallia -pallid -pallor -palmar -palmed -palmer -palpal -palped -palpus -palter -paltry -pampas -pamper -panada -panama -pandas -pander -pandit -panels -panfry -panful -pangas -panged -pangen -panics -panier -panini -panino -panned -panner -pannes -panted -pantie -pantos -pantry -panzer -papacy -papain -papaws -papaya -papers -papery -papism -papist -pappus -papula -papule -papyri -parade -paramo -parang -paraph -parcel -pardah -pardee -pardie -pardon -parent -pareos -parers -pareus -pareve -parged -parges -parget -pargos -pariah -parian -paries -paring -parish -parity -parkas -parked -parker -parlay -parled -parles -parley -parlor -parody -parole -parols -parous -parral -parred -parrel -parrot -parsec -parsed -parser -parses -parson -partan -parted -partly -parton -parura -parure -parvis -parvos -pascal -paseos -pashas -pashed -pashes -pastas -pasted -pastel -paster -pastes -pastie -pastil -pastis -pastor -pastry -pataca -patchy -patens -patent -paters -pathos -patina -patine -patins -patios -patois -patrol -patron -patted -pattee -patten -patter -pattie -patzer -paulin -paunch -pauper -pausal -paused -pauser -pauses -pavane -pavans -paveed -pavers -paving -pavins -pavior -pavise -pawers -pawing -pawned -pawnee -pawner -pawnor -pawpaw -paxwax -payday -payees -payers -paying -paynim -payoff -payola -payors -payout -pazazz -peaced -peaces -peachy -peages -peahen -peaked -pealed -peanut -pearls -pearly -peasen -peases -peavey -pebble -pebbly -pecans -pechan -peched -pecked -pecker -pecten -pectic -pectin -pedalo -pedals -pedant -pedate -peddle -pedlar -pedler -pedros -peeing -peeked -peeled -peeler -peened -peered -peerie -pegged -peined -peised -peises -pekans -pekins -pekoes -pelage -pelite -pellet -pelmet -pelota -pelted -pelter -peltry -pelves -pelvic -pelvis -penang -pencel -pencil -pended -pengos -penial -penile -penman -penmen -pennae -penned -penner -pennia -pennis -pennon -pensee -pensil -pentad -pentyl -penult -penury -peones -people -pepino -peplos -peplum -peplus -pepped -pepper -pepsin -peptic -peptid -perdie -perdue -perdus -pereia -pereon -perils -period -perish -periti -perked -permed -permit -pernio -pernod -peroxy -perron -perses -person -perter -pertly -peruke -peruse -pesade -peseta -pesewa -pester -pestle -pestos -petals -petard -peters -petite -petnap -petrel -petrol -petsai -petted -petter -pettle -pewees -pewits -pewter -peyote -peyotl -phages -pharos -phased -phases -phasic -phasis -phatic -phenix -phenol -phenom -phenyl -phials -phizes -phlegm -phloem -phobia -phobic -phoebe -phonal -phoned -phones -phoney -phonic -phonon -phonos -phooey -photic -photog -photon -photos -phrase -phreak -phylae -phylar -phylic -phyllo -phylon -phylum -physed -physes -physic -physis -phytin -phytol -phyton -piaffe -pianic -pianos -piazza -piazze -pibals -picara -picaro -pickax -picked -picker -picket -pickle -pickup -picnic -picots -picric -piculs -piddle -piddly -pidgin -pieced -piecer -pieces -pieing -pierce -pietas -piffle -pigeon -pigged -piggie -piggin -piglet -pignus -pignut -pigout -pigpen -pigsty -pikake -pikers -piking -pilaff -pilafs -pilaus -pilaws -pileum -pileup -pileus -pilfer -piling -pillar -pilled -pillow -pilose -pilots -pilous -pilule -pimped -pimple -pimply -pinang -pinata -pincer -pinder -pineal -pinene -pinery -pineta -pinged -pinger -pingos -pinier -pining -pinion -pinite -pinked -pinken -pinker -pinkey -pinkie -pinkly -pinkos -pinnae -pinnal -pinnas -pinned -pinner -pinole -pinons -pinots -pintas -pintle -pintos -pinups -pinyin -pinyon -piolet -pionic -pipage -pipals -pipers -pipets -pipier -piping -pipits -pipkin -pipped -pippin -piqued -piques -piquet -piracy -pirana -pirate -piraya -pirogi -piscos -pistil -pistol -piston -pistou -pitaya -pitchy -pithed -pitied -pitier -pities -pitman -pitmen -pitons -pitsaw -pittas -pitted -pivots -pixels -pixies -pizazz -pizzas -pizzaz -pizzle -placed -placer -places -placet -placid -placks -plagal -plages -plague -plaguy -plaice -plaids -plains -plaint -plaits -planar -planch -planed -planer -planes -planet -planks -plants -plaque -plashy -plasma -plasms -platan -plated -platen -plater -plates -platys -playas -played -player -plazas -pleach -pleads -please -pleats -plebes -pledge -pleiad -plench -plenty -plenum -pleons -pleura -plexal -plexes -plexor -plexus -pliant -plicae -plical -pliers -plight -plinks -plinth -plisky -plisse -ploidy -plonks -plotty -plough -plover -plowed -plower -ployed -plucks -plucky -plumbs -plumed -plumes -plummy -plumps -plunge -plunks -plunky -plural -pluses -plushy -plutei -pluton -plyers -plying -pneuma -poachy -poboys -pocked -pocket -podded -podite -podium -podsol -podzol -poetic -poetry -pogeys -pogies -pogrom -poilus -poinds -pointe -points -pointy -poised -poiser -poises -poisha -poison -pokers -pokeys -pokier -pokies -pokily -poking -polars -polder -poleax -poleis -polers -poleyn -police -policy -polies -poling -polios -polish -polite -polity -polkas -polled -pollee -pollen -poller -pollex -polyol -polypi -polyps -pomace -pomade -pomelo -pommee -pommel -pommie -pompom -pompon -ponced -ponces -poncho -ponded -ponder -ponent -ponged -pongee -pongid -ponied -ponies -pontes -pontil -ponton -poodle -poohed -pooing -pooled -pooler -pooped -poorer -pooris -poorly -pooves -popery -popgun -popish -poplar -poplin -poppas -popped -popper -poppet -popple -popsie -poring -porism -porked -porker -pornos -porose -porous -portal -ported -porter -portly -posada -posers -poseur -posher -poshly -posies -posing -posits -posole -posses -posset -possum -postal -posted -poster -postie -postin -postop -potage -potash -potato -potboy -poteen -potent -potful -pother -pothos -potion -potman -potmen -potpie -potsie -potted -potter -pottle -pottos -potzer -pouchy -poufed -pouffe -pouffs -pouffy -poults -pounce -pounds -poured -pourer -pouted -pouter -powder -powers -powter -powwow -poxier -poxing -poyous -pozole -praams -prahus -praise -prajna -prance -prangs -pranks -prases -prated -prater -prates -prawns -praxes -praxis -prayed -prayer -preach -preact -preamp -prearm -prebid -prebuy -precis -precut -predry -preens -prefab -prefer -prefix -prelaw -prelim -preman -premed -premen -premie -premix -preops -prepay -preppy -preset -presto -prests -pretax -pretor -pretty -prevue -prewar -prexes -preyed -preyer -prezes -priapi -priced -pricer -prices -pricey -prided -prides -priers -priest -prills -primal -primas -primed -primer -primes -primly -primos -primps -primus -prince -prinks -prints -prions -priors -priory -prised -prises -prisms -prison -prissy -privet -prized -prizer -prizes -probed -prober -probes -probit -proems -profit -progun -projet -prolan -proleg -proles -prolix -prolog -promos -prompt -prongs -pronto -proofs -propel -proper -propyl -prosed -proser -proses -prosit -prosos -protea -protei -proton -protyl -proved -proven -prover -proves -prowar -prower -prowls -prudes -pruned -pruner -prunes -prunus -prutah -prutot -pryers -prying -psalms -pseudo -pseuds -pshaws -psocid -psyche -psycho -psychs -psylla -psyops -psywar -pterin -ptisan -ptooey -ptoses -ptosis -ptotic -public -pucker -puddle -puddly -pueblo -puffed -puffer -puffin -pugged -puggry -pugree -puisne -pujahs -puking -pulers -puling -pulled -puller -pullet -pulley -pullup -pulpal -pulped -pulper -pulpit -pulque -pulsar -pulsed -pulser -pulses -pumelo -pumice -pummel -pumped -pumper -punchy -pundit -pungle -punier -punily -punish -punjis -punkah -punkas -punker -punkey -punkie -punkin -punned -punner -punnet -punted -punter -puntos -pupate -pupils -pupped -puppet -purana -purdah -purdas -pureed -purees -purely -purest -purfle -purged -purger -purges -purify -purine -purins -purism -purist -purity -purled -purlin -purple -purply -purred -pursed -purser -purses -pursue -purvey -pushed -pusher -pushes -pushup -pusley -pusses -pussly -putlog -putoff -putons -putout -putrid -putsch -putted -puttee -putter -puttie -putzed -putzes -puzzle -pyemia -pyemic -pyjama -pyknic -pylons -pylori -pyoses -pyosis -pyrans -pyrene -pyrite -pyrola -pyrone -pyrope -pyrrol -python -pyuria -pyxies -qabala -qanats -qindar -qintar -qiviut -quacks -quacky -quaere -quaffs -quagga -quaggy -quahog -quaich -quaigh -quails -quaint -quaked -quaker -quakes -qualia -qualms -qualmy -quango -quanta -quants -quarks -quarry -quarte -quarto -quarts -quartz -quasar -quatre -quaver -qubits -qubyte -queans -queasy -queazy -queens -queers -quelea -quells -quench -querns -quests -queued -queuer -queues -quezal -quiche -quicks -quiets -quiffs -quills -quilts -quince -quinic -quinin -quinoa -quinol -quinsy -quinta -quinte -quints -quippu -quippy -quipus -quired -quires -quirks -quirky -quirts -quitch -quiver -quohog -quoins -quoits -quokka -quolls -quorum -quotas -quoted -quoter -quotes -quotha -qurush -qwerty -rabato -rabats -rabbet -rabbin -rabbis -rabbit -rabble -rabies -raceme -racers -rachet -rachis -racier -racily -racing -racked -racker -racket -rackle -racons -racoon -radars -radded -raddle -radial -radian -radios -radish -radium -radius -radome -radons -radula -raffia -raffle -rafted -rafter -ragbag -ragees -ragged -raggee -raggle -raging -raglan -ragman -ragmen -ragout -ragtag -ragtop -raided -raider -railed -railer -rained -raised -raiser -raises -raisin -raitas -rajahs -rakees -rakers -raking -rakish -rallye -ralphs -ramada -ramate -rambla -ramble -ramees -ramets -ramies -ramify -ramjet -rammed -rammer -ramona -ramose -ramous -ramped -ramrod -ramson -ramtil -rances -rancho -rancid -rancor -randan -random -ranees -ranged -ranger -ranges -ranids -ranked -ranker -rankle -rankly -ransom -ranted -ranter -ranula -rarefy -rarely -rarest -rarify -raring -rarity -rascal -rasers -rasher -rashes -rashly -rasing -rasped -rasper -rassle -raster -rasure -ratals -ratans -ratany -ratbag -ratels -raters -rather -ratify -ratine -rating -ration -ratios -ratite -ratlin -ratoon -rattan -ratted -ratten -ratter -rattle -rattly -ratton -raunch -ravage -ravels -ravens -ravers -ravine -raving -ravins -ravish -rawest -rawins -rawish -raxing -rayahs -raying -rayons -razeed -razees -razers -razing -razors -razzed -razzes -reacts -readds -reader -reagin -realer -reales -realia -really -realms -realty -reamed -reamer -reaped -reaper -reared -rearer -rearms -reason -reatas -reaved -reaver -reaves -reavow -rebait -rebars -rebate -rebato -rebbes -rebeck -rebecs -rebels -rebids -rebill -rebind -rebody -reboil -rebook -reboot -rebops -rebore -reborn -rebozo -rebred -rebuff -rebuke -rebury -rebuts -rebuys -recall -recane -recant -recaps -recast -recces -recede -recent -recept -recess -rechew -recipe -recite -recits -recked -reckon -reclad -recoal -recoat -recock -recode -recoil -recoin -recomb -recons -recook -recopy -record -recork -recoup -rectal -rector -rectos -rectum -rectus -recurs -recuse -recuts -redact -redans -redate -redbay -redbud -redbug -redcap -redded -redden -redder -reddle -redear -redeem -redefy -redeny -redeye -redfin -rediae -redial -redias -reding -redips -redipt -redleg -redock -redoes -redone -redons -redout -redowa -redraw -redrew -redtop -redubs -reduce -redyed -redyes -reearn -reecho -reechy -reeded -reedit -reefed -reefer -reeked -reeker -reeled -reeler -reemit -reests -reeved -reeves -reface -refall -refect -refeed -refeel -refell -refels -refelt -refers -reffed -refile -refill -refilm -refind -refine -refire -refits -reflag -reflet -reflew -reflex -reflow -reflux -refold -reform -refuel -refuge -refund -refuse -refute -regain -regale -regard -regave -regear -regent -reggae -regild -regilt -regime -regina -region -regius -regive -reglet -reglow -reglue -regnal -regnum -regret -regrew -regrow -reguli -rehabs -rehang -rehash -rehear -reheat -reheel -rehems -rehire -rehung -reigns -reined -reinks -reived -reiver -reives -reject -rejigs -rejoin -rekeys -reknit -reknot -relace -relaid -reland -relate -relays -relend -relent -relets -releve -relics -relict -relied -relief -relier -relies -reline -relink -relish -relist -relive -reload -reloan -relock -relook -reluct -relume -remade -remail -remain -remake -remand -remans -remaps -remark -remate -remedy -remeet -remelt -remend -remind -remint -remise -remiss -remits -remixt -remold -remora -remote -remove -remuda -renail -rename -rended -render -renege -renest -renews -renigs -renins -rennet -rennin -renown -rental -rented -renter -rentes -renvoi -reoils -reopen -repack -repaid -repair -repand -repark -repass -repast -repave -repays -repeal -repeat -repegs -repels -repent -reperk -repine -repins -replan -replay -repled -replot -replow -repoll -report -repose -repots -repour -repped -repros -repugn -repump -repute -requin -rerack -reread -rerent -rerigs -rerise -reroll -reroof -rerose -reruns -resaid -resail -resale -resawn -resaws -resays -rescue -reseal -reseat -reseau -resect -reseda -reseed -reseek -reseen -resees -resell -resend -resent -resets -resewn -resews -reshes -reship -reshod -reshoe -reshot -reshow -reside -resids -resift -resign -resile -resins -resiny -resist -resite -resits -resize -resoak -resods -resold -resole -resorb -resort -resown -resows -respot -rested -rester -result -resume -retack -retags -retail -retain -retake -retape -reteam -retear -retell -retems -retene -retest -retial -retied -reties -retile -retime -retina -retine -retint -retire -retold -retook -retool -retore -retorn -retort -retral -retrim -retros -retted -retune -return -retuse -retype -reused -reuses -revamp -reveal -revels -reverb -revere -revers -revert -revery -revest -revets -review -revile -revise -revive -revoke -revolt -revote -revues -revved -rewake -reward -rewarm -rewash -rewear -reweds -reweld -rewets -rewind -rewins -rewire -rewoke -reword -rewore -rework -reworn -rewove -rewrap -rexine -rezero -rezone -rhaphe -rhebok -rhemes -rhesus -rhetor -rheums -rheumy -rhinal -rhinos -rhodic -rhombi -rhombs -rhotic -rhumba -rhumbs -rhuses -rhymed -rhymer -rhymes -rhythm -rhyton -rialto -riatas -ribald -riband -ribbed -ribber -ribbon -ribier -riblet -ribose -ricers -richen -richer -riches -richly -ricing -ricins -ricked -rickey -ricrac -rictal -rictus -ridded -ridden -ridder -riddle -rident -riders -ridged -ridgel -ridges -ridgil -riding -ridley -riever -rifely -rifest -riffed -riffle -rifled -rifler -rifles -riflip -rifted -rigged -rigger -righto -rights -righty -rigors -rigour -riling -rilled -rilles -rillet -rimers -rimier -riming -rimmed -rimmer -rimose -rimous -rimple -rinded -ringed -ringer -rinsed -rinser -rinses -riojas -rioted -rioter -ripely -ripens -ripest -riping -ripoff -ripost -ripped -ripper -ripple -ripply -riprap -ripsaw -risers -rishis -rising -risked -risker -risque -ristra -ritard -ritter -ritual -ritzes -rivage -rivals -rivers -rivets -riving -riyals -roadeo -roadie -roamed -roamer -roared -roarer -roasts -robalo -roband -robbed -robber -robbin -robing -robins -robles -robots -robust -rochet -rocked -rocker -rocket -rococo -rodded -rodent -rodeos -rodman -rodmen -rogers -rogued -rogues -roiled -rolfed -rolfer -rolled -roller -romaji -romano -romans -romeos -romped -romper -rondel -rondos -ronion -ronnel -ronyon -roofed -roofer -roofie -rooked -rookie -roomed -roomer -roomie -roosed -rooser -rooses -roosts -rooted -rooter -rootle -ropers -ropery -ropier -ropily -roping -roques -roquet -rosary -roscoe -rosery -rosets -roshis -rosier -rosily -rosing -rosins -rosiny -roster -rostra -rotary -rotate -rotche -rotgut -rotors -rotted -rotten -rotter -rottes -rotund -rouble -rouche -rouens -rouged -rouges -roughs -roughy -rounds -rouped -roupet -roused -rouser -rouses -rousts -routed -router -routes -rouths -rovers -roving -rowans -rowels -rowens -rowers -rowing -rowths -royals -rozzer -ruanas -rubace -rubati -rubato -rubbed -rubber -rubble -rubbly -rubels -rubied -rubier -rubies -rubigo -rubles -ruboff -rubout -rubric -ruched -ruches -rucked -ruckle -ruckus -rudder -ruddle -rudely -rudery -rudest -rueful -ruffed -ruffes -ruffle -ruffly -rufous -rugate -rugged -rugger -rugola -rugosa -rugose -rugous -ruined -ruiner -rulers -rulier -ruling -rumaki -rumbas -rumble -rumbly -rumens -rumina -rummer -rumors -rumour -rumple -rumply -rumpus -rundle -runkle -runlet -runnel -runner -runoff -runout -runway -rupees -rupiah -rurban -rushed -rushee -rusher -rushes -rusine -russet -rusted -rustic -rustle -rutile -rutins -rutted -ryking -ryokan -sabals -sabbat -sabbed -sabers -sabine -sabins -sabirs -sables -sabots -sabras -sabred -sabres -sacbut -sachem -sachet -sacked -sacker -sacque -sacral -sacred -sacrum -sadden -sadder -saddhu -saddle -sadhes -sadhus -sadism -sadist -safari -safely -safest -safety -safrol -sagbut -sagely -sagest -saggar -sagged -sagger -sagier -sahibs -saices -saigas -sailed -sailer -sailor -saimin -sained -saints -saithe -saiyid -sajous -sakers -salaam -salads -salals -salami -salary -saleps -salify -salina -saline -saliva -sallet -sallow -salmis -salmon -salols -salons -saloon -saloop -salpae -salpas -salpid -salsas -salted -salter -saltie -saluki -salute -salved -salver -salves -salvia -salvor -salvos -samara -sambal -sambar -sambas -sambos -sambur -samech -samekh -sameks -samiel -samite -samlet -samosa -sampan -sample -samshu -sancta -sandal -sanded -sander -sandhi -sanely -sanest -sangar -sangas -sanger -sanghs -sanies -saning -sanity -sanjak -sannop -sannup -sansar -sansei -santir -santol -santos -santur -sapors -sapota -sapote -sapour -sapped -sapper -sarans -sarape -sardar -sarees -sarges -sargos -sarins -sarode -sarods -sarong -sarsar -sarsen -sartor -sashay -sashed -sashes -sasins -sassed -sasses -satang -satara -satays -sateen -sating -satins -satiny -satire -satori -satrap -satyrs -sauced -saucer -sauces -sauchs -sauger -saughs -saughy -saults -saunas -saurel -sauted -sautes -savage -savant -savate -savers -savine -saving -savins -savior -savors -savory -savour -savoys -sawers -sawfly -sawing -sawlog -sawney -sawyer -saxony -sayeds -sayers -sayest -sayids -saying -sayyid -scabby -scalar -scalds -scaled -scaler -scales -scalls -scalps -scampi -scamps -scants -scanty -scaped -scapes -scarab -scarce -scared -scarer -scares -scarey -scarfs -scarph -scarps -scarry -scarts -scathe -scatts -scatty -scaups -scaurs -scenas -scends -scenes -scenic -scents -schavs -schema -scheme -schism -schist -schizo -schizy -schlep -schlub -schmoe -schmos -schnoz -school -schorl -schrik -schrod -schtik -schuit -schuln -schuls -schuss -schwas -scilla -scions -sclaff -sclera -scoffs -scolds -scolex -sconce -scones -scooch -scoops -scoots -scoped -scopes -scorch -scored -scorer -scores -scoria -scorns -scotch -scoter -scotia -scours -scouse -scouth -scouts -scowed -scowls -scrags -scrams -scrape -scraps -scrawl -screak -scream -screed -screen -screes -screws -screwy -scribe -scried -scries -scrimp -scrims -scrips -script -scrive -scrods -scroll -scroop -scrota -scrubs -scruff -scrums -scubas -scuffs -sculch -sculks -sculls -sculps -sculpt -scummy -scurfs -scurfy -scurry -scurvy -scutch -scutes -scutum -scuzzy -scyphi -scythe -seabag -seabed -seadog -sealed -sealer -seaman -seamed -seamen -seamer -seance -search -seared -searer -season -seated -seater -seawan -seaway -sebums -secant -seccos -secede -secern -second -secpar -secret -sector -secund -secure -sedans -sedate -seders -sedges -sedile -seduce -sedums -seeded -seeder -seeing -seeker -seeled -seemed -seemer -seemly -seeped -seesaw -seethe -seggar -segnos -segued -segues -seiche -seidel -seined -seiner -seines -seised -seiser -seises -seisin -seisms -seisor -seitan -seized -seizer -seizes -seizin -seizor -sejant -selahs -seldom -select -selfed -selkie -seller -selles -selsyn -selvas -selves -sememe -semple -sempre -senary -senate -sendal -sended -sender -sendup -seneca -senega -senhor -senile -senior -seniti -sennas -sennet -sennit -senora -senors -senryu -sensed -sensei -senses -sensor -sensum -sentry -sepals -sepias -sepoys -sepses -sepsis -septal -septet -septic -septum -sequel -sequin -seracs -serail -serais -serape -seraph -serdab -serein -serene -serest -serged -serger -serges -serial -series -serifs -serine -sering -serins -sermon -serosa -serous -serows -serums -serval -served -server -serves -servos -sesame -sestet -setoff -setons -setose -setous -setout -settee -setter -settle -setups -sevens -severe -severs -sewage -sewans -sewars -sewers -sewing -shabby -shacko -shacks -shaded -shader -shades -shadow -shaduf -shafts -shaggy -shaird -shairn -shaken -shaker -shakes -shakos -shaled -shales -shaley -shalom -shaman -shamas -shamed -shames -shammy -shamos -shamoy -shamus -shandy -shanks -shanny -shanti -shanty -shaped -shapen -shaper -shapes -shards -shared -sharer -shares -sharia -sharif -sharks -sharns -sharny -sharps -sharpy -shaugh -shauls -shaved -shaven -shaver -shaves -shavie -shawed -shawls -shawms -shazam -sheafs -sheals -shears -sheath -sheave -sheens -sheeny -sheers -sheesh -sheets -sheeve -sheikh -sheiks -sheila -shekel -shells -shelly -shelta -shelty -shelve -shelvy -shends -sheols -sheqel -sherds -sherif -sherpa -sherry -sheuch -sheugh -shewed -shewer -shibah -shield -shiels -shiers -shiest -shifts -shifty -shikar -shiksa -shikse -shills -shimmy -shindy -shined -shiner -shines -shinny -shires -shirks -shirrs -shirts -shirty -shists -shivah -shivas -shiver -shives -shlepp -shleps -shlock -shlubs -shlump -shmear -shmoes -shmuck -shnaps -shnook -shoals -shoaly -shoats -shocks -shoddy -shoers -shofar -shogis -shogun -shojis -sholom -shooed -shooks -shools -shoots -shoppe -shoran -shored -shores -shorls -shorts -shorty -shotes -shotts -should -shouts -shoved -shovel -shover -shoves -showed -shower -shoyus -shrank -shreds -shrewd -shrews -shriek -shrift -shrike -shrill -shrimp -shrine -shrink -shrive -shroff -shroud -shrove -shrubs -shrugs -shrunk -shtetl -shtick -shtiks -shucks -shunts -shuted -shutes -shyers -shyest -shying -sialic -sialid -sibyls -siccan -sicced -sicked -sickee -sicken -sicker -sickie -sickle -sickly -sickos -siddur -siding -sidled -sidler -sidles -sieged -sieges -sienna -sierra -siesta -sieurs -sieved -sieves -sifaka -sifted -sifter -sighed -sigher -sights -sigils -sigloi -siglos -siglum -sigmas -signal -signed -signee -signer -signet -signor -silage -silane -sileni -silent -silica -silked -silken -silkie -siller -siloed -silted -silvae -silvan -silvas -silver -silvex -simars -simian -simile -simlin -simmer -simnel -simony -simoom -simoon -simper -simple -simply -sinews -sinewy -sinful -singed -singer -singes -single -singly -sinker -sinned -sinner -sinter -siphon -siping -sipped -sipper -sippet -sirdar -sirees -sirens -siring -sirrah -sirras -sirree -sirups -sirupy -sisals -siskin -sisses -sister -sistra -sitars -sitcom -siting -sitten -sitter -situps -sivers -sixmos -sixtes -sixths -sizars -sizers -sizier -sizing -sizzle -skalds -skated -skater -skates -skatol -skeane -skeans -skeens -skeets -skeigh -skeins -skells -skelms -skelps -skenes -skerry -sketch -skewed -skewer -skibob -skiddy -skidoo -skiers -skiffs -skiing -skills -skimos -skimps -skimpy -skinks -skinny -skirls -skirrs -skirts -skited -skites -skived -skiver -skives -skivvy -sklent -skoals -skorts -skulks -skulls -skunks -skunky -skybox -skycap -skying -skylit -skyman -skymen -skyway -slacks -slaggy -slaked -slaker -slakes -slalom -slangs -slangy -slants -slanty -slatch -slated -slater -slates -slatey -slaved -slaver -slaves -slavey -slayed -slayer -sleave -sleaze -sleazo -sleazy -sledge -sleeks -sleeky -sleeps -sleepy -sleets -sleety -sleeve -sleigh -sleuth -slewed -sliced -slicer -slices -slicks -slider -slides -sliest -slieve -slight -slimed -slimes -slimly -slimsy -slings -slinks -slinky -sliped -slipes -slippy -slipup -slitty -sliver -slobby -slogan -sloids -slojds -sloops -sloped -sloper -slopes -sloppy -sloshy -sloths -slouch -slough -sloven -slowed -slower -slowly -sloyds -sludge -sludgy -sluffs -sluice -sluicy -sluing -slummy -slumps -slurbs -slurps -slurry -slushy -slyest -slypes -smacks -smalls -smalti -smalto -smalts -smarms -smarmy -smarts -smarty -smazes -smears -smeary -smeeks -smegma -smells -smelly -smelts -smerks -smidge -smilax -smiled -smiler -smiles -smiley -smirch -smirks -smirky -smiter -smites -smiths -smithy -smocks -smoggy -smoked -smoker -smokes -smokey -smolts -smooch -smoosh -smooth -smudge -smudgy -smugly -smutch -smutty -snacks -snafus -snaggy -snails -snaked -snakes -snakey -snappy -snared -snarer -snares -snarfs -snarks -snarky -snarls -snarly -snatch -snathe -snaths -snawed -snazzy -sneaks -sneaky -sneaps -snecks -sneers -sneery -sneesh -sneeze -sneezy -snells -snicks -snider -sniffs -sniffy -sniped -sniper -snipes -snippy -snitch -snivel -snobby -snoods -snooks -snools -snoops -snoopy -snoots -snooty -snooze -snoozy -snored -snorer -snores -snorts -snotty -snouts -snouty -snowed -snubby -snuffs -snuffy -snugly -soaked -soaker -soaped -soaper -soared -soarer -soaves -sobbed -sobber -sobeit -sobers -sobful -socage -soccer -social -socked -socket -socles -socman -socmen -sodded -sodden -sodium -soever -sofars -soffit -softas -soften -softer -softie -softly -sogged -soigne -soiled -soiree -sokols -solace -soland -solano -solans -solate -soldan -solder -solely -solemn -soleus -solgel -solidi -solids -soling -solion -soloed -solons -solums -solute -solved -solver -solves -somans -somata -somber -sombre -somite -somoni -sonant -sonars -sonata -sonder -sondes -sonics -sonnet -sonsie -sooner -sooted -soothe -sooths -sopite -sopors -sopped -sorbed -sorbet -sorbic -sordid -sordor -sorels -sorely -sorest -sorgho -sorgos -soring -sorned -sorner -sorrel -sorrow -sorted -sorter -sortie -sotols -sotted -souari -soucar -soudan -soughs -sought -souled -sounds -souped -source -soured -sourer -sourly -soused -souses -souter -souths -soviet -sovran -sowans -sowars -sowcar -sowens -sowers -sowing -sozine -sozins -spaced -spacer -spaces -spacey -spaded -spader -spades -spadix -spahee -spahis -spails -spaits -spales -spalls -spanks -spared -sparer -spares -sparge -sparid -sparks -sparky -sparry -sparse -spasms -spates -spathe -spavie -spavin -spawns -spayed -speaks -speans -spears -specie -specks -speech -speedo -speeds -speedy -speels -speers -speils -speirs -speise -speiss -spells -spelts -speltz -spence -spends -spendy -spense -spewed -spewer -sphene -sphere -sphery -sphinx -sphynx -spicae -spicas -spiced -spicer -spices -spicey -spicks -spider -spiels -spiers -spiffs -spiffy -spigot -spiked -spiker -spikes -spikey -spiled -spiles -spills -spilth -spinal -spined -spinel -spines -spinet -spinny -spinor -spinto -spiral -spirea -spired -spirem -spires -spirit -spirts -spital -spited -spites -spivvy -splake -splash -splats -splays -spleen -splent -splice -spliff -spline -splint -splits -splore -splosh -spodes -spoils -spoilt -spoked -spoken -spokes -sponge -spongy -spoofs -spoofy -spooks -spooky -spools -spoons -spoony -spoors -sporal -spored -spores -sports -sporty -spotty -spouse -spouts -sprags -sprain -sprang -sprats -sprawl -sprays -spread -sprees -sprent -sprier -sprigs -spring -sprint -sprite -sprits -spritz -sprout -spruce -sprucy -sprues -sprugs -sprung -spryer -spryly -spuing -spumed -spumes -spunks -spunky -spurge -spurns -spurry -spying -squabs -squads -squall -squama -square -squark -squash -squats -squawk -squaws -squeak -squeal -squegs -squibs -squids -squill -squint -squire -squirm -squirt -squish -squush -sradha -stable -stably -stacks -stacte -stades -stadia -staffs -staged -stager -stages -stagey -staggy -staigs -stains -stairs -staked -stakes -stalag -staled -staler -stales -stalks -stalky -stalls -stamen -stamps -stance -stanch -stands -staned -stanes -stangs -stanks -stanol -stanza -stapes -staphs -staple -starch -stared -starer -stares -starry -starts -starve -stases -stasis -statal -stated -stater -states -static -statin -stator -statue -status -staved -staves -stayed -stayer -steads -steady -steaks -steals -steams -steamy -steeds -steeks -steels -steely -steeps -steers -steeve -steins -stelae -stelai -stelar -steles -stelic -stella -stemma -stemmy -stench -stenos -stents -steppe -stereo -steres -steric -sterna -sterns -sterol -stewed -stichs -sticks -sticky -stiffs -stifle -stigma -stiles -stills -stilly -stilts -stimes -stingo -stings -stingy -stinko -stinks -stinky -stints -stiped -stipel -stipes -stirks -stirps -stitch -stithy -stiver -stoats -stocks -stocky -stodge -stodgy -stogey -stogie -stoics -stoked -stoker -stokes -stoled -stolen -stoles -stolid -stolon -stomal -stomas -stomps -stoned -stoner -stones -stoney -stooge -stooks -stools -stoops -stoped -stoper -stopes -storax -stored -storer -stores -storey -storks -storms -stormy -stotin -stotts -stound -stoups -stoure -stours -stoury -stouts -stover -stoves -stowed -stowps -strafe -strain -strait -strake -strand -strang -straps -strass -strata -strath -strati -straws -strawy -strays -streak -stream -streek -streel -street -streps -stress -strewn -strews -striae -strick -strict -stride -strife -strike -string -stripe -strips -stript -stripy -strive -strobe -strode -stroke -stroll -stroma -strong -strook -strops -stroud -strove -strown -strows -stroys -struck -struma -strums -strung -strunt -struts -stubby -stucco -studio -studly -stuffs -stuffy -stulls -stumps -stumpy -stunts -stupas -stupes -stupor -sturdy -sturts -stying -stylar -styled -styler -styles -stylet -stylus -stymie -styrax -suable -suably -suaver -subahs -subbed -subdeb -subdue -subers -subfix -subgum -subito -sublet -sublot -submit -subnet -suborn -subpar -subsea -subset -subtle -subtly -suburb -subway -succah -succor -sucres -sudary -sudden -sudors -sudsed -sudser -sudses -sueded -suedes -suffer -suffix -sugars -sugary -sughed -suints -suited -suiter -suites -suitor -sukkah -sukkot -sulcal -sulcus -suldan -sulfas -sulfid -sulfur -sulked -sulker -sullen -sulpha -sultan -sultry -sumach -sumacs -summae -summas -summed -summer -summit -summon -sunbow -sundae -sunder -sundew -sundog -sundry -sunken -sunket -sunlit -sunnah -sunnas -sunned -sunray -sunset -suntan -sunups -superb -supers -supine -supped -supper -supple -supply -surahs -surely -surest -surety -surfed -surfer -surged -surger -surges -surimi -surras -surrey -surtax -survey -sushis -suslik -sussed -susses -sutler -sutras -suttas -suttee -suture -svaraj -svelte -swabby -swaged -swager -swages -swails -swains -swales -swamis -swamps -swampy -swanks -swanky -swanny -swaraj -swards -swarfs -swarms -swarth -swarty -swatch -swathe -swaths -swayed -swayer -swears -sweats -sweaty -swedes -sweeny -sweeps -sweepy -sweets -swells -swerve -sweven -swifts -swills -swimmy -swinge -swings -swingy -swinks -swiped -swipes -swiple -swirls -swirly -swishy -switch -swithe -swived -swivel -swives -swivet -swoons -swoony -swoops -swoopy -swoosh -swords -swound -swouns -syboes -sycees -sylphs -sylphy -sylvae -sylvan -sylvas -sylvin -symbol -synced -synchs -syncom -syndet -syndic -syngas -synods -syntax -synths -synura -sypher -syphon -syrens -syrinx -syrups -syrupy -sysops -system -syzygy -tabard -tabbed -tabbis -tabers -tablas -tabled -tables -tablet -taboos -tabors -tabour -tabued -tabuli -tabuns -taches -tacked -tacker -tacket -tackey -tackle -tactic -taenia -taffia -tafias -tagged -tagger -tagrag -tahini -tahsil -taigas -tailed -tailer -taille -tailor -taints -taipan -takahe -takers -takeup -taking -takins -talars -talced -talcky -talcum -talent -talers -talion -talked -talker -talkie -taller -tallis -tallit -tallol -tallow -talons -taluka -taluks -tamale -tamals -tamari -tambac -tambak -tambur -tamein -tamely -tamers -tamest -taming -tammie -tampan -tamped -tamper -tampon -tandem -tanged -tangle -tangly -tangos -tanist -tankas -tanked -tanker -tanned -tanner -tannic -tannin -tannoy -tanrec -tantra -tanuki -tapalo -tapers -tapeta -taping -tapirs -tapped -tapper -tappet -tarama -targes -target -tariff -taring -tarmac -tarnal -tarocs -taroks -tarots -tarpan -tarpon -tarred -tarres -tarsal -tarsia -tarsus -tartan -tartar -tarted -tarter -tartly -tarzan -tasked -tassel -tasses -tasset -tassie -tasted -taster -tastes -tatami -tatars -taters -tatsoi -tatted -tatter -tattie -tattle -tattoo -taught -taunts -tauons -taupes -tauted -tauten -tauter -tautly -tautog -tavern -tawdry -tawers -tawing -tawney -tawpie -tawsed -tawses -taxeme -taxers -taxied -taxies -taxing -taxite -taxman -taxmen -taxols -taxons -tazzas -teabox -teacup -teamed -teapot -teapoy -teared -tearer -teased -teasel -teaser -teases -teated -teazel -teazle -teched -techie -techno -tectal -tectum -tedded -tedder -tedium -teeing -teemed -teemer -teener -teensy -teepee -teeter -teethe -teflon -tegmen -teguas -teiids -teinds -tekkie -telcos -teledu -telega -telfer -telial -telium -teller -tellys -telnet -telome -telson -temped -tempeh -temper -temple -tempos -tempts -tenace -tenail -tenant -tended -tender -tendon -tendus -tenets -teniae -tenias -tenner -tennis -tenons -tenors -tenour -tenpin -tenrec -tensed -tenser -tenses -tensor -tented -tenter -tenths -tentie -tenues -tenuis -tenure -tenuti -tenuto -teopan -tepals -tepees -tepefy -tephra -tepoys -terais -teraph -terbia -terbic -tercel -terces -tercet -teredo -terete -tergal -tergum -termed -termer -termly -termor -ternes -terrae -terras -terret -territ -terror -terser -teslas -testae -tested -testee -tester -testes -testis -teston -tetany -tetchy -tether -tetrad -tetras -tetris -tetryl -tetter -tewing -thacks -thairm -thaler -thalli -thanes -thanks -tharms -thatch -thawed -thawer -thebes -thecae -thecal -thefts -thegns -theine -theins -theirs -theism -theist -themed -themes -thenal -thenar -thence -theory -theres -therme -therms -theses -thesis -thesps -thetas -thetic -thicks -thieve -thighs -thills -things -thinks -thinly -thiols -thiram -thirds -thirls -thirst -thirty -tholed -tholes -tholoi -tholos -thongs -thorax -thoria -thoric -thorns -thorny -thoron -thorpe -thorps -thoued -though -thrall -thrash -thrave -thrawn -thraws -thread -threap -threat -threep -threes -thresh -thrice -thrift -thrill -thrips -thrive -throat -throbs -throes -throne -throng -throve -thrown -throws -thrums -thrush -thrust -thujas -thulia -thumbs -thumps -thunks -thurls -thusly -thuyas -thwack -thwart -thymes -thymey -thymic -thymol -thymus -thyrse -thyrsi -tiaras -tibiae -tibial -tibias -ticals -ticced -ticked -ticker -ticket -tickle -tictac -tictoc -tidbit -tiddly -tidied -tidier -tidies -tidily -tiding -tieing -tiepin -tierce -tiered -tiffed -tiffin -tigers -tights -tiglon -tigons -tikkas -tilaks -tildes -tilers -tiling -tilled -tiller -tilted -tilter -tilths -timbal -timber -timbre -timely -timers -timing -tincal -tincts -tinder -tineal -tineas -tineid -tinful -tinged -tinges -tingle -tingly -tinier -tinily -tining -tinker -tinkle -tinkly -tinman -tinmen -tinned -tinner -tinpot -tinsel -tinted -tinter -tipcat -tipoff -tipped -tipper -tippet -tipple -tiptoe -tiptop -tirade -tiring -tirled -tisane -tissue -titans -tmeses -tmesis -toasts -toasty -tobies -tocher -tocsin -todays -toddle -todies -toecap -toeing -toffee -togaed -togate -togged -toggle -togues -toiled -toiler -toiles -toited -tokays -tokens -tokers -toking -tolane -tolans -tolars -toledo -toling -tolled -toller -toluic -toluid -toluol -toluyl -tolyls -tomans -tomato -tombac -tombak -tombal -tombed -tomboy -tomcat -tomcod -tommed -tomtit -tondos -toneme -toners -tongas -tonged -tonger -tongue -tonics -tonier -toning -tonish -tonlet -tonner -tonnes -tonsil -tooled -tooler -toonie -tooted -tooter -tooths -toothy -tootle -tootsy -topees -topers -topful -tophes -tophus -topics -toping -topped -topper -topple -toques -toquet -torahs -torchy -torero -torics -tories -toroid -torose -toroth -torous -torpid -torpor -torque -torrid -torses -torsks -torsos -tortas -torten -tortes -torula -toshes -tossed -tosser -tosses -tossup -totals -totems -toters -tother -toting -totted -totter -toucan -touche -touchy -toughs -toughy -toupee -toured -tourer -toused -touses -tousle -touted -touter -touzle -towage -toward -towels -towers -towery -towhee -towies -towing -townee -townie -toxics -toxine -toxins -toxoid -toyers -toying -toyish -toyons -traced -tracer -traces -tracks -tracts -traded -trader -trades -tragic -tragus -traiks -trails -trains -traits -tramel -tramps -trampy -trance -tranks -tranny -tranqs -trapan -trapes -trashy -trauma -travel -traves -trawls -treads -treats -treaty -treble -trebly -treens -trefah -tremor -trench -trends -trendy -trepan -trepid -tressy -trevet -triacs -triads -triage -trials -tribal -tribes -triced -tricep -trices -tricks -tricky -tricot -triene -triens -triers -trifid -trifle -trigly -trigon -trigos -trijet -trikes -trilby -trills -trimer -trimly -trinal -trined -trines -triode -triols -triose -tripes -triple -triply -tripod -tripos -trippy -triste -triter -triton -triune -trivet -trivia -troaks -trocar -troche -trocks -trogon -troika -troked -trokes -trolls -trolly -trompe -tromps -tronas -trones -troops -tropes -trophy -tropic -tropin -troths -trotyl -trough -troupe -trouts -trouty -trover -troves -trowed -trowel -trowth -truant -truced -truces -trucks -trudge -truest -truffe -truing -truism -trulls -trumps -trunks -trusts -trusty -truths -trying -tryout -tryste -trysts -tsades -tsadis -tsetse -tsking -tsktsk -tsores -tsoris -tsuris -tubate -tubbed -tubber -tubers -tubful -tubing -tubist -tubule -tuchun -tucked -tucker -tucket -tuffet -tufoli -tufted -tufter -tugged -tugger -tugrik -tuille -tuladi -tulips -tulles -tumble -tumefy -tumors -tumour -tumped -tumuli -tumult -tundra -tuners -tuneup -tunica -tunics -tuning -tunned -tunnel -tupelo -tupiks -tupped -tuques -turaco -turban -turbid -turbit -turbos -turbot -tureen -turfed -turgid -turgor -turion -turkey -turned -turner -turnip -turnon -turnup -turret -turtle -turves -tusche -tushed -tushes -tushie -tusked -tusker -tussah -tussal -tussar -tusseh -tusser -tusses -tussis -tussle -tussor -tussur -tutees -tutors -tutted -tuttis -tutued -tuxedo -tuyere -tuyers -twains -twangs -twangy -twanky -tweaks -tweaky -tweeds -tweedy -tweens -tweeny -tweets -tweeze -twelve -twenty -twerps -twibil -twiers -twiggy -twilit -twills -twined -twiner -twines -twinge -twirls -twirly -twirps -twists -twisty -twitch -twofer -twyers -tycoon -tymbal -tympan -tyning -typhon -typhus -typier -typify -typing -typist -tyrant -tyring -tythed -tythes -tzetze -tzuris -uakari -ubiety -ubique -udders -uglier -uglies -uglify -uglily -ugsome -uhlans -ukases -ulamas -ulcers -ulemas -ullage -ulster -ultima -ultimo -ultras -umamis -umbels -umbers -umbles -umbrae -umbral -umbras -umiack -umiacs -umiaks -umiaqs -umlaut -umping -umpire -unable -unaged -unakin -unarms -unawed -unaxed -unbale -unbans -unbars -unbear -unbelt -unbend -unbent -unbind -unbolt -unborn -unbred -unbusy -uncage -uncake -uncaps -uncase -uncast -unchic -unciae -uncial -uncini -unclad -uncles -unclip -unclog -uncoil -uncool -uncork -uncuff -uncurb -uncurl -uncute -undead -undies -undine -undock -undoer -undoes -undone -undraw -undrew -unduly -undyed -unease -uneasy -uneven -unfair -unfelt -unfits -unfixt -unfold -unfond -unfree -unfurl -ungird -ungirt -unglue -ungual -ungues -unguis -ungula -unhair -unhand -unhang -unhats -unhelm -unhewn -unholy -unhood -unhook -unhung -unhurt -unhusk -unific -unions -unipod -unique -unisex -unison -united -uniter -unites -unjams -unjust -unkend -unkent -unkept -unkind -unkink -unknit -unknot -unlace -unlade -unlaid -unlash -unlays -unlead -unless -unlike -unlink -unlive -unload -unlock -unmade -unmake -unmans -unmask -unmeet -unmesh -unmews -unmixt -unmold -unmoor -unmown -unnail -unopen -unpack -unpaid -unpegs -unpens -unpent -unpick -unpile -unpins -unplug -unpure -unread -unreal -unreel -unrent -unrest -unrigs -unripe -unrips -unrobe -unroll -unroof -unroot -unrove -unruly -unsafe -unsaid -unsawn -unsays -unseal -unseam -unseat -unseen -unsell -unsent -unsets -unsewn -unsews -unsexy -unshed -unship -unshod -unshut -unsnag -unsnap -unsold -unsown -unspun -unstep -unstop -unsung -unsunk -unsure -untack -untame -untidy -untied -unties -untold -untorn -untrim -untrod -untrue -untuck -untune -unused -unveil -unvext -unwary -unwell -unwept -unwind -unwise -unwish -unwits -unworn -unwove -unwrap -unyoke -unzips -upases -upbear -upbeat -upbind -upboil -upbore -upbows -upcast -upcoil -upcurl -updart -update -updive -updove -upends -upflow -upfold -upgaze -upgird -upgirt -upgrew -upgrow -upheap -upheld -uphill -uphold -uphove -uphroe -upkeep -upland -upleap -uplift -uplink -upload -upmost -uppers -uppile -upping -uppish -uppity -upprop -uprate -uprear -uprise -uproar -uproot -uprose -uprush -upsend -upsent -upsets -upshot -upside -upsize -upsoar -upstep -upstir -uptake -uptalk -uptear -uptick -uptilt -uptime -uptore -uptorn -uptoss -uptown -upturn -upwaft -upward -upwell -upwind -uracil -uraeus -urania -uranic -uranyl -urares -uraris -urases -urates -uratic -urbane -urbias -urchin -urease -uredia -uredos -ureide -uremia -uremic -ureter -uretic -urgent -urgers -urging -urials -urinal -urines -uropod -urping -ursids -ursine -urtext -uruses -usable -usably -usages -usance -useful -ushers -usneas -usques -usuals -usurer -usurps -uterus -utmost -utopia -utters -uveous -uvulae -uvular -uvulas -vacant -vacate -vacuum -vadose -vagary -vagile -vagrom -vaguer -vahine -vailed -vainer -vainly -vakeel -vakils -valets -valgus -valine -valise -valkyr -valley -valors -valour -valses -valued -valuer -values -valuta -valval -valvar -valved -valves -vamose -vamped -vamper -vandal -vandas -vanish -vanity -vanman -vanmen -vanned -vanner -vapors -vapory -vapour -varias -varied -varier -varies -varlet -varnas -varoom -varved -varves -vassal -vaster -vastly -vatful -vatted -vaults -vaulty -vaunts -vaunty -vaward -vealed -vealer -vector -veejay -veenas -veepee -veered -vegans -vegete -vegged -veggie -vegies -veiled -veiler -veinal -veined -veiner -velars -velate -velcro -veldts -vellum -veloce -velour -velure -velvet -vended -vendee -vender -vendor -vendue -veneer -venene -venery -venged -venges -venial -venine -venins -venire -venoms -venose -venous -vented -venter -venues -venule -verbal -verbid -verdin -verged -verger -verges -verier -verify -verily -verism -verist -verite -verity -vermes -vermin -vermis -vernal -vernix -versal -versed -verser -verses -verset -versos -verste -versts -versus -vertex -vertus -verves -vervet -vesica -vesper -vespid -vessel -vestal -vestas -vested -vestee -vestry -vetoed -vetoer -vetoes -vetted -vetter -vexers -vexils -vexing -viable -viably -vialed -viands -viatic -viator -vibist -vibrio -vicars -vicing -victim -victor -vicuna -videos -viewed -viewer -vigias -vigils -vigors -vigour -viking -vilely -vilest -vilify -villae -villas -villus -vimina -vinals -vincas -vineal -vinery -vinier -vinify -vining -vinous -vinyls -violas -violet -violin -vipers -virago -vireos -virgas -virgin -virile -virion -viroid -virtue -virtus -visaed -visage -visard -viscid -viscus -viseed -vising -vision -visits -visive -visors -vistas -visual -vitals -vitric -vittae -vittle -vivace -vivary -vivers -vivify -vixens -vizard -vizier -vizirs -vizors -vizsla -vocabs -vocals -vodkas -vodoun -vodous -voduns -vogued -voguer -vogues -voiced -voicer -voices -voided -voider -voiles -volant -volery -voling -volley -volost -voltes -volume -volute -volvas -volvox -vomers -vomica -voodoo -vortex -votary -voters -voting -votive -voudon -vowels -vowers -vowing -voyage -voyeur -vrooms -vrouws -vulgar -vulgus -vulvae -vulval -vulvar -vulvas -wabble -wabbly -wacker -wackes -wackos -wadded -wadder -waddie -waddle -waddly -waders -wadies -wading -wadmal -wadmel -wadmol -wadset -waeful -wafers -wafery -waffed -waffie -waffle -waffly -wafted -wafter -wagers -wagged -wagger -waggle -waggly -waggon -waging -wagons -wahine -wahoos -waifed -wailed -wailer -waired -waists -waited -waiter -waived -waiver -waives -wakame -wakens -wakers -wakiki -waking -walers -walies -waling -walked -walker -walkup -wallah -wallas -walled -wallet -wallie -wallop -wallow -walnut -walrus -wamble -wambly -wammus -wampum -wampus -wander -wandle -wangan -wangle -wangun -wanier -waning -wanion -wanned -wanner -wanted -wanter -wanton -wapiti -wapped -warble -warded -warden -warder -warier -warily -waring -warked -warmed -warmer -warmly -warmth -warmup -warned -warner -warped -warper -warred -warren -warsaw -warsle -warted -wasabi -washed -washer -washes -washup -wasted -waster -wastes -wastry -watape -wataps -waters -watery -watter -wattle -waucht -waught -wauked -wauled -wavers -wavery -waveys -wavier -wavies -wavily -waving -wawled -waxers -waxier -waxily -waxing -waylay -wazoos -weaken -weaker -weakly -weakon -wealds -wealth -weaned -weaner -weapon -wearer -weasel -weason -weaved -weaver -weaves -webbed -webcam -webers -webfed -weblog -wechts -wedded -wedder -wedeln -wedels -wedged -wedges -wedgie -weeded -weeder -weekly -weened -weenie -weensy -weeper -weepie -weeted -weever -weevil -weewee -weighs -weight -weiner -weirdo -weirds -weirdy -welded -welder -weldor -welkin -welled -wellie -welted -welter -wended -weskit -wester -wether -wetted -wetter -whacko -whacks -whacky -whaled -whaler -whales -whammo -whammy -whangs -wharfs -wharve -whaups -wheals -wheats -wheels -wheens -wheeps -wheeze -wheezy -whelks -whelky -whelms -whelps -whenas -whence -wheres -wherry -wherve -wheyey -whidah -whiffs -whiled -whiles -whilom -whilst -whimsy -whined -whiner -whines -whiney -whinge -whinny -whippy -whirls -whirly -whirrs -whirry -whisht -whisks -whisky -whists -whited -whiten -whiter -whites -whitey -whizzy -wholes -wholly -whomps -whomso -whoofs -whoops -whoosh -whored -whores -whorls -whorts -whosis -whumps -whydah -wiccan -wiccas -wiches -wicked -wicker -wicket -wicopy -widder -widdie -widdle -widely -widens -widest -widget -widish -widows -widths -wields -wieldy -wiener -wienie -wifely -wifeys -wifing -wigans -wigeon -wigged -wiggle -wiggly -wights -wiglet -wigwag -wigwam -wikiup -wilded -wilder -wildly -wilful -wilier -wilily -wiling -willed -willer -willet -willie -willow -wilted -wimble -wimmin -wimped -wimple -winced -wincer -winces -wincey -winded -winder -windle -window -windup -winery -winged -winger -winier -wining -winish -winked -winker -winkle -winned -winner -winnow -winoes -winter -wintle -wintry -winzes -wipers -wiping -wirers -wirier -wirily -wiring -wisdom -wisely -wisent -wisest -wished -wisher -wishes -wising -wisped -wissed -wisses -wisted -witans -witchy -withal -withed -wither -withes -within -witing -witney -witted -wittol -wivern -wivers -wiving -wizard -wizens -wizzen -wizzes -woaded -woalds -wobble -wobbly -wodges -woeful -wolfed -wolfer -wolver -wolves -womans -wombat -wombed -womera -wonder -wonned -wonner -wonted -wonton -wooded -wooden -woodie -woodsy -wooers -woofed -woofer -wooing -wooled -woolen -wooler -woolie -woolly -worded -worked -worker -workup -worlds -wormed -wormer -wormil -worrit -worsen -worser -worses -worset -worsts -worths -worthy -wotted -wounds -wovens -wowing -wowser -wracks -wraith -wrangs -wrasse -wraths -wrathy -wreaks -wreath -wrecks -wrench -wrests -wretch -wricks -wriest -wright -wrings -wrists -wristy -writer -writes -writhe -wrongs -wryest -wrying -wursts -wurzel -wusses -wuther -wyches -wyling -wyting -wyvern -xebecs -xenial -xenias -xenons -xylans -xylems -xylene -xyloid -xylols -xylose -xylyls -xyster -xystoi -xystos -xystus -yabber -yabbie -yachts -yacked -yaffed -yagers -yahoos -yairds -yakked -yakker -yakuza -yamens -yammer -yamuns -yanked -yanqui -yantra -yapock -yapoks -yapons -yapped -yapper -yarded -yarder -yarely -yarest -yarned -yarner -yarrow -yasmak -yatter -yauped -yauper -yaupon -yautia -yawing -yawled -yawned -yawner -yawped -yawper -yclept -yeaned -yearly -yearns -yeasts -yeasty -yecchs -yeelin -yelled -yeller -yellow -yelped -yelper -yenned -yentas -yentes -yeoman -yeomen -yerbas -yerked -yessed -yesses -yester -yeuked -yields -yipped -yippee -yippie -yirred -yirths -yobbos -yocked -yodels -yodled -yodler -yodles -yogees -yogini -yogins -yogurt -yoicks -yokels -yoking -yolked -yonder -yonker -youngs -youpon -youths -yowies -yowing -yowled -yowler -yttria -yttric -yuccas -yucked -yukked -yulans -yupons -yuppie -yutzes -zaddik -zaffar -zaffer -zaffir -zaffre -zaftig -zagged -zaikai -zaires -zamias -zanana -zander -zanier -zanies -zanily -zanzas -zapped -zapper -zareba -zariba -zayins -zazens -zealot -zeatin -zebeck -zebecs -zebras -zechin -zenana -zenith -zephyr -zeroed -zeroes -zeroth -zested -zester -zeugma -zibeth -zibets -zigged -zigzag -zillah -zinced -zincic -zincky -zinebs -zinged -zinger -zinnia -zipped -zipper -zirams -zircon -zither -zizith -zizzle -zlotys -zoaria -zocalo -zodiac -zoecia -zoftig -zombie -zombis -zonary -zonate -zoners -zoning -zonked -zonula -zonule -zooids -zooier -zoomed -zoonal -zooned -zorils -zoster -zouave -zounds -zoysia -zydeco -zygoid -zygoma -zygose -zygote -zymase \ No newline at end of file diff --git a/pages/post.php b/pages/post.php index fd826a5..121435a 100755 --- a/pages/post.php +++ b/pages/post.php @@ -21,7 +21,9 @@ if (!defined('S_INCLUDE_FILE')) {define('S_INCLUDE_FILE',1);} require('headerproc.php'); -require('includes/securimage/securimage.php'); + +include('includes/recaptchalib.php'); +$privatekey = "6LfgvgEAAAAAAD0_UVLp57MU7tqcypsbZPS9qTnr"; if (!isset($_POST['id'])) { @@ -39,11 +41,10 @@ if (!isset($_POST['id'])) } else { if (preg_match('/^[A-Za-z0-9!#$&\'*+-\/=?^_`{|}~]+@[-A-Za-z0-9]+(\.[-A-Za-z0-9]+)+[A-Za-z]$/', $_POST['email'])) { - $img = new Securimage; - - if ($img->check($_POST['code']) == false) + $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); + if (!$resp->is_valid) { - die('The CAPTCHA wasn\'t entered correctly. Go back and try it again.'); + die('The reCAPTCHA wasn\'t entered correctly. Go back and try it again.'); } else { $getanon = "SELECT * FROM anon_commenters WHERE username = \"" . $_POST['username'] . "\""; $getanon2 = mysql_query($getanon); diff --git a/theme/comments.tpl b/theme/comments.tpl index caf2eb6..9c86009 100755 --- a/theme/comments.tpl +++ b/theme/comments.tpl @@ -73,7 +73,8 @@ function postComment() username: jQuery("#newComment input:text[name=username]").val(), email: jQuery("#newComment input:text[name=email]").val(), website: jQuery("#newComment input:text[name=website]").val(), - code: jQuery("#newComment input:text[name=code]").val() + recaptcha_challenge_field: jQuery("#newComment input[name=recaptcha_challenge_field]").val(), + recaptcha_response_field: jQuery("#newComment input[name=recaptcha_response_field]").val() }), dataType: "text", success: function(msg) { @@ -109,9 +110,7 @@ function postComment()

Name:
Email:
- Website (Optional):
- Security Image: CAPTCHA Image
- Security Code: + Website (Optional):

-- cgit 1.4.1