From 58047038711ec4ed9bc074dddb9b41b23a640c69 Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Sat, 13 Nov 2010 17:51:13 +0000 Subject: [PATCH] task #125 : securite avec captcha --- html/index.php | 37 +- html/login.php | 15 +- html/securimage/AHGBold.ttf | Bin 0 -> 144556 bytes html/securimage/LICENSE.txt | 458 + html/securimage/README.FONT.txt | 12 + html/securimage/README.txt | 88 + html/securimage/backgrounds/bg3.jpg | Bin 0 -> 15854 bytes html/securimage/backgrounds/bg4.jpg | Bin 0 -> 16438 bytes html/securimage/backgrounds/bg5.jpg | Bin 0 -> 48746 bytes html/securimage/backgrounds/bg6.png | Bin 0 -> 42880 bytes html/securimage/backgrounds/bg7.jpg | Bin 0 -> 13841 bytes html/securimage/database/.htaccess | 1 + html/securimage/database/index.html | 1 + html/securimage/database/securimage.sqlite | Bin 0 -> 30720 bytes html/securimage/example_form.php | 71 + html/securimage/gdfonts/automatic.gdf | Bin 0 -> 61196 bytes html/securimage/images/audio_icon.gif | Bin 0 -> 621 bytes html/securimage/images/refresh.gif | Bin 0 -> 865 bytes html/securimage/securimage.php | 1584 ++ html/securimage/securimage_play.php | 43 + html/securimage/securimage_play.swf | Bin 0 -> 3102 bytes html/securimage/securimage_show.php | 57 + html/securimage/securimage_show_example.php | 64 + html/securimage/securimage_show_example2.php | 55 + html/securimage/words/words.txt | 15621 +++++++++++++++++ include/constant.php | 2 + 26 files changed, 18104 insertions(+), 5 deletions(-) create mode 100644 html/securimage/AHGBold.ttf create mode 100644 html/securimage/LICENSE.txt create mode 100644 html/securimage/README.FONT.txt create mode 100644 html/securimage/README.txt create mode 100644 html/securimage/backgrounds/bg3.jpg create mode 100644 html/securimage/backgrounds/bg4.jpg create mode 100644 html/securimage/backgrounds/bg5.jpg create mode 100644 html/securimage/backgrounds/bg6.png create mode 100644 html/securimage/backgrounds/bg7.jpg create mode 100644 html/securimage/database/.htaccess create mode 100644 html/securimage/database/index.html create mode 100644 html/securimage/database/securimage.sqlite create mode 100644 html/securimage/example_form.php create mode 100644 html/securimage/gdfonts/automatic.gdf create mode 100644 html/securimage/images/audio_icon.gif create mode 100644 html/securimage/images/refresh.gif create mode 100644 html/securimage/securimage.php create mode 100644 html/securimage/securimage_play.php create mode 100644 html/securimage/securimage_play.swf create mode 100644 html/securimage/securimage_show.php create mode 100644 html/securimage/securimage_show_example.php create mode 100644 html/securimage/securimage_show_example2.php create mode 100644 html/securimage/words/words.txt diff --git a/html/index.php b/html/index.php index 89c379001..027cc82cc 100644 --- a/html/index.php +++ b/html/index.php @@ -203,22 +203,51 @@ version 5.2.SVNINFO - '.$my_domain.' - + - +'; + +require_once('constant.php'); +require_once('ac_common.php'); + +if ( $g_captcha == true ) + { + // echo '
'; + //echo "

Sécurité

"; + echo '
'; + echo ''; + } +echo '
utilisateur
mot de passe
'; + echo ""; + echo ''; + echo ''; + echo ''; + echo ''; + echo td('CAPTCHA Image'); + echo td(''. + 'Reload Image'); + echo ''; + echo '
'; + echo "Indiquer le code que vous lisez dans l'image"; + echo '
'; + // echo ''; + echo '
- +'; + +echo ''; +echo ' -
+
Pour une meilleure expérience web, nous vous conseillons firefox For a better web experience, we recommend you firefox diff --git a/html/login.php b/html/login.php index 2e9c1de29..227c4c235 100644 --- a/html/login.php +++ b/html/login.php @@ -18,6 +18,8 @@ */ // Copyright Author Dany De Bontridder ddebontridder@yahoo.fr include_once ("ac_common.php"); +require_once('constant.php'); + /*! \file * \brief Login page */ @@ -39,7 +41,18 @@ if ( isset ($_POST["p_user"] ) ) include_once ("class_user.php"); $User=new User($rep); $User->Check(); - + if ($g_captcha == true) + { + include("securimage/securimage.php"); + $img = new Securimage(); + $valid = $img->check($_POST['captcha_code']); + if ( $valid == false ) + { + echo alert('Code invalide'); + echo ""; + exit(); + } + } echo ""; } diff --git a/html/securimage/AHGBold.ttf b/html/securimage/AHGBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..764b23d76ff19a9ea15f8abd10c4725d2ad03b67 GIT binary patch literal 144556 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 literal 0 HcmV?d00001 diff --git a/html/securimage/LICENSE.txt b/html/securimage/LICENSE.txt new file mode 100644 index 000000000..9a749e685 --- /dev/null +++ b/html/securimage/LICENSE.txt @@ -0,0 +1,458 @@ + 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/html/securimage/README.FONT.txt b/html/securimage/README.FONT.txt new file mode 100644 index 000000000..d4770de5a --- /dev/null +++ b/html/securimage/README.FONT.txt @@ -0,0 +1,12 @@ +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/html/securimage/README.txt b/html/securimage/README.txt new file mode 100644 index 000000000..b608018d4 --- /dev/null +++ b/html/securimage/README.txt @@ -0,0 +1,88 @@ +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/html/securimage/backgrounds/bg3.jpg b/html/securimage/backgrounds/bg3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2d62d6320d11c71a542023ee3d9d98f55cf9c07 GIT binary patch literal 15854 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

F`@Ou1AOiK0mV!lLpgEa+PL-Y@ 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 literal 0 HcmV?d00001 diff --git a/html/securimage/backgrounds/bg4.jpg b/html/securimage/backgrounds/bg4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..37a22f88551240a67d68fd7136777c9b0ffbf221 GIT binary patch literal 16438 zcmeIZWl)^W*7rNOyAzzCgToLY5FCR00E4>>5C(z-ch>|D1a}5^g1ZOzV1WPwBoH7# zki-4%{p|gmdiJS$@AuO=Ri~$>W~wjg?$v9puD*W%>v8#U3qYu>primmLIwb=pFV)c zV*rtyhZXc4011E!_^T4|cnZLmwti!21F-ISszG{O1B3yP{`U*=zYEI0%0DkhMnZZz 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 G%Krub@4FHJ literal 0 HcmV?d00001 diff --git a/html/securimage/backgrounds/bg5.jpg b/html/securimage/backgrounds/bg5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a04181bf5390b6e5fbb7d9686da394865b7b448 GIT binary patch literal 48746 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 d&H5;Dy>c4;BDE=bE`xQ literal 0 HcmV?d00001 diff --git a/html/securimage/database/.htaccess b/html/securimage/database/.htaccess new file mode 100644 index 000000000..8d2f25636 --- /dev/null +++ b/html/securimage/database/.htaccess @@ -0,0 +1 @@ +deny from all diff --git a/html/securimage/database/index.html b/html/securimage/database/index.html new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/html/securimage/database/index.html @@ -0,0 +1 @@ + diff --git a/html/securimage/database/securimage.sqlite b/html/securimage/database/securimage.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..10e233ddec53831b6d94af55db9c6fa003a320d7 GIT binary patch literal 30720 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 HZwCH1*4PIP literal 0 HcmV?d00001 diff --git a/html/securimage/example_form.php b/html/securimage/example_form.php new file mode 100644 index 000000000..952a24b4e --- /dev/null +++ b/html/securimage/example_form.php @@ -0,0 +1,71 @@ + + * File: securimage.php
+ * URL: www.phpcaptcha.org + */ + + +session_start(); // Start the session where the code will be stored. + +?> + + + Securimage Test Form + + + + + +

+Username:
+
+Password:
+

+ +
+
+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/html/securimage/gdfonts/automatic.gdf b/html/securimage/gdfonts/automatic.gdf new file mode 100644 index 0000000000000000000000000000000000000000..3eee7068f3d178d9fcae61543edd388f2090b8a6 GIT binary patch literal 61196 zcmeI0S#}*cu0=CP@qX%~W>)i`#Us(412(s@t{jxYYdHvD10Vo0LbCt&&p-eCxBdN3 z`}=?G@BQbVz)zUKzx~gmk(TJ_3wLl{k~#F*0(K4{_&Z7 zDf1m#QWx*_7fhgEqSmG@)Nr?b80J7-g) zhqgKM0MbN?e1yn36%9+BB+p4kQJj<_It#Rl8toA_M}A4BRJNNED`mmr;!b%qVFEdA zAq=4TQCwFfcCeaZ7O?XDxV=}p*ksqlCs?1_qLkbGlP4gTX?pZZX7?h+mR;VOwCIHHTbcWz0 znM)_Fx0QW;lP255BPJP^6oT;PtRC9?g38y6DY)^K= zLb{B!GK9j+S^Y8+ne86%6AXXc*IH`#*h4Ey-R&7gx)9V2XRT3w3eiBCLVAjYQx_zZ zEU9eRBUH}FbN+}hZ>Fr9-ekQDLwy3Hp}0Pcf}(S{pfeTs$CM1Wi_ zhL;;)eTs$CEgU-mIrByJejldT;j7=XO`N0Iex1$ix9$5T;OFBj?(DW)lcp`Cgd_|-m>kLYq0L_qM-k{tolUZD%ULzWx(EjzRdt9bQt7VL2CWu*sAkIY}SJT~J#Npv- zXbms2ni6m*a(Hjk^~#brIo9YzR>p*A+BOz(SFemDofJPM${T@XeKn4={3xx@IvUau zf_jEXXIn}phMhJ)W((&Gg_Uds?VIU=jXL)Eo!W&&KkNa z=a8+PCt>f@;ii3x=}NY3C=DP910BVm&UBjCF~~NwT!59U)_e$-Q(|_2mOXcg3ueZ& zG7J@Fsnjp?BK!Q;=DIsf=c2}n$`#w4L(cgm3EMU~%72YT*yGndT}dkYeI27rsmOk* zlJr*?4Is-Qvnm01ES#<`j7>zvBg(JcLl#+BkT^DlR&s{D3x#DNBOBw$lFGwc(v_sE z#ZhsmDs;fq1d*mBtOS^$^aV*6=qNga)Paow%37X?vpnvp>UV4QB28-I58ge@lUjC+v-~(M8q%wp>LC&zUDvYkktG~i#+f88 zgH;VTD}&k1b7Z@7NLIEuMeXe_YL!X+8pea5-bva1%Ue8io~WWMLsdgQY0_!#5}~d* z9>5uf(i3$ktwkGaO$dwzJQYO_II$Yke9SZd^1K|2 zqDy6IzqZt;yQ+{U&t5m={!5_bF=J13Bg# z&Fl9SDtA+^3DXu*K(V~5MY>5AVzEISLEuEnKu3{xKw`(rrqHey7loZH%nncc3DN~> zkw}5c#2v)cBazUfHSI4)105Mk<}XWYxQ2zrgW4K%N&le8Ahzdabb=OLb)ghYtUzWA zg-NcIJat-9A|~dCj5f>=lRRNtF_Y4S$m~`GBt}^{=M}Uly40EW%S(DR^?-WWNXiXm zL|0-v35i>bgmP9Nf~A;krI|=mq|VaA%Gf=$_u^_Ts>3t#*XFo)h+qKmR~M-VRifnA zScJJC;jWbRW@R9zzB`xx-p?~0VC_vqnWS}=@YZ}z4=3S66GvBCH0U5&TD8Q}H`6uD zU0~ET$0IqxQhFj)I*TT5%}4PSlaL&6n^cFVZ`M|@iU_DMB&W!|C9O3jY0Da~%tl~K zrx|xMy%5jOOeWUnufpWHX1PlZQ*zR?cL4R0Cfx;`XdWrZl@S0EKaW(n66)&<+uMe^4rE%(|AY4>flc zM_1ZTs>2g@uMiPOG7+tAL@ol!lFCnDeRA2+VUnI4KC=O|njCP)!l?=3hlZ5bNRy{0 zNIx5CceO{fnj90^v2Z#-fIfz5fekMjuzB2IRfELcY?#2qd748F+{IPjE9$-eRbA5C z0&3rp2t*{ZP$6sZyc~;oI7R>&yy;=S-BOvc|OTX#yC~YOM<%qHzVZNXKzVW=qi6hQ_Z9$sM z{?!B!*%5NDeO0LRwSXUElDI#3<1m|mv@(npX3jMfS^Wp_ghfR!vM3efM2135hb6*> zE10B75CQ4PhS|pJzO6*pC6#IiT!8k*5*O6+ODS#$oKaW9&K8qBO2WT{X2mqq6Y|MiTW|g+Yc} zd|?7G&k_Zsi$DuOsK|Xqb7gYunRJtKh>L_x;2n^}O=6>KyrEltMe4R(lcw!JY28MW zCUIvE5xcu4VXnZ6>A)=Fj^(AOQ5iZVPh6P;;-vjWowxa&3E*YpJI@4JCBO_>C89-D ze?^Pen0L?j$SQ^&TESs7A$kyjDKpo^#}!>SVT3pei>c&2y>GUPltLEpV@wkF2X7o^ z6OdMhp~B2r{W21nopL~83NOo|uu^B*50To?SC#U46t7KO@qAkC`>mXJwfuIrn%PTb^{*@d8PxYu_l5Tg`@QJa0Gi1CeI4UW zKTunoL-`bRuWX)TLc`|8QHueyuD@Ymz1`vgTj^foA)^^K(Isv*%oQx1$zvjhg!Z=fC zC2kUk9ud|B1YIVWinygp(#XV;5A;s!7)Hfl&@IboR%4h) zEc_J4UESJS6X=%#0!ibGa&gVOkTP9qoq-ObwXBwS!XP5jAS0v$xec#QpwBpCNR#mg zJ71FyO0#P7XEaMcYdcNSBzKpU$gR9QfgElhr-iH7pJrjH84qSsdhbhx$#czgK9dli zoDJ|^UYkIlC`6E^(>6*<9HGF1noTYL#tJ(G6dwYRticg^x*4+_`%(gpcrZ{W-K26t z(n(R@^psFgZ}HU$^zlLrX)^kN7uTW-u9GiUVSX>gT-g9)5+Ylc<0?5{$G%ODre0$a213o4Xifa=(>J6q4tlM>ycWB-sP!B{+nLlGeU26(KucZAi`fhoit+uW5NzuN9o?D2-F>r-Q^^&njuSk!y7`C#t3 z%;)mDb@%!xYtKpAU^CeLcZr{Y(_Jla%O=Hs`?ql2yv=PWayQRlL)3#YPyBz2X*K88 oe~fdyx{2h9H8tlYEN+r%hPy_YF%Wzt3UZe0Q<6Tnw41>H11C;2(EtDd literal 0 HcmV?d00001 diff --git a/html/securimage/images/audio_icon.gif b/html/securimage/images/audio_icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..beafd518270f15bd62e15276ede1c5daab7d8892 GIT binary patch literal 621 zcmZ?wbhEHb6k`x!_^QpIqpNFdY;5n~;OXV*;u07d77`tuk`SMg4g%!``GsX=6`7eG zdAYMHE8DB9Cl}-|Dk@sq*4En8JY(Xd{;AWZcXzLtI%VaIncG&ZSh;fLjtv{u?cBL* z-n?TgR~%Wn^4iXwNA~QwzIDrk0|)jWJ$mfyncG*dUO#s1;k9c|Uc7kq`}ZFcBNGM+ zfZ|UUMg|6;KR{-H{KUZa&ta<9(x80Hu6g9xjs6OJx{*}F1irQnIh u7dv#M;XVU}-70|>#f(4=q5()DsoH-GNgp`0mIfgL4N0Ze0AvFtqn literal 0 HcmV?d00001 diff --git a/html/securimage/images/refresh.gif b/html/securimage/images/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..a10b24717f9d5be6af61c1c3dd646f6bf0e99ab9 GIT binary patch literal 865 zcmZ?wbhEHb6k`x!_!h>%CaB6Ptji&y#V=p2w7!KzXt05lpspEM3`BTH%UXDah6V>n8Og~tI6xGK`HJXUg#tx`gY`5u<@9|a z${kJRgF-nOg9F(4R6=DG>_MWTp(f&{p)Bf_0oq%;a?r#XtQw|MwS1<*8Ce%$(jz?HI zI5;#YDAa~u-UDKWucr+83P4BI7J_Vwa^hB@P%i@|8bZRnos_J^l|21I!{Ff=78Vo= aM8QB^K+!<3$zTGg0-_A8G%&D{!5RQ?yDO0Z literal 0 HcmV?d00001 diff --git a/html/securimage/securimage.php b/html/securimage/securimage.php new file mode 100644 index 000000000..ebabab0fe --- /dev/null +++ b/html/securimage/securimage.php @@ -0,0 +1,1584 @@ + + * 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/html/securimage/securimage_play.php b/html/securimage/securimage_play.php new file mode 100644 index 000000000..1f369bcb3 --- /dev/null +++ b/html/securimage/securimage_play.php @@ -0,0 +1,43 @@ + + * 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/html/securimage/securimage_play.swf b/html/securimage/securimage_play.swf new file mode 100644 index 0000000000000000000000000000000000000000..d1718b7355c4e8d6a03d2caab2224e9a3c862b24 GIT binary patch literal 3102 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 literal 0 HcmV?d00001 diff --git a/html/securimage/securimage_show.php b/html/securimage/securimage_show.php new file mode 100644 index 000000000..edf4fe712 --- /dev/null +++ b/html/securimage/securimage_show.php @@ -0,0 +1,57 @@ + + * 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 = 205; +$img->image_height = 50; +$img->perturbation = 0.85; // 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 = 35; // 100 = completely transparent +$img->num_lines = 2; +$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_JPEG; +$img->background_directory="./backgrounds"; +$img->bgimg="./backgrounds/bg7.jpg"; +$img->use_multi_text=true; + +$img->show(); // alternate use: $img->show('/path/to/background_image.jpg'); diff --git a/html/securimage/securimage_show_example.php b/html/securimage/securimage_show_example.php new file mode 100644 index 000000000..1d34753c0 --- /dev/null +++ b/html/securimage/securimage_show_example.php @@ -0,0 +1,64 @@ + + * 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/html/securimage/securimage_show_example2.php b/html/securimage/securimage_show_example2.php new file mode 100644 index 000000000..941379b04 --- /dev/null +++ b/html/securimage/securimage_show_example2.php @@ -0,0 +1,55 @@ + + * 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/html/securimage/words/words.txt b/html/securimage/words/words.txt new file mode 100644 index 000000000..eaeb84a6e --- /dev/null +++ b/html/securimage/words/words.txt @@ -0,0 +1,15621 @@ +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/include/constant.php b/include/constant.php index 22ed104c4..6d0a3624e 100644 --- a/include/constant.php +++ b/include/constant.php @@ -30,6 +30,8 @@ global $version_phpcompta; $version_phpcompta=9000; error_reporting (15); +global $g_captcha; +$g_captcha=true; /* set to none for production */ /* uncomment for production */