����JFIFXX�����    $.' ",#(7),01444'9=82<.342  2!!22222222222222222222222222222222222222222222222222����"��4�� ���,�PG"Z_�4�˷����kjز�Z�,F+��_z�,�© �����zh6�٨�ic�fu���#ډb���_�N�?��wQ���5-�~�I���8����TK<5o�Iv-�����k�_U_�����~b�M��d����Ӝ�U�Hh��?]��E�w��Q���k�{��_}qFW7HTՑ��Y��F�?_�'ϔ��_�Ջt��=||I ��6�έ"�����D���/[�k�9���Y�8ds|\���Ҿp6�Ҵ���]��.����6�z<�v��@]�i%��$j��~�g��J>��no����pM[me�i$[����s�o�ᘨ�˸ nɜG-�ĨU�ycP�3.DB�li�;��hj���x7Z^�N�h������N3u{�:j�x�힞��#M&��jL P@_���� P��&��o8������9�����@Sz6�t7#O�ߋ �s}Yf�T���lmr����Z)'N��k�۞p����w\�Tȯ?�8`�O��i{wﭹW�[�r�� ��Q4F�׊���3m&L�=��h3����z~��#�\�l :�F,j@�� ʱ�wQT����8�"kJO���6�֚l����}���R�>ډK���]��y����&����p�}b��;N�1�m�r$�|��7�>e�@B�TM*-iH��g�D�)� E�m�|�ؘbҗ�a��Ҿ����t4���o���G��*oCN�rP���Q��@z,|?W[0�����:�n,jWiE��W��$~/�hp\��?��{(�0���+�Y8rΟ�+����>S-S����VN;�}�s?.����� w�9��˟<���Mq4�Wv'��{)0�1mB��V����W[�����8�/<� �%���wT^�5���b��)iM� pg�N�&ݝ��VO~�q���u���9� ����!��J27����$O-���! �:�%H��� ـ����y�ΠM=t{!S�� oK8������t<����è:a������[�����ա�H���~��w��Qz`�po�^ ����Q��n� �,uu�C�$ ^���,������8�#��:�6��e�|~���!�3�3.�\0��q��o�4`.|� ����y�Q�`~;�d�ׯ,��O�Zw�������`73�v�܋�<���Ȏ�� ـ4k��5�K�a�u�=9Yd��$>x�A�&�� j0� ���vF��� Y�|�y��� ~�6�@c��1vOp�Ig����4��l�OD���L����� R���c���j�_�uX6��3?nk��Wy�f;^*B� ��@�~a�`��Eu������+���6�L��.ü>��}y���}_�O�6�͐�:�YrG�X��kG�����l^w���~㒶sy��Iu�!� W ��X��N�7BV��O��!X�2����wvG�R�f�T#�����t�/?���%8�^�W�aT��G�cL�M���I��(J����1~�8�?aT ���]����AS�E��(��*E}� 2��#I/�׍qz��^t�̔���b�Yz4x���t�){ OH��+(E��A&�N�������XT��o��"�XC��'���)}�J�z�p� ��~5�}�^����+�6����w��c��Q�|Lp�d�H��}�(�.|����k��c4^�"�����Z?ȕ ��a<�L�!039C� �Eu�C�F�Ew�ç ;�n?�*o���B�8�bʝ���'#Rqf���M}7����]����s2tcS{�\icTx;�\��7K���P���ʇ Z O-��~��c>"��?�������P��E��O�8��@�8��G��Q�g�a�Վ���󁶠�䧘��_%#r�>�1�z�a��eb��qcPѵ��n���#L��� =��׀t� L�7�`��V���A{�C:�g���e@�w1 Xp3�c3�ġ����p��M"'-�@n4���fG��B3�DJ�8[Jo�ߐ���gK)ƛ��$���� ���8�3�����+���� �����6�ʻ���� ���S�kI�*KZlT _`���?��K����QK�d����B`�s}�>���`��*�>��,*@J�d�oF*����弝��O}�k��s��]��y�ߘ��c1G�V���<=�7��7����6�q�PT��tXԀ�!9*4�4Tހ3XΛex�46���Y��D ����� �BdemDa����\�_l,��G�/���֌7���Y�](�xTt^%�GE�����4�}bT���ڹ�����;Y)���B�Q��u��>J/J �⮶.�XԄ��j�ݳ�+E��d ��r�5�_D�1 ��o�� �B�x�΢�#���<��W�����8���R6�@g�M�.��� dr�D��>(otU��@x=��~v���2� ӣ�d�oBd��3�eO�6�㣷�����ݜ6��6Y��Qz`��S��{���\P�~z m5{J/L��1������<�e�ͅPu�b�]�ϔ���'������f�b� Zpw��c`"��i���BD@:)ִ�:�]��hv�E�w���T�l��P���"Ju�}��وV J��G6��. J/�Qgl߭�e�����@�z�Zev2u�)]կ�����7x���s�M�-<ɯ�c��r�v�����@��$�ޮ}lk���a���'����>x��O\�ZFu>�����ck#��&:��`�$�ai�>2Δ����l���oF[h��lE�ܺ�Πk:)���`�� $[6�����9�����kOw�\|���8}������ބ:��񶐕��I�A1/�=�2[�,�!��.}gN#�u����b��� ~��݊��}34q����d�E��Lc��$��"�[q�U�硬g^��%B �z���r�pJ�ru%v\h1Y�ne`ǥ:g���pQM~�^�Xi� ��`S�:V29.�P���V�?B�k�� AEvw%�_�9C�Q����wKekPؠ�\�;Io d�{ ߞo�c1eP����\� `����E=���@K<�Y���eڼ�J���w����{av�F�'�M�@/J��+9p���|]�����Iw &`��8���&M�hg��[�{��Xj��%��Ӓ�$��(����ʹN���<>�I���RY���K2�NPlL�ɀ)��&e����B+ь����( � �JTx���_?EZ� }@ 6�U���뙢ط�z��dWI�n` D����噥�[��uV��"�G&Ú����2g�}&m��?ċ�"����Om#��������� ��{�ON��"S�X��Ne��ysQ���@Fn��Vg���dX�~nj�]J�<�K]:��FW��b�������62�=��5f����JKw��bf�X�55��~J �%^����:�-�QIE��P��v�nZum� z � ~ə ���� ���ة����;�f��\v���g�8�1��f24;�V���ǔ�)����9���1\��c��v�/'Ƞ�w�������$�4�R-��t���� e�6�/�ġ �̕Ecy�J���u�B���<�W�ַ~�w[B1L۲�-JS΂�{���΃������A��20�c#��@ 0!1@AP"#2Q`$3V�%45a6�FRUq��� ����^7ׅ,$n�������+��F�`��2X'��0vM��p�L=������5��8������u�p~���.�`r�����\���O��,ư�0oS ��_�M�����l���4�kv\JSd���x���SW�<��Ae�IX����������$I���w�:S���y���›R��9�Q[���,�5�;�@]�%���u�@ *ro�lbI �� ��+���%m:�͇ZV�����u�̉����θau<�fc�.����{�4Ա� �Q����*�Sm��8\ujqs]{kN���)qO�y�_*dJ�b�7���yQqI&9�ԌK!�M}�R�;������S�T���1���i[U�ɵz�]��U)V�S6���3$K{�ߊ<�(� E]Զ[ǼENg�����'�\?#)Dkf��J���o��v���'�%ƞ�&K�u�!��b�35LX�Ϸ��63$K�a�;�9>,R��W��3�3� d�JeTYE.Mϧ��-�o�j3+y��y^�c�������VO�9NV\nd�1 ��!͕_)a�v;����թ�M�lWR1��)El��P;��yوÏ�u 3�k�5Pr6<�⒲l�!˞*��u־�n�!�l:����UNW ��%��Chx8vL'��X�@��*��)���̮��ˍ��� ���D-M�+J�U�kvK����+�x8��cY������?�Ԡ��~3mo��|�u@[XeY�C�\Kp�x8�oC�C�&����N�~3-H���� ��MX�s�u<`���~"WL��$8ξ��3���a�)|:@�m�\���^�`�@ҷ)�5p+��6���p�%i)P M���ngc�����#0Aruz���RL+xSS?���ʮ}()#�t��mˇ!��0}}y����<�e� �-ή�Ԩ��X������ MF���ԙ~l L.3���}�V뽺�v�����멬��Nl�)�2����^�Iq��a��M��qG��T�����c3#������3U�Ǎ���}��לS�|qa��ڃ�+���-��2�f����/��bz��ڐ�� �ݼ[2�ç����k�X�2�* �Z�d���J�G����M*9W���s{��w���T��x��y,�in�O�v��]���n����P�$�JB@=4�OTI�n��e�22a\����q�d���%�$��(���:���: /*�K[PR�fr\nڙdN���F�n�$�4�[�� U�zƶ����� �mʋ���,�ao�u 3�z� �x��Kn����\[��VFmbE;�_U��&V�Gg�]L�۪&#n%�$ɯ�dG���D�TI=�%+AB�Ru#��b4�1�»x�cs�YzڙJG��f��Il��d�eF'T� iA��T���uC�$����Y��H?����[!G`}���ͪ� �纤Hv\������j�Ex�K���!���OiƸ�Yj�+u-<���'q����uN�*�r\��+�]���<�wOZ.fp�ێ��,-*)V?j-kÊ#�`�r��dV����(�ݽBk�����G�ƛk�QmUڗe��Z���f}|����8�8��a���i��3'J�����~G_�^���d�8w������ R�`(�~�.��u���l�s+g�bv���W���lGc}��u���afE~1�Ue������Z�0�8�=e�� f@/�jqEKQQ�J��oN��J���W5~M>$6�Lt�;$ʳ{���^��6�{����v6���ķܰg�V�cnn �~z�x�«�,2�u�?cE+Ș�H؎�%�Za�)���X>uW�Tz�Nyo����s���FQƤ��$��*�&�LLXL)�1�" L��eO��ɟ�9=���:t��Z���c��Ž���Y?�ӭV�wv�~,Y��r�ۗ�|�y��GaF�����C�����.�+� ���v1���fήJ�����]�S��T��B��n5sW}y�$��~z�'�c ��8 ��� ,! �p��VN�S��N�N�q��y8z˱�A��4��*��'������2n<�s���^ǧ˭P�Jޮɏ�U�G�L�J�*#��<�V��t7�8����TĜ>��i}K%,���)[��z�21z ?�N�i�n1?T�I�R#��m-�����������������1����lA�`��fT5+��ܐ�c�q՝��ʐ��,���3�f2U�եmab��#ŠdQ�y>\��)�SLY����w#��.���ʑ�f��� ,"+�w�~�N�'�c�O�3F�������N<���)j��&��,-� �љ���֊�_�zS���TǦ����w�>��?�������n��U仆�V���e�����0���$�C�d���rP �m�׈e�Xm�Vu� �L��.�bֹ��� �[Դaզ���*��\y�8�Է:�Ez\�0�Kq�C b��̘��cө���Q��=0Y��s�N��S.���3.���O�o:���#���v7�[#߫ ��5�܎�L���Er4���9n��COWlG�^��0k�%<���ZB���aB_���������'=��{i�v�l�$�uC���mƎҝ{�c㱼�y]���W�i ��ߧc��m�H� m�"�"�����;Y�ߝ�Z�Ǔ�����:S#��|}�y�,/k�Ld� TA�(�AI$+I3��;Y*���Z��}|��ӧO��d�v��..#:n��f>�>���ȶI�TX��� 8��y����"d�R�|�)0���=���n4��6ⲑ�+��r<�O�܂~zh�z����7ܓ�HH�Ga롏���nCo�>������a ���~]���R���̲c?�6(�q�;5%� |�uj�~z8R=X��I�V=�|{v�Gj\gc��q����z�؋%M�ߍ����1y��#��@f^���^�>N�����#x#۹��6�Y~�?�dfPO��{��P�4��V��u1E1J �*|���%���JN��`eWu�zk M6���q t[�� ��g�G���v��WIG��u_ft����5�j�"�Y�:T��ɐ���*�;� e5���4����q$C��2d�}���� _S�L#m�Yp��O�.�C�;��c����Hi#֩%+) �Ӎ��ƲV���SYź��g |���tj��3�8���r|���V��1#;.SQ�A[���S������#���`n�+���$��$I �P\[�@�s��(�ED�z���P��])8�G#��0B��[ى��X�II�q<��9�~[Z멜�Z�⊔IWU&A>�P~�#��dp<�?����7���c��'~���5 ��+$���lx@�M�dm��n<=e�dyX��?{�|Aef ,|n3�<~z�ƃ�uۧ�����P��Y,�ӥQ�*g�#먙R�\���;T��i,��[9Qi歉����c>]9�� ��"�c��P�� �Md?٥��If�ت�u��k��/����F��9�c*9��Ǎ:�ØF���z�n*�@|I�ށ9����N3{'��[�'ͬ�Ҳ4��#}��!�V� Fu��,�,mTIk���v C�7v���B�6k�T9��1�*l� '~��ƞF��lU��'�M ����][ΩũJ_�{�i�I�n��$���L�� j��O�dx�����kza۪��#�E��Cl����x˘�o�����V���ɞ�ljr��)�/,�߬h�L��#��^��L�ф�,íMƁe�̩�NB�L�����iL����q�}��(��q��6IçJ$�W�E$��:������=#����(�K�B����zђ <��K(�N�۫K�w��^O{!����)�H���>x�������lx�?>Պ�+�>�W���,Ly!_�D���Ō�l���Q�!�[ �S����J��1��Ɛ�Y}��b,+�Lo�x�ɓ)����=�y�oh�@�꥟/��I��ѭ=��P�y9��� �ۍYӘ�e+�p�Jnϱ?V\SO%�(�t� ���=?MR�[Ș�����d�/ ��n�l��B�7j� ��!�;ӥ�/�[-���A�>�dN�sLj ��,ɪv��=1c�.SQ�O3�U���ƀ�ܽ�E����������̻��9G�ϷD�7(�}��Ävӌ\�y�_0[w ���<΍>����a_��[0+�L��F.�޺��f�>oN�T����q;���y\��bՃ��y�jH�<|q-eɏ�_?_9+P���Hp$�����[ux�K w�Mw��N�ی'$Y2�=��q���KB��P��~������Yul:�[<����F1�2�O���5=d����]Y�sw:���Ϯ���E��j,_Q��X��z`H1,#II ��d�wr��P˂@�ZJV����y$�\y�{}��^~���[:N����ߌ�U�������O��d�����ؾe��${p>G��3c���Ė�lʌ�� ת��[��`ϱ�-W����dg�I��ig2��� ��}s ��ؤ(%#sS@���~���3�X�nRG�~\jc3�v��ӍL��M[JB�T��s3}��j�Nʖ��W����;7��ç?=X�F=-�=����q�ߚ���#���='�c��7���ڑW�I(O+=:uxq�������������e2�zi+�kuG�R��������0�&e�n���iT^J����~\jy���p'dtG��s����O��3����9* �b#Ɋ�� p������[Bws�T�>d4�ۧs���nv�n���U���_�~,�v����ƜJ1��s�� �QIz��)�(lv8M���U=�;����56��G���s#�K���MP�=��LvyGd��}�VwWBF�'�à �?MH�U�g2�� ����!�p�7Q��j��ڴ����=��j�u��� Jn�A s���uM������e��Ɔ�Ҕ�!)'��8Ϣ�ٔ��ޝ(��Vp���צ֖d=�IC�J�Ǡ{q������kԭ�߸���i��@K����u�|�p=..�*+����x�����z[Aqġ#s2a�Ɗ���RR�)*HRsi�~�a &f��M��P����-K�L@��Z��Xy�'x�{}��Zm+���:�)�) IJ�-i�u���� ���ܒH��'�L(7�y�GӜq���� j��� 6ߌg1�g�o���,kر���tY�?W,���p���e���f�OQS��!K�۟cҒA�|ս�j�>��=⬒��˧L[�� �߿2JaB~R��u�:��Q�] �0H~���]�7��Ƽ�I���(}��cq '�ήET���q�?f�ab���ӥvr� �)o��-Q��_'����ᴎo��K������;��V���o��%���~OK ����*��b�f:���-ťIR��`B�5!RB@���ï�� �u �̯e\�_U�_������� g�ES��3�������QT��a����x����U<~�c?�*�#]�MW,[8O�a�x��]�1bC|踤�P��lw5V%�)�{t�<��d��5���0i�XSU��m:��Z�┵�i�"��1�^B�-��P�hJ��&)O��*�D��c�W��vM��)����}���P��ܗ-q����\mmζZ-l@�}��a��E�6��F�@��&Sg@���ݚ�M����� ȹ 4����#p�\H����dYDo�H���"��\��..R�B�H�z_�/5˘����6��KhJR��P�mƶi�m���3�,#c�co��q�a)*Pt����R�m�k�7x�D�E�\Y�閣_X�<���~�)���c[[�BP����6�Yq���S��0����%_����;��Àv�~�| VS؇ ��'O0��F0��\���U�-�d@�����7�SJ*z��3n��y��P����O���������m�~�P�3|Y��ʉr#�C�<�G~�.,! ���bqx���h~0=��!ǫ�jy����l�O,�[B��~��|9��ٱ����Xly�#�i�B��g%�S��������tˋ���e���ې��\[d�t)��.+u�|1 ������#�~Oj����hS�%��i.�~X���I�H�m��0n���c�1uE�q��cF�RF�o���7� �O�ꮧ� ���ۛ{��ʛi5�rw?׌#Qn�TW��~?y$��m\�\o����%W� ?=>S�N@�� �Ʈ���R����N�)�r"C�:��:����� �����#��qb��Y�. �6[��2K����2u�Ǧ�HYR��Q�MV��� �G�$��Q+.>�����nNH��q�^��� ����q��mM��V��D�+�-�#*�U�̒ ���p욳��u:�������IB���m���PV@O���r[b= �� ��1U�E��_Nm�yKbN�O���U�}�the�`�|6֮P>�\2�P�V���I�D�i�P�O;�9�r�mAHG�W�S]��J*�_�G��+kP�2����Ka�Z���H�'K�x�W�MZ%�O�YD�Rc+o��?�q��Ghm��d�S�oh�\�D�|:W������UA�Qc yT�q������~^�H��/��#p�CZ���T�I�1�ӏT����4��"�ČZ�����}��`w�#�*,ʹ�� ��0�i��課�Om�*�da��^gJ݅{���l�e9uF#T�ֲ��̲�ٞC"�q���ߍ ոޑ�o#�XZTp����@ o�8��(jd��xw�]�,f���`~�|,s��^����f�1���t��|��m�򸄭/ctr��5s��7�9Q�4�H1꠲BB@l9@���C�����+�wp�xu�£Yc�9��?`@#�o�mH�s2��)�=��2�.�l����jg�9$�Y�S�%*L������R�Y������7Z���,*=�䷘$�������arm�o�ϰ���UW.|�r�uf����IGw�t����Zwo��~5 ��YյhO+=8fF�)�W�7�L9lM�̘·Y���֘YLf�큹�pRF���99.A �"wz��=E\Z���'a� 2��Ǚ�#;�'}�G���*��l��^"q��+2FQ� hj��kŦ��${���ޮ-�T�٭cf�|�3#~�RJ����t��$b�(R��(����r���dx� >U b�&9,>���%E\� Ά�e�$��'�q't��*�א���ެ�b��-|d���SB�O�O��$�R+�H�)�܎�K��1m`;�J�2�Y~9��O�g8=vqD`K[�F)k�[���1m޼c��n���]s�k�z$@��)!I �x՝"v��9=�ZA=`Ɠi �:�E��)`7��vI��}d�YI�_ �o�:ob���o ���3Q��&D&�2=�� �Ά��;>�h����y.*ⅥS������Ӭ�+q&����j|UƧ����}���J0��WW< ۋS�)jQR�j���Ư��rN)�Gű�4Ѷ(�S)Ǣ�8��i��W52���No˓� ۍ%�5brOn�L�;�n��\G����=�^U�dI���8$�&���h��'���+�(������cȁ߫k�l��S^���cƗjԌE�ꭔ��gF���Ȓ��@���}O���*;e�v�WV���YJ\�]X'5��ղ�k�F��b 6R�o՜m��i N�i����>J����?��lPm�U��}>_Z&�KK��q�r��I�D�Չ~�q�3fL�:S�e>���E���-G���{L�6p�e,8��������QI��h��a�Xa��U�A'���ʂ���s�+טIjP�-��y�8ۈZ?J$��W�P� ��R�s�]��|�l(�ԓ��sƊi��o(��S0��Y� 8�T97.�����WiL��c�~�dxc�E|�2!�X�K�Ƙਫ਼�$((�6�~|d9u+�qd�^3�89��Y�6L�.I�����?���iI�q���9�)O/뚅����O���X��X�V��ZF[�یgQ�L��K1���RҖr@v�#��X�l��F���Нy�S�8�7�kF!A��sM���^rkp�jP�DyS$N���q��nxҍ!U�f�!eh�i�2�m���`�Y�I�9r�6� �TF���C}/�y�^���Η���5d�'��9A-��J��>{�_l+�`��A���[�'��յ�ϛ#w:݅�%��X�}�&�PSt�Q�"�-��\縵�/����$Ɨh�Xb�*�y��BS����;W�ջ_mc�����vt?2}1�;qS�d�d~u:2k5�2�R�~�z+|HE!)�Ǟl��7`��0�<�,�2*���Hl-��x�^����'_TV�gZA�'j� ^�2Ϊ��N7t�����?w�� �x1��f��Iz�C-Ȗ��K�^q�;���-W�DvT�7��8�Z�������� hK�(P:��Q- �8�n�Z���܃e貾�<�1�YT<�,�����"�6{/ �?�͟��|1�:�#g��W�>$����d��J��d�B��=��jf[��%rE^��il:��B���x���Sּ�1հ��,�=��*�7 fcG��#q� �eh?��2�7�����,�!7x��6�n�LC�4x��},Geǝ�tC.��vS �F�43��zz\��;QYC,6����~;RYS/6���|2���5���v��T��i����������mlv��������&� �nRh^ejR�LG�f���? �ۉҬܦƩ��|��Ȱ����>3����!v��i�ʯ�>�v��オ�X3e���_1z�Kȗ\<������!�8���V��]��?b�k41�Re��T�q��mz��TiOʦ�Z��Xq���L������q"+���2ۨ��8}�&N7XU7Ap�d�X��~�׿��&4e�o�F��� �H����O���č�c�� 懴�6���͉��+)��v;j��ݷ�� �UV�� i��� j���Y9GdÒJ1��詞�����V?h��l����l�cGs�ځ�������y�Ac�����\V3�? �� ܙg�>qH�S,�E�W�[�㺨�uch�⍸�O�}���a��>�q�6�n6����N6�q������N ! 1AQaq�0@����"2BRb�#Pr���3C`��Scst���$4D���%Td�� ?���N����a��3��m���C���w��������xA�m�q�m���m������$����4n淿t'��C"w��zU=D�\R+w�p+Y�T�&�պ@��ƃ��3ޯ?�Aﶂ��aŘ���@-�����Q�=���9D��ռ�ѻ@��M�V��P��܅�G5�f�Y<�u=,EC)�<�Fy'�"�&�չ�X~f��l�KԆV��?�� �W�N����=(� �;���{�r����ٌ�Y���h{�١������jW����P���Tc�����X�K�r��}���w�R��%��?���E��m�� �Y�q|����\lEE4���r���}�lsI�Y������f�$�=�d�yO����p�����yBj8jU�o�/�S��?�U��*������ˍ�0������u�q�m [�?f����a�� )Q�>����6#������� ?����0UQ����,IX���(6ڵ[�DI�MNލ�c&���υ�j\��X�R|,4��� j������T�hA�e��^���d���b<����n�� �즇�=!���3�^�`j�h�ȓr��jẕ�c�,ٞX����-����a�ﶔ���#�$��]w�O��Ӫ�1y%��L�Y<�wg#�ǝ�̗`�x�xa�t�w��»1���o7o5��>�m뭛C���Uƃߜ}�C���y1Xνm�F8�jI���]����H���ۺиE@I�i;r�8ӭ����V�F�Շ| ��&?�3|x�B�MuS�Ge�=Ӕ�#BE5G�����Y!z��_e��q�р/W>|-�Ci߇�t�1ޯќd�R3�u��g�=0 5��[?�#͏��q�cf���H��{ ?u�=?�?ǯ���}Z��z���hmΔ�BFTW�����<�q�(v� ��!��z���iW]*�J�V�z��gX֧A�q�&��/w���u�gYӘa���; �i=����g:��?2�dž6�ى�k�4�>�Pxs����}������G�9��3 ���)gG�R<>r h�$��'nc�h�P��Bj��J�ҧH� -��N1���N��?��~��}-q!=��_2hc�M��l�vY%UE�@|�v����M2�.Y[|y�"Eï��K�ZF,�ɯ?,q�?v�M 80jx�"�;�9vk�����+ ֧�� �ȺU��?�%�vcV��mA�6��Qg^M����A}�3�nl� QRN�l8�kkn�'�����(��M�7m9و�q���%ޟ���*h$Zk"��$�9��: �?U8�Sl��,,|ɒ��xH(ѷ����Gn�/Q�4�P��G�%��Ա8�N��!� �&�7�;���eKM7�4��9R/%����l�c>�x;������>��C�:�����t��h?aKX�bhe�ᜋ^�$�Iհ �hr7%F$�E��Fd���t��5���+�(M6�t����Ü�UU|zW�=a�Ts�Tg������dqP�Q����b'�m���1{|Y����X�N��b �P~��F^F:����k6�"�j!�� �I�r�`��1&�-$�Bevk:y���#yw��I0��x��=D�4��tU���P�ZH��ڠ底taP��6����b>�xa����Q�#� WeF��ŮNj�p�J* mQ�N����*I�-*�ȩ�F�g�3 �5��V�ʊ�ɮ�a��5F���O@{���NX��?����H�]3��1�Ri_u��������ѕ�� ����0��� F��~��:60�p�͈�S��qX#a�5>���`�o&+�<2�D����: �������ڝ�$�nP���*)�N�|y�Ej�F�5ټ�e���ihy�Z �>���k�bH�a�v��h�-#���!�Po=@k̆IEN��@��}Ll?j�O������߭�ʞ���Q|A07x���wt!xf���I2?Z��<ץ�T���cU�j��]��陎Ltl �}5�ϓ��$�,��O�mˊ�;�@O��jE��j(�ا,��LX���LO���Ц�90�O �.����a��nA���7������j4 ��W��_ٓ���zW�jcB������y՗+EM�)d���N�g6�y1_x��p�$Lv:��9�"z��p���ʙ$��^��JԼ*�ϭ����o���=x�Lj�6�J��u82�A�H�3$�ٕ@�=Vv�]�'�qEz�;I˼��)��=��ɯ���x �/�W(V���p�����$ �m�������u�����񶤑Oqˎ�T����r��㠚x�sr�GC��byp�G��1ߠ�w e�8�$⿄����/�M{*}��W�]˷.�CK\�ުx���/$�WPw���r� |i���&�}�{�X� �>��$-��l���?-z���g����lΆ���(F���h�vS*���b���߲ڡn,|)mrH[���a�3�ר�[1��3o_�U�3�TC�$��(�=�)0�kgP���� ��u�^=��4 �WYCҸ:��vQ�ר�X�à��tk�m,�t*��^�,�}D*� �"(�I��9R����>`�`��[~Q]�#af��i6l��8���6�:,s�s�N6�j"�A4���IuQ��6E,�GnH��zS�HO�uk�5$�I�4��ؤ�Q9�@��C����wp�BGv[]�u�Ov���0I4���\��y�����Q�Ѹ��~>Z��8�T��a��q�ޣ;z��a���/��S��I:�ܫ_�|������>=Z����8:�S��U�I�J��"IY���8%b8���H��:�QO�6�;7�I�S��J��ҌAά3��>c���E+&jf$eC+�z�;��V����� �r���ʺ������my�e���aQ�f&��6�ND��.:��NT�vm�<- u���ǝ\MvZY�N�NT��-A�>jr!S��n�O 1�3�Ns�%�3D@���`������ܟ 1�^c<���� �a�ɽ�̲�Xë#�w�|y�cW�=�9I*H8�p�^(4���՗�k��arOcW�tO�\�ƍR��8����'�K���I�Q�����?5�>[�}��yU�ײ -h��=��% q�ThG�2�)���"ו3]�!kB��*p�FDl�A���,�eEi�H�f�Ps�����5�H:�Փ~�H�0Dت�D�I����h�F3�������c��2���E��9�H��5�zԑ�ʚ�i�X�=:m�xg�hd(�v����׊�9iS��O��d@0ڽ���:�p�5�h-��t�&���X�q�ӕ,��ie�|���7A�2���O%P��E��htj��Y1��w�Ѓ!����  ���� ࢽ��My�7�\�a�@�ţ�J �4�Ȼ�F�@o�̒?4�wx��)��]�P��~�����u�����5�����7X ��9��^ܩ�U;Iꭆ 5 �������eK2�7(�{|��Y׎ �V��\"���Z�1� Z�����}��(�Ǝ"�1S���_�vE30>���p;� ΝD��%x�W�?W?v����o�^V�i�d��r[��/&>�~`�9Wh��y�;���R��� ;;ɮT��?����r$�g1�K����A��C��c��K��l:�'��3 c�ﳯ*"t8�~l��)���m��+U,z��`(�>yJ�?����h>��]��v��ЍG*�{`��;y]��I�T� ;c��NU�fo¾h���/$���|NS���1�S�"�H��V���T���4��uhǜ�]�v;���5�͠x��'C\�SBpl���h}�N����� A�Bx���%��ޭ�l��/����T��w�ʽ]D�=����K���ž�r㻠l4�S�O?=�k �M:� ��c�C�a�#ha���)�ѐxc�s���gP�iG��{+���x���Q���I= �� z��ԫ+ �8"�k�ñ�j=|����c ��y��CF��/��*9ж�h{ �?4�o� ��k�m�Q�N�x��;�Y��4膚�a�w?�6�>e]�����Q�r�:����g�,i"�����ԩA�*M�<�G��b�if��l^M��5� �Ҩ�{����6J��ZJ�����P�*�����Y���ݛu�_4�9�I8�7���������,^ToR���m4�H��?�N�S�ѕw��/S��甍�@�9H�S�T��t�ƻ���ʒU��*{Xs�@����f�����֒Li�K{H�w^���������Ϥm�tq���s� ���ք��f:��o~s��g�r��ט� �S�ѱC�e]�x���a��) ���(b-$(�j>�7q�B?ӕ�F��hV25r[7 Y� }L�R��}����*sg+��x�r�2�U=�*'WS��ZDW]�WǞ�<��叓���{�$�9Ou4��y�90-�1�'*D`�c�^o?(�9��u���ݐ��'PI&� f�Jݮ�������:wS����jfP1F:X �H�9dԯ���˝[�_54 �}*;@�ܨ�� ð�yn�T���?�ןd�#���4rG�ͨ��H�1�|-#���Mr�S3��G�3�����)�.᧏3v�z֑��r����$G"�`j �1t��x0<Ɔ�Wh6�y�6��,œ�Ga��gA����y��b��)��h�D��ß�_�m��ü �gG;��e�v��ݝ�nQ� ��C����-�*��o���y�a��M��I�>�<���]obD��"�:���G�A��-\%LT�8���c�)��+y76���o�Q�#*{�(F�⽕�y����=���rW�\p���۩�c���A���^e6��K������ʐ�cVf5$�'->���ՉN"���F�"�UQ@�f��Gb~��#�&�M=��8�ט�JNu9��D��[̤�s�o�~������ G��9T�tW^g5y$b��Y'��س�Ǵ�=��U-2 #�MC�t(�i� �lj�@Q 5�̣i�*�O����s�x�K�f��}\��M{E�V�{�υ��Ƈ�����);�H����I��fe�Lȣr�2��>��W�I�Ȃ6������i��k�� �5�YOxȺ����>��Y�f5'��|��H+��98pj�n�.O�y�������jY��~��i�w'������l�;�s�2��Y��:'lg�ꥴ)o#'Sa�a�K��Z� �m��}�`169�n���"���x��I ��*+� }F<��cГ���F�P�������ֹ*�PqX�x۩��,� ��N�� �4<-����%����:��7����W���u�`����� $�?�I��&����o��o��`v�>��P��"��l���4��5'�Z�gE���8���?��[�X�7(��.Q�-��*���ތL@̲����v��.5���[��=�t\+�CNܛ��,g�SQnH����}*F�G16���&:�t��4ُ"A��̣��$�b �|����#rs��a�����T�� ]�<�j��BS�('$�ɻ� �wP;�/�n��?�ݜ��x�F��yUn�~mL*-�������Xf�wd^�a�}��f�,=t�׵i�.2/wpN�Ep8�OР���•��R�FJ� 55TZ��T �ɭ�<��]��/�0�r�@�f��V��V����Nz�G��^���7hZi����k��3�,kN�e|�vg�1{9]_i��X5y7� 8e]�U����'�-2,���e"����]ot�I��Y_��n�(JҼ��1�O ]bXc���Nu�No��pS���Q_���_�?i�~�x h5d'�(qw52] ��'ޤ�q��o1�R!���`ywy�A4u���h<קy���\[~�4�\ X�Wt/� 6�����n�F�a8��f���z �3$�t(���q��q�x��^�XWeN'p<-v�!�{�(>ӽDP7��ո0�y)�e$ٕv�Ih'Q�EA�m*�H��RI��=:��� ���4牢) �%_iN�ݧ�l]� �Nt���G��H�L��� ɱ�g<���1V�,�J~�ٹ�"K��Q�� 9�HS�9�?@��k����r�;we݁�]I�!{ �@�G�[�"��`���J:�n]�{�cA�E����V��ʆ���#��U9�6����j�#Y�m\��q�e4h�B�7��C�������d<�?J����1g:ٳ���=Y���D�p�ц� ׈ǔ��1�]26؜oS�'��9�V�FVu�P�h�9�xc�oq�X��p�o�5��Ա5$�9W�V(�[Ak�aY錎qf;�'�[�|���b�6�Ck��)��#a#a˙��8���=äh�4��2��C��4tm^ �n'c���]GQ$[Wҿ��i���vN�{Fu ��1�gx��1┷���N�m��{j-,��x�� Ūm�ЧS�[�s���Gna���䑴�� x�p 8<������97�Q���ϴ�v�aϚG��Rt�Һ׈�f^\r��WH�JU�7Z���y)�vg=����n��4�_)y��D'y�6�]�c�5̪�\� �PF�k����&�c;��cq�$~T�7j ���nç]�<�g ":�to�t}�159�<�/�8������m�b�K#g'I'.W�����6��I/��>v��\�MN��g���m�A�yQL�4u�Lj�j9��#44�t��l^�}L����n��R��!��t��±]��r��h6ٍ>�yҏ�N��fU�� ���� Fm@�8}�/u��jb9������he:A�y�ծw��GpΧh�5����l}�3p468��)U��d��c����;Us/�֔�YX�1�O2��uq�s��`hwg�r~�{ R��mhN��؎*q 42�*th��>�#���E����#��Hv�O����q�}�����6�e��\�,Wk�#���X��b>��p}�դ��3���T5��†��6��[��@�P�y*n��|'f�֧>�lư΂�̺����SU�'*�q�p�_S�����M�� '��c�6�����m�� ySʨ;M��r���Ƌ�m�Kxo,���Gm�P��A�G�:��i��w�9�}M(�^�V��$ǒ�ѽ�9���|���� �a����J�SQ�a���r�B;����}���ٻ֢�2�%U���c�#�g���N�a�ݕ�'�v�[�OY'��3L�3�;,p�]@�S��{ls��X�'���c�jw�k'a�.��}�}&�� �dP�*�bK=ɍ!����;3n�gΊU�ߴmt�'*{,=SzfD� A��ko~�G�aoq�_mi}#�m�������P�Xhύ����mxǍ�΂���巿zf��Q���c���|kc�����?���W��Y�$���_Lv����l߶��c���`?����l�j�ݲˏ!V��6����U�Ђ(A���4y)H���p�Z_�x��>���e��R��$�/�`^'3qˏ�-&Q�=?��CFVR �D�fV�9��{�8g�������n�h�(P"��6�[�D���< E�����~0<@�`�G�6����Hг�cc�� �c�K.5��D��d�B���`?�XQ��2��ٿyqo&+�1^� DW�0�ꊩ���G�#��Q�nL3��c���������/��x ��1�1[y�x�პCW��C�c�UĨ80�m�e�4.{�m��u���I=��f�����0QRls9���f���������9���~f�����Ǩ��a�"@�8���ȁ�Q����#c�ic������G��$���G���r/$W�(��W���V�"��m�7�[m�A�m����bo��D� j����۳� l���^�k�h׽����� ��#� iXn�v��eT�k�a�^Y�4�BN��ĕ��0 !01@Q"2AaPq3BR������?���@4�Q�����T3,���㺠�W�[=JK�Ϟ���2�r^7��vc�:�9 �E�ߴ�w�S#d���Ix��u��:��Hp��9E!�� V 2;73|F��9Y���*ʬ�F��D����u&���y؟��^EA��A��(ɩ���^��GV:ݜDy�`��Jr29ܾ�㝉��[���E;Fzx��YG��U�e�Y�C���� ����v-tx����I�sם�Ę�q��Eb�+P\ :>�i�C'�;�����k|z�رn�y]�#ǿb��Q��������w�����(�r|ӹs��[�D��2v-%��@;�8<a���[\o[ϧw��I!��*0�krs)�[�J9^��ʜ��p1)� "��/_>��o��<1����A�E�y^�C��`�x1'ܣn�p��s`l���fQ��):�l����b>�Me�jH^?�kl3(�z:���1ŠK&?Q�~�{�ٺ�h�y���/�[��V�|6��}�KbX����mn[-��7�5q�94�������dm���c^���h� X��5��<�eޘ>G���-�}�دB�ޟ� ��|�rt�M��V+�]�c?�-#ڛ��^ǂ}���Lkr���O��u�>�-D�ry� D?:ޞ�U��ǜ�7�V��?瓮�"�#���r��չģVR;�n���/_� ؉v�ݶe5d�b9��/O��009�G���5n�W����JpA�*�r9�>�1��.[t���s�F���nQ� V 77R�]�ɫ8����_0<՜�IF�u(v��4��F�k�3��E)��N:��yڮe��P�`�1}�$WS��J�SQ�N�j�ٺ��޵�#l���ј(�5=��5�lǏmoW�v-�1����v,W�mn��߀$x�<����v�j(����c]��@#��1������Ǔ���o'��u+����;G�#�޸��v-lη��/(`i⣍Pm^���ԯ̾9Z��F��������n��1��� ��]�[��)�'������:�֪�W��FC����� �B9،!?���]��V��A�Վ�M��b�w��G F>_DȬ0¤�#�QR�[V��kz���m�w�"��9ZG�7'[��=�Q����j8R?�zf�\a�=��O�U����*oB�A�|G���2�54 �p��.w7� �� ��&������ξxGHp� B%��$g�����t�Џ򤵍z���HN�u�Я�-�'4��0��;_��3 !01"@AQa2Pq#3BR������?��ʩca��en��^��8���<�u#��m*08r��y�N"�<�Ѳ0��@\�p��� �����Kv�D��J8�Fҽ� �f�Y��-m�ybX�NP����}�!*8t(�OqѢ��Q�wW�K��ZD��Δ^e��!� ��B�K��p~�����e*l}z#9ң�k���q#�Ft�o��S�R����-�w�!�S���Ӥß|M�l޶V��!eˈ�8Y���c�ЮM2��tk���� ������J�fS����Ö*i/2�����n]�k�\���|4yX�8��U�P.���Ы[���l��@"�t�<������5�lF���vU�����W��W��;�b�cД^6[#7@vU�xgZv��F�6��Q,K�v��� �+Ъ��n��Ǣ��Ft���8��0��c�@�!�Zq s�v�t�;#](B��-�nῃ~���3g������5�J�%���O������n�kB�ĺ�.r��+���#�N$?�q�/�s�6��p��a����a��J/��M�8��6�ܰ"�*������ɗud"\w���aT(����[��F��U՛����RT�b���n�*��6���O��SJ�.�ij<�v�MT��R\c��5l�sZB>F��<7�;EA��{��E���Ö��1U/�#��d1�a�n.1ě����0�ʾR�h��|�R��Ao�3�m3 ��%�� ���28Q� ��y��φ���H�To�7�lW>����#i`�q���c����a��� �m,B�-j����݋�'mR1Ήt�>��V��p���s�0IbI�C.���1R�ea�����]H�6����������4B>��o��](��$B���m�����a�!=��?�B� K�Ǿ+�Ծ"�n���K��*��+��[T#�{E�J�S����Q�����s�5�:�U�\wĐ�f�3����܆&�)����I���Ԇw��E T�lrTf6Q|R�h:��[K�� �z��c֧�G�C��%\��_�a�84��HcO�bi��ؖV��7H �)*ģK~Xhչ0��4?�0��� �E<���}3���#���u�?�� ��|g�S�6ꊤ�|�I#Hڛ� �ա��w�X��9��7���Ŀ%�SL��y6č��|�F�a 8���b��$�sק�h���b9RAu7�˨p�Č�_\*w��묦��F ����4D~�f����|(�"m���NK��i�S�>�$d7SlA��/�²����SL��|6N�}���S�˯���g��]6��; �#�.��<���q'Q�1|KQ$�����񛩶"�$r�b:���N8�w@��8$�� �AjfG|~�9F ���Y��ʺ��Bwؒ������M:I岎�G��`s�YV5����6��A �b:�W���G�q%l�����F��H���7�������Fsv7��k�� 403WebShell
403Webshell
Server IP : 51.161.54.47  /  Your IP : 216.73.216.98
Web Server : Apache/2.4.68 (Unix) OpenSSL/1.1.1k
System : Linux host.ditinformatica.ar 4.18.0-553.153.1.el8_10.x86_64 #1 SMP Thu Aug 6 00:53:12 EDT 2026 x86_64
User : kalaycom ( 1021)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/nmap/nselib/data/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/nmap/nselib/data/http-fingerprints.lua
local io = require "io"
local string = require "string"
local table = require "table"

---HTTP Fingerprint files, compiled by Ron Bowes with a special thanks to...
-- o Kevin Johnson (@secureideas) for the fingerprints that come with Yokoso
--   http://yokoso.inguardians.com
-- o Jason H. (@jhaddix) for helping out with a whole pile of fingerprints he's
--   collected
-- o Bob Dooling
-- o Robert Rowley for the awesome open source cms and README checks
--   http://www.irvineunderground.org
--
-- This file is released under the Nmap license; see:
--  https://nmap.org/book/man-legal.html
--
-- @args http-fingerprints.nikto-db-path Looks at the given path for nikto database.
--       The database is expected to be a CSV file structured as nikto "db_tests".
--       It then converts the records in nikto's database into our Lua table format
--       and adds them to our current fingerprints if they don't exist already.
--       Unfortunately, our current implementation has some limitations:
--          * It doesn't support records with more than one 'dontmatch' patterns for
--            a probe.
--          * It doesn't support logical AND for the 'match' patterns.
--          * It doesn't support sending additional headers for a probe.
--       That means, if a nikto fingerprint needs one of the above features, it
--       won't be loaded. At the time of writing this, 6546 out of the 6573 Nikto
--       fingerprints are being loaded successfully.  This runtime Nikto fingerprint integration was suggested by Nikto co-author Chris Sullo as described at http://seclists.org/nmap-dev/2013/q4/292
--
-- Although this format was originally modeled after the Nikto format, that ended
-- up being too restrictive. The current format is a simple Lua table. There are many
-- advantages to this technique; it's powerful, we don't need to write custom parsing
-- code, anybody who codes in Lua can easily add checks, and we can write converters
-- to read Nikto and other formats if we want to.
--
-- The 'fingerprints' table is the key. It's an array of checks that will be run in the
-- order they're given. Each check consists of a path, zero or more matches, output text,
-- and other optional fields. Here are all the currently defined fields:
--
-- fingerprint.probes
-- A list of one or more probes to send to the server. Each probe is either a table containing
-- the key 'path' (and potentially others), or it's a string indicating the path.
--
-- fingerprint.probes[i].path
-- The URI to check, optionally containing GET arguments. This should start with a '/'
-- and, if it's a directory, end with a '/'.
--
-- fingerprint.probes[i].method [optional; default: 'GET'}}]
-- The HTTP method to use when making requests ('GET'}}, 'POST', 'HEAD', 'PUT', 'DELETE', etc
--
-- fingerprint.probes[i].nopipeline [optional; default: false]
-- Do not use HTTP pipelining to send this request.
--
-- fingerprint.probes[i].options [optional]
-- An options table as defined in http.lua. Can be used to provide POST data or
-- override defaults. Note that when HTTP pipelining is used, not all of these
-- options will be used.
--
-- fingerprint.ignore_404 [optional; default: false]
-- If set, the automatic checks for 404 and custom 404 pages are disabled for that check.
-- Every page will be included unless fingerprint.matches.dontmatch excludes it.
--
-- fingerprint.severity [optional; default: 1]
-- Give a severity rating, if it's a vulnerability. The scale is:
-- 1 - Info
-- 2 - Low priority
-- 3 - Warning
-- 4 - Critical
--
-- fingerprint.matches
-- An array of tables, each of which contains three fields. These will be checked, starting
-- from the first, until one is matched. If there is no 'match' text, it will fire as long
-- as the result isn't a 404. This match is not case sensitive.
--
-- fingerprint.matches[i].match
-- A string (specifically, a Lua pattern) that has to be found somewhere in the output to
-- count as a match. The string can be in the status line, in a header, or in the body.
-- In addition to matching, this field can contain captures that'll be included in the
-- output. See: http://lua-users.org/wiki/PatternsTutorial
--
-- fingerprint.matches[i].dontmatch
-- A string (specifically, a lua pattern) that cannot be found somewhere in the output.
-- This takes precedence over any text matched in the 'match' field
--
-- fingerprint.matches[i].output
-- The text to output if this match happens. If the 'match' field contains captures, these
-- captures can be used with \1, \2, etc.
--
-- If you have any questions, feel free to email dev@nmap.org or contact Ron Bowes!
--
-- CHANGELOG:
-- Added 120 new signatures taken from exploit-db.com archives from July 2009 to July 2011 [Paulino Calderon]
-- Added the option to read nikto's database and make use of its fingerprints. [George Chatzisofroniou]
--

fingerprints = {};

------------------------------------------------
----           GENERAL CHECKS               ----
------------------------------------------------
-- These are checks for generic paths, like /wiki, /images, /admin, etc

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<title>Index of .*(Apache.*) Server at',
        output = 'Root directory w/ listing on \'\\1\''
      },
      {
        match = '<title>Index of',
        output = 'Root directory w/ directory listing'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/blog/',
        method = 'HEAD'
      },
      {
        path = '/weblog/',
        method = 'HEAD'
      },
      {
        path = '/weblogs/',
        method = 'HEAD'
      },
      {
        path = '/wordpress/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        output = 'Blog'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/wiki/',
        method = 'HEAD'
      },
      {
        path = '/mediawiki/',
        method = 'HEAD'
      },
      {
        path = '/wiki/Main_Page',
        method = 'HEAD'
      }
    },
    matches = {
      {
        output = 'Wiki'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/tikiwiki/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        output = 'Tikiwiki'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-bin/mj_wwwusr',
        method = 'HEAD'
      },
      {
        path = '/majordomo/mj_wwwusr',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Majordomo2 Mailing List'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/j2ee/examples/servlets/',
        method = 'HEAD'
      },
      {
        path = '/j2ee/examples/jsp/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Oracle j2ee examples'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/dsc/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Trend Micro Data Loss Prevention Virtual Appliance'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/reg_1.htm',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Polycom IP phone'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/adr.htm',
        method = 'HEAD'
      },
      {
        path = '/line_login.htm?l=1',
        method = 'HEAD'
      },
      {
        path = '/tbook.csv',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Snom IP Phone'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/globalSIPsettings.html',
        method = 'HEAD'
      },
      {
        path = '/SIPsettingsLine1.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Aastra IP Phone'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/websvn/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'WEBSVN Repository'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/repos/',
        method = 'GET'
      },
      {
        path = '/repo/',
        method = 'GET'
      },
      {
        path = '/svn/',
        method = 'GET'
      },
      {
        path = '/cvs/',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'realm=".-Subversion.-"',
        output = 'Subversion Repository'
      },
      {
        match = '',
        output = 'Possible code repository'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/archiva/index.action',
        method = 'GET'
      },
      {
        path = '/index.action',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '.*">Apache Archiva (.-)</a>',
        output = 'Apache Archiva version \\1'
      },
      {
        match = 'Apache Archiva (%d-%..-)\n',
        output = 'Apache Archiva version \\1'
      },
      {
        match = '<title>Apache Archiva \\',
        output = 'Apache Archiva'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/login.stm',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Belkin G Wireless Router'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/tools_admin.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'D-Link DIR-300'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/bsc_lan.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'D-Link DIR-300, DIR-320, DIR-615 revD'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/Manage.tri',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Linksys WRT54G2'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/logo_t.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = 'IP_SHARER WEB',
        output = 'Belkin/Arris 2307'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '//system.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'CMNC-200 IP Camera'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/main_configure.cgi',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Intellinet IP Camera'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/OvCgi/Toolbar.exe',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'HP OpenView Network Node Manager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/frontend/x3/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'CPanel'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/awstatstotals/awstatstotals.php',
        method = 'HEAD'
      },
      {
        path = '/awstats/awstatstotals.php',
        method = 'HEAD'
      },
      {
        path = '/awstatstotals.php',
        method = 'HEAD'
      },
      {
        path = '/awstats/index.php',
        method = 'HEAD'
      },
      {
        path = '/awstatstotals/index.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'AWStats Totals'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/egroupware/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'eGroupware'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/calendar/cal_search.php',
        method = 'HEAD'
      },
      {
        path = '/cal_search.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'ExtCalendar'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/a_viewusers.php',
        method = 'HEAD'
      },
      {
        path = '/aphpkb/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Andys PHP Knowledgebase'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/webedition/we/include/we_modules/',
        method = 'HEAD'
      },
      {
        path = '/webedition/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Web Edition'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/Examples/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Possible documentation files'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/LightNEasy.php?do=login',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'LightNEasy'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/channel_detail.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'DzTube'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-bin/vcs',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Mitel Audio and Web Conferencing (AWC)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/ocsreports/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'OCS Inventory'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/vbseo.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'vBSEO'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/forum/',
        method = 'HEAD'
      },
      {
        path = '/forums/',
        method = 'HEAD'
      },
      {
        path = '/smf/',
        method = 'HEAD'
      },
      {
        path = '/phpbb/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        output = 'Forum'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/manager/',
        method = 'HEAD'
      },
      {
        path = '/admin.php',
        method = 'HEAD'
      },
      {
        path = '/admin/',
        method = 'HEAD'
      },
      {
        path = '/admin/admin/',
        method = 'HEAD'
      },
      {
        path = '/administrator/',
        method = 'HEAD'
      },
      {
        path = '/moderator/',
        method = 'HEAD'
      },
      {
        path = '/webadmin/',
        method = 'HEAD'
      },
      {
        path = '/adminarea/',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/',
        method = 'HEAD'
      },
      {
        path = '/adminLogin/',
        method = 'HEAD'
      },
      {
        path = '/admin_area/',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/',
        method = 'HEAD'
      },
      {
        path = '/instadmin/',
        method = 'HEAD'
      },
      {
        path = '/memberadmin/',
        method = 'HEAD'
      },
      {
        path = '/administratorlogin/',
        method = 'HEAD'
      },
      {
        path = '/adm/',
        method = 'HEAD'
      },
      {
        path = '/admin/account.php',
        method = 'HEAD'
      },
      {
        path = '/admin/index.php',
        method = 'HEAD'
      },
      {
        path = '/admin/login.php',
        method = 'HEAD'
      },
      {
        path = '/admin/admin.php',
        method = 'HEAD'
      },
      {
        path = '/joomla/administrator',
        method = 'HEAD'
      },
      {
        path = '/login.php',
        method = 'HEAD'
      },
      {
        path = '/admin_area/admin.php',
        method = 'HEAD'
      },
      {
        path = '/admin_area/login.php',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/login.php',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/index.php',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/login.html',
        method = 'HEAD'
      },
      {
        path = '/admin/index.html',
        method = 'HEAD'
      },
      {
        path = '/admin/login.html',
        method = 'HEAD'
      },
      {
        path = '/admin/admin.html',
        method = 'HEAD'
      },
      {
        path = '/admin_area/index.php',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/index.php',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/login.php',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/admin.php',
        method = 'HEAD'
      },
      {
        path = '/admin/home.php',
        method = 'HEAD'
      },
      {
        path = '/admin_area/login.html',
        method = 'HEAD'
      },
      {
        path = '/admin_area/index.html',
        method = 'HEAD'
      },
      {
        path = '/admin/controlpanel.php',
        method = 'HEAD'
      },
      {
        path = '/admincp/',
        method = 'HEAD'
      },
      {
        path = '/admincp/index.asp',
        method = 'HEAD'
      },
      {
        path = '/admincp/index.html',
        method = 'HEAD'
      },
      {
        path = '/admincp/login.php',
        method = 'HEAD'
      },
      {
        path = '/admin/account.html',
        method = 'HEAD'
      },
      {
        path = '/adminpanel.html',
        method = 'HEAD'
      },
      {
        path = '/webadmin.html',
        method = 'HEAD'
      },
      {
        path = '/webadmin/index.html',
        method = 'HEAD'
      },
      {
        path = '/webadmin/admin.html',
        method = 'HEAD'
      },
      {
        path = '/webadmin/login.html',
        method = 'HEAD'
      },
      {
        path = '/admin/admin_login.html',
        method = 'HEAD'
      },
      {
        path = '/admin_login.html',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/login.html',
        method = 'HEAD'
      },
      {
        path = '/admin/cp.php',
        method = 'HEAD'
      },
      {
        path = '/cp.php',
        method = 'HEAD'
      },
      {
        path = '/administrator/index.php',
        method = 'HEAD'
      },
      {
        path = '/administrator/login.php',
        method = 'HEAD'
      },
      {
        path = '/nsw/admin/login.php',
        method = 'HEAD'
      },
      {
        path = '/webadmin/login.php',
        method = 'HEAD'
      },
      {
        path = '/admin/admin_login.php',
        method = 'HEAD'
      },
      {
        path = '/admin_login.php',
        method = 'HEAD'
      },
      {
        path = '/administrator/account.php',
        method = 'HEAD'
      },
      {
        path = '/administrator.php',
        method = 'HEAD'
      },
      {
        path = '/admin_area/admin.html',
        method = 'HEAD'
      },
      {
        path = '/pages/admin/admin-login.php',
        method = 'HEAD'
      },
      {
        path = '/admin/admin-login.php',
        method = 'HEAD'
      },
      {
        path = '/admin-login.php',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/index.html',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/login.html',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/admin.html',
        method = 'HEAD'
      },
      {
        path = '/admin/home.html',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/login.php',
        method = 'HEAD'
      },
      {
        path = '/moderator.php',
        method = 'HEAD'
      },
      {
        path = '/moderator/login.php',
        method = 'HEAD'
      },
      {
        path = '/moderator/admin.php',
        method = 'HEAD'
      },
      {
        path = '/account.php',
        method = 'HEAD'
      },
      {
        path = '/pages/admin/admin-login.html',
        method = 'HEAD'
      },
      {
        path = '/admin/admin-login.html',
        method = 'HEAD'
      },
      {
        path = '/admin-login.html',
        method = 'HEAD'
      },
      {
        path = '/controlpanel.php',
        method = 'HEAD'
      },
      {
        path = '/admincontrol.php',
        method = 'HEAD'
      },
      {
        path = '/admin/adminLogin.html',
        method = 'HEAD'
      },
      {
        path = '/adminLogin.html',
        method = 'HEAD'
      },
      {
        path = '/home.html',
        method = 'HEAD'
      },
      {
        path = '/rcjakar/admin/login.php',
        method = 'HEAD'
      },
      {
        path = '/adminarea/index.html',
        method = 'HEAD'
      },
      {
        path = '/adminarea/admin.html',
        method = 'HEAD'
      },
      {
        path = '/webadmin.php',
        method = 'HEAD'
      },
      {
        path = '/webadmin/index.php',
        method = 'HEAD'
      },
      {
        path = '/webadmin/admin.php',
        method = 'HEAD'
      },
      {
        path = '/admin/controlpanel.html',
        method = 'HEAD'
      },
      {
        path = '/admin.html',
        method = 'HEAD'
      },
      {
        path = '/admin/cp.html',
        method = 'HEAD'
      },
      {
        path = '/cp.html',
        method = 'HEAD'
      },
      {
        path = '/adminpanel.php',
        method = 'HEAD'
      },
      {
        path = '/moderator.html',
        method = 'HEAD'
      },
      {
        path = '/administrator/index.html',
        method = 'HEAD'
      },
      {
        path = '/administrator/login.html',
        method = 'HEAD'
      },
      {
        path = '/user.html',
        method = 'HEAD'
      },
      {
        path = '/administrator/account.html',
        method = 'HEAD'
      },
      {
        path = '/administrator.html',
        method = 'HEAD'
      },
      {
        path = '/login.html',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/login.html',
        method = 'HEAD'
      },
      {
        path = '/moderator/login.html',
        method = 'HEAD'
      },
      {
        path = '/adminarea/login.html',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/index.html',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/admin.html',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/index.html',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/admin.html',
        method = 'HEAD'
      },
      {
        path = '/admincontrol/login.html',
        method = 'HEAD'
      },
      {
        path = '/adm/index.html',
        method = 'HEAD'
      },
      {
        path = '/adm.html',
        method = 'HEAD'
      },
      {
        path = '/moderator/admin.html',
        method = 'HEAD'
      },
      {
        path = '/user.php',
        method = 'HEAD'
      },
      {
        path = '/account.html',
        method = 'HEAD'
      },
      {
        path = '/controlpanel.html',
        method = 'HEAD'
      },
      {
        path = '/admincontrol.html',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/login.php',
        method = 'HEAD'
      },
      {
        path = '/wp-login.php',
        method = 'HEAD'
      },
      {
        path = '/wp-json',
        method = 'HEAD'
      },
      {
        path = '/adminLogin.php',
        method = 'HEAD'
      },
      {
        path = '/admin/adminLogin.php',
        method = 'HEAD'
      },
      {
        path = '/adminarea/index.php',
        method = 'HEAD'
      },
      {
        path = '/adminarea/admin.php',
        method = 'HEAD'
      },
      {
        path = '/adminarea/login.php',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/index.php',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/admin.php',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/index.php',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/admin.php',
        method = 'HEAD'
      },
      {
        path = '/admincontrol/login.php',
        method = 'HEAD'
      },
      {
        path = '/adm/admloginuser.php',
        method = 'HEAD'
      },
      {
        path = '/admloginuser.php',
        method = 'HEAD'
      },
      {
        path = '/admin2.php',
        method = 'HEAD'
      },
      {
        path = '/admin2/login.php',
        method = 'HEAD'
      },
      {
        path = '/admin2/index.php',
        method = 'HEAD'
      },
      {
        path = '/adm/index.php',
        method = 'HEAD'
      },
      {
        path = '/adm.php',
        method = 'HEAD'
      },
      {
        path = '/affiliate.php',
        method = 'HEAD'
      },
      {
        path = '/adm_auth.php',
        method = 'HEAD'
      },
      {
        path = '/memberadmin.php',
        method = 'HEAD'
      },
      {
        path = '/administratorlogin.php',
        method = 'HEAD'
      },
      {
        path = '/account.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/account.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/admin_login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin_login.cfm',
        method = 'HEAD'
      },
      {
        path = '/adminpanel.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/controlpanel.cfm',
        method = 'HEAD'
      },
      {
        path = '/admincontrol.cfm',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/cp.cfm',
        method = 'HEAD'
      },
      {
        path = '/pages/admin/admin-login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admincp/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/admincp/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin_area/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin_area/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/moderator/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/administrator/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/moderator.cfm',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/adm/admloginuser.cfm',
        method = 'HEAD'
      },
      {
        path = '/adm.cfm',
        method = 'HEAD'
      },
      {
        path = '/adm_auth.cfm',
        method = 'HEAD'
      },
      {
        path = '/administratorlogin.cfm',
        method = 'HEAD'
      },
      {
        path = '/webadmin.cfm',
        method = 'HEAD'
      },
      {
        path = '/webadmin/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/administrator.cfm',
        method = 'HEAD'
      },
      {
        path = '/administrator/account.cfm',
        method = 'HEAD'
      },
      {
        path = '/adminLogin.cfm',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin2/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/adm/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin_area/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/memberadmin.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin2/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admloginuser.cfm',
        method = 'HEAD'
      },
      {
        path = '/admincontrol/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/administrator/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/adminarea/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/adminarea/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/adminarea/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/adminLogin.cfm',
        method = 'HEAD'
      },
      {
        path = '/webadmin/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/webadmin/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/user.cfm',
        method = 'HEAD'
      },
      {
        path = '/controlpanel.cfm',
        method = 'HEAD'
      },
      {
        path = '/moderator/admin.cfm',
        method = 'HEAD'
      },
      {
        path = '/cp.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin-login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/admin-login.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin/home.cfm',
        method = 'HEAD'
      },
      {
        path = '/adm1n/',
        method = 'HEAD'
      },
      {
        path = '/4dm1n/',
        method = 'HEAD'
      },
      {
        path = '/account.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/account.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/index.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/login.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/admin_area/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/admin_area/login.asp',
        method = 'HEAD'
      },
      {
        path = '/admin_area/index.asp',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/index.asp',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/login.asp',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/home.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/controlpanel.asp',
        method = 'HEAD'
      },
      {
        path = '/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/pages/admin/admin-login.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/admin-login.asp',
        method = 'HEAD'
      },
      {
        path = '/admin-login.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/cp.asp',
        method = 'HEAD'
      },
      {
        path = '/cp.asp',
        method = 'HEAD'
      },
      {
        path = '/administrator/account.asp',
        method = 'HEAD'
      },
      {
        path = '/administrator.asp',
        method = 'HEAD'
      },
      {
        path = '/login.asp',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/login.asp',
        method = 'HEAD'
      },
      {
        path = '/moderator.asp',
        method = 'HEAD'
      },
      {
        path = '/moderator/login.asp',
        method = 'HEAD'
      },
      {
        path = '/administrator/login.asp',
        method = 'HEAD'
      },
      {
        path = '/moderator/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/controlpanel.asp',
        method = 'HEAD'
      },
      {
        path = '/user.asp',
        method = 'HEAD'
      },
      {
        path = '/admincp/login.asp',
        method = 'HEAD'
      },
      {
        path = '/admincontrol.asp',
        method = 'HEAD'
      },
      {
        path = '/adminpanel.asp',
        method = 'HEAD'
      },
      {
        path = '/webadmin.asp',
        method = 'HEAD'
      },
      {
        path = '/webadmin/index.asp',
        method = 'HEAD'
      },
      {
        path = '/webadmin/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/webadmin/login.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/admin_login.asp',
        method = 'HEAD'
      },
      {
        path = '/admin_login.asp',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/login.asp',
        method = 'HEAD'
      },
      {
        path = '/adminLogin.asp',
        method = 'HEAD'
      },
      {
        path = '/admin/adminLogin.asp',
        method = 'HEAD'
      },
      {
        path = '/home.asp',
        method = 'HEAD'
      },
      {
        path = '/adminarea/index.asp',
        method = 'HEAD'
      },
      {
        path = '/adminarea/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/adminarea/login.asp',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/index.asp',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/index.asp',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/admin.asp',
        method = 'HEAD'
      },
      {
        path = '/administrator/index.asp',
        method = 'HEAD'
      },
      {
        path = '/admincontrol/login.asp',
        method = 'HEAD'
      },
      {
        path = '/adm/admloginuser.asp',
        method = 'HEAD'
      },
      {
        path = '/admloginuser.asp',
        method = 'HEAD'
      },
      {
        path = '/admin2.asp',
        method = 'HEAD'
      },
      {
        path = '/admin2/login.asp',
        method = 'HEAD'
      },
      {
        path = '/admin2/index.asp',
        method = 'HEAD'
      },
      {
        path = '/adm/index.asp',
        method = 'HEAD'
      },
      {
        path = '/adm.asp',
        method = 'HEAD'
      },
      {
        path = '/adm_auth.asp',
        method = 'HEAD'
      },
      {
        path = '/memberadmin.asp',
        method = 'HEAD'
      },
      {
        path = '/administratorlogin.asp',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/login.asp',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/index.asp',
        method = 'HEAD'
      },
      {
        path = '/account.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/account.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin_area/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin_area/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin_area/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/home.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/controlpanel.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/pages/admin/admin-login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/admin-login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin-login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/cp.aspx',
        method = 'HEAD'
      },
      {
        path = '/cp.aspx',
        method = 'HEAD'
      },
      {
        path = '/administrator/account.aspx',
        method = 'HEAD'
      },
      {
        path = '/administrator.aspx',
        method = 'HEAD'
      },
      {
        path = '/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/moderator.aspx',
        method = 'HEAD'
      },
      {
        path = '/moderator/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/administrator/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/moderator/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/controlpanel.aspx',
        method = 'HEAD'
      },
      {
        path = '/user.aspx',
        method = 'HEAD'
      },
      {
        path = '/admincp/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/admincp/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admincontrol.aspx',
        method = 'HEAD'
      },
      {
        path = '/adminpanel.aspx',
        method = 'HEAD'
      },
      {
        path = '/webadmin.aspx',
        method = 'HEAD'
      },
      {
        path = '/webadmin/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/webadmin/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/webadmin/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/admin_login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin_login.aspx',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/adminLogin.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin/adminLogin.aspx',
        method = 'HEAD'
      },
      {
        path = '/home.aspx',
        method = 'HEAD'
      },
      {
        path = '/adminarea/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/adminarea/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/adminarea/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/admin.aspx',
        method = 'HEAD'
      },
      {
        path = '/administrator/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/admincontrol/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/adm/admloginuser.aspx',
        method = 'HEAD'
      },
      {
        path = '/admloginuser.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin2.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin2/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/admin2/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/adm/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/adm.aspx',
        method = 'HEAD'
      },
      {
        path = '/adm_auth.aspx',
        method = 'HEAD'
      },
      {
        path = '/memberadmin.aspx',
        method = 'HEAD'
      },
      {
        path = '/administratorlogin.aspx',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/index.aspx',
        method = 'HEAD'
      },
      {
        path = '/account.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin_area/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin_area/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin_area/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/bb-admin/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/home.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/controlpanel.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/pages/admin/admin-login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/admin-login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin-login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/cp.jsp',
        method = 'HEAD'
      },
      {
        path = '/cp.jsp',
        method = 'HEAD'
      },
      {
        path = '/administrator/account.jsp',
        method = 'HEAD'
      },
      {
        path = '/administrator.jsp',
        method = 'HEAD'
      },
      {
        path = '/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/moderator.jsp',
        method = 'HEAD'
      },
      {
        path = '/moderator/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/administrator/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/moderator/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/controlpanel.jsp',
        method = 'HEAD'
      },
      {
        path = '/user.jsp',
        method = 'HEAD'
      },
      {
        path = '/admincp/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/admincp/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admincontrol.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/account.jsp',
        method = 'HEAD'
      },
      {
        path = '/adminpanel.jsp',
        method = 'HEAD'
      },
      {
        path = '/webadmin.jsp',
        method = 'HEAD'
      },
      {
        path = '/webadmin/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/webadmin/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/webadmin/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/admin_login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin_login.jsp',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/adminLogin.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin/adminLogin.jsp',
        method = 'HEAD'
      },
      {
        path = '/home.jsp',
        method = 'HEAD'
      },
      {
        path = '/adminarea/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/adminarea/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/adminarea/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/panel-administracion/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/modelsearch/admin.jsp',
        method = 'HEAD'
      },
      {
        path = '/administrator/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/admincontrol/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/adm/admloginuser.jsp',
        method = 'HEAD'
      },
      {
        path = '/admloginuser.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin2.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin2/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin2/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/adm/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/adm.jsp',
        method = 'HEAD'
      },
      {
        path = '/adm_auth.jsp',
        method = 'HEAD'
      },
      {
        path = '/memberadmin.jsp',
        method = 'HEAD'
      },
      {
        path = '/administratorlogin.jsp',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/login.jsp',
        method = 'HEAD'
      },
      {
        path = '/siteadmin/index.jsp',
        method = 'HEAD'
      },
      {
        path = '/admin1.php',
        method = 'HEAD'
      },
      {
        path = '/administr8.asp',
        method = 'HEAD'
      },
      {
        path = '/administr8.php',
        method = 'HEAD'
      },
      {
        path = '/administr8.jsp',
        method = 'HEAD'
      },
      {
        path = '/administr8.aspx',
        method = 'HEAD'
      },
      {
        path = '/administr8.cfm',
        method = 'HEAD'
      },
      {
        path = '/administr8/',
        method = 'HEAD'
      },
      {
        path = '/administer/',
        method = 'HEAD'
      },
      {
        path = '/administracao.php',
        method = 'HEAD'
      },
      {
        path = '/administracao.asp',
        method = 'HEAD'
      },
      {
        path = '/administracao.aspx',
        method = 'HEAD'
      },
      {
        path = '/administracao.cfm',
        method = 'HEAD'
      },
      {
        path = '/administracao.jsp',
        method = 'HEAD'
      },
      {
        path = '/administracion.php',
        method = 'HEAD'
      },
      {
        path = '/administracion.asp',
        method = 'HEAD'
      },
      {
        path = '/administracion.aspx',
        method = 'HEAD'
      },
      {
        path = '/administracion.jsp',
        method = 'HEAD'
      },
      {
        path = '/administracion.cfm',
        method = 'HEAD'
      },
      {
        path = '/administrators/',
        method = 'HEAD'
      },
      {
        path = '/adminpro/',
        method = 'HEAD'
      },
      {
        path = '/admins/',
        method = 'HEAD'
      },
      {
        path = '/admins.cfm',
        method = 'HEAD'
      },
      {
        path = '/admins.php',
        method = 'HEAD'
      },
      {
        path = '/admins.jsp',
        method = 'HEAD'
      },
      {
        path = '/admins.asp',
        method = 'HEAD'
      },
      {
        path = '/admins.aspx',
        method = 'HEAD'
      },
      {
        path = '/maintenance/',
        method = 'HEAD'
      },
      {
        path = '/Lotus_Domino_Admin/',
        method = 'HEAD'
      },
      {
        path = '/hpwebjetadmin/',
        method = 'HEAD'
      },
      {
        path = '/_admin/',
        method = 'HEAD'
      },
      {
        path = '/_administrator/',
        method = 'HEAD'
      },
      {
        path = '/_administrador/',
        method = 'HEAD'
      },
      {
        path = '/_admins/',
        method = 'HEAD'
      },
      {
        path = '/_administrators/',
        method = 'HEAD'
      },
      {
        path = '/_administradores/',
        method = 'HEAD'
      },
      {
        path = '/_administracion/',
        method = 'HEAD'
      },
      {
        path = '/_4dm1n/',
        method = 'HEAD'
      },
      {
        path = '/_adm1n/',
        method = 'HEAD'
      },
      {
        path = '/_Admin/',
        method = 'HEAD'
      },
      {
        path = '/system_administration/',
        method = 'HEAD'
      },
      {
        path = '/system-administration/',
        method = 'HEAD'
      },
      {
        path = '/system-admin/',
        method = 'HEAD'
      },
      {
        path = '/system-admins/',
        method = 'HEAD'
      },
      {
        path = '/system-administrators/',
        method = 'HEAD'
      },
      {
        path = '/administracion-sistema/',
        method = 'HEAD'
      },
      {
        path = '/Administracion/',
        method = 'HEAD'
      },
      {
        path = '/Admin/',
        method = 'HEAD'
      },
      {
        path = '/Administrator/',
        method = 'HEAD'
      },
      {
        path = '/Manager/',
        method = 'HEAD'
      },
      {
        path = '/Adm/',
        method = 'HEAD'
      },
      {
        path = '/systemadmin/',
        method = 'HEAD'
      },
      {
        path = '/AdminLogin.asp',
        method = 'HEAD'
      },
      {
        path = '/AdminLogin.php',
        method = 'HEAD'
      },
      {
        path = '/AdminLogin.jsp',
        method = 'HEAD'
      },
      {
        path = '/AdminLogin.aspx',
        method = 'HEAD'
      },
      {
        path = '/AdminLogin.cfm',
        method = 'HEAD'
      },
      {
        path = '/admin108/',
        method = 'HEAD'
      },
      {
        path = '/pec_admin/',
        method = 'HEAD'
      },
      {
        path = '/system/admin/',
        method = 'HEAD'
      },
      {
        path = '/plog-admin/',
        method = 'HEAD'
      },
      {
        path = '/ESAdmin/',
        method = 'HEAD'
      },
      {
        path = '/axis2-admin/',
        method = 'HEAD'
      },
      {
        path = '/_sys/',
        method = 'HEAD'
      },
      {
        path = '/admin_cp.asp',
        method = 'HEAD'
      },
      {
        path = '/sitecore/admin/',
        method = 'HEAD'
      },
      {
        path = '/sitecore/login/admin/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '<title>Index of',
        output = 'Possible admin folder w/ directory listing'
      },
      {
        output = 'Possible admin folder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/backup/',
        method = 'GET'
      },
      {
        path = '/backup',
        method = 'GET'
      },
      {
        path = '/backup.sql',
        method = 'GET'
      },
      {
        path = '/backup.sql.gz',
        method = 'GET'
      },
      {
        path = '/backup.sql.bz2',
        method = 'GET'
      },
      {
        path = '/backup.zip',
        method = 'GET'
      },
      {
        path = '/backups/',
        method = 'GET'
      },
      {
        path = '/bak/',
        method = 'GET'
      },
      {
        path = '/back/',
        method = 'GET'
      },
      {
        path = '/cache/backup/',
        method = 'GET'
      },
      {
        path = '/admin/backup/',
        method = 'GET'
      },
      {
        path = '/dbbackup.txt',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<title>Index of',
        output = 'Backup folder w/ directory listing'
      },
      {
        match = '',
        output = 'Possible backup'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/b.sql',
        method = 'HEAD'
      },
      {
        path = '/db.sql',
        method = 'HEAD'
      },
      {
        path = '/ddb.sql',
        method = 'HEAD'
      },
      {
        path = '/users.sql',
        method = 'HEAD'
      },
      {
        path = '/database.sql',
        method = 'HEAD'
      },
      {
        path = '/mysql.sql',
        method = 'HEAD'
      },
      {
        path = '/dump.sql',
        method = 'HEAD'
      },
      {
        path = '/respaldo.sql',
        method = 'HEAD'
      },
      {
        path = '/data.sql',
        method = 'HEAD'
      },
      {
        path = '/old.sql',
        method = 'HEAD'
      },
      {
        path = '/usuarios.sql',
        method = 'HEAD'
      },
      {
        path = '/bdb.sql',
        method = 'HEAD'
      },
      {
        path = '/1.sql',
        method = 'HEAD'
      },
      {
        path = '/admin/download/backup.sql',
        method = 'HEAD'
      }

    },
    matches = {
      {
        match = '',
        output = 'Possible database backup'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/clientaccesspolicy.xml',
        method = 'HEAD'
      },
    },
    matches = {
      {
        output = 'Microsoft Silverlight crossdomain policy'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/atom/',
        method = 'HEAD'
      },
      {
        path = '/atom.aspx',
        method = 'HEAD'
      },
      {
        path = '/atom.php',
        method = 'HEAD'
      },
      {
        path = '/atom.xml',
        method = 'HEAD'
      },
      {
        path = '/atom.jsp',
        method = 'HEAD'
      },
      {
        path = '/rss/',
        method = 'HEAD'
      },
      {
        path = '/rss.aspx',
        method = 'HEAD'
      },
      {
        path = '/rss.php',
        method = 'HEAD'
      },
      {
        path = '/rss.xml',
        method = 'HEAD'
      },
      {
        path = '/rss.jsp',
        method = 'HEAD'
      }
    },
    matches = {
      {
        output = 'RSS or Atom feed'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/etc/passwd',
        method = 'GET'
      },
      {
        path = '/boot.ini',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'root:',
        output = 'Webroot appears to be in / (Linux)'
      },
      {
        match = 'boot loader',
        output = 'Webroot appears to be in c:\\ (Windows)'
      },
      {
        match = '',
        output = 'Webroot might be in root folder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/example/',
        method = 'GET'
      },
      {
        path = '/examples/',
        method = 'GET'
      },
      {
        path = '/iissamples/',
        method = 'GET'
      },
      {
        path = '/j2eeexamples/',
        method = 'GET'
      },
      {
        path = '/j2eeexamplesjsp/',
        method = 'GET'
      },
      {
        path = '/sample/',
        method = 'GET'
      },
      {
        path = '/ncsample/',
        method = 'GET'
      },
      {
        path = '/fpsample/',
        method = 'GET'
      },
      {
        path = '/cmsample/',
        method = 'GET'
      },
      {
        path = '/samples/',
        method = 'GET'
      },
      {
        path = '/mono/1.1/index.aspx',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<title>Index of .*(Apache.*) Server at',
        output = 'Sample scripts w/ listing on \'\\1\''
      },
      {
        match = '<title>Index of',
        output = 'Sample scripts w/ directory listing'
      },
      {
        match = '',
        output = 'Sample scripts'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/login/',
        method = 'HEAD'
      },
      {
        path = '/login.htm',
        method = 'HEAD'
      },
      {
        path = '/login.jsp',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Login page'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/test.asp',
        method = 'HEAD'
      },
      {
        path = '/test.class',
        method = 'HEAD'
      },
      {
        path = '/test/',
        method = 'HEAD'
      },
      {
        path = '/test.htm',
        method = 'HEAD'
      },
      {
        path = '/test.html',
        method = 'HEAD'
      },
      {
        path = '/test.php',
        method = 'HEAD'
      },
      {
        path = '/test.txt',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Test page'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/webmail/',
        method = 'HEAD'
      },
      {
        path = '/mail/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Mail folder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/log/',
        method = 'HEAD'
      },
      {
        path = '/log.htm',
        method = 'HEAD'
      },
      {
        path = '/log.php',
        method = 'HEAD'
      },
      {
        path = '/log.asp',
        method = 'HEAD'
      },
      {
        path = '/log.aspx',
        method = 'HEAD'
      },
      {
        path = '/log.jsp',
        method = 'HEAD'
      },
      {
        path = '/logs/',
        method = 'HEAD'
      },
      {
        path = '/logs.htm',
        method = 'HEAD'
      },
      {
        path = '/logs.php',
        method = 'HEAD'
      },
      {
        path = '/logs.asp',
        method = 'HEAD'
      },
      {
        path = '/logs.aspx',
        method = 'HEAD'
      },
      {
        path = '/logs.jsp',
        method = 'HEAD'
      },
      {
        path = '/wwwlog/',
        method = 'HEAD'
      },
      {
        path = '/wwwlogs/',
        method = 'HEAD'
      },
      {
        path = '/mail_log_files/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Logs'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/images/rails.png',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Ruby on Rails'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/mono/',
        method = 'HEAD'
      },
    },

    matches = {
      {
        match = '',
        output = 'Mono'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/robots.txt',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Robots file'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/crossdomain.xml',
        method = 'HEAD'
      },
    },
    matches = {
      {
        output = 'Adobe Flash crossdomain policy'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/css/cake.generic.css',
        method = 'HEAD'
      },
      {
        path = '/img/cake.icon.gif',
        method = 'HEAD'
      },
      {
        path = '/img/cake.icon.png',
        method = 'HEAD'
      },
      {
        path = '/js/vendors.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'CakePHP application'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-bin/ffileman.cgi?',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Ffileman Web File Manager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/fshow.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Horizon Web App'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/admin/upload.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Admin File Upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/upload_multiple_js.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'NAS Uploader'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/uploadtester.asp',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Free ASP Upload Shell'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/info.php',
        method = 'HEAD'
      },
      {
        path = '/phpinfo.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Possible information file'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/kusabax/manage_page.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Kusabax Image Board'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/plus/lurking.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'phpMyChat Plus'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/adm/barra/assetmanager/assetmanager.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = '360 Web Manager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/eyeos/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Possible eyeOS installation'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/NETWARE.HTM',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Planet FPS-1101'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/setup.cgi',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Linksys Cisco Wag120n or similar'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/debug.cgi',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Linksys WRT54G'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/ehcp/?op=applyforftpaccount',
        method = 'HEAD'
      },
      {
        path = '/ehcp/?op=applyforaccount',
        method = 'HEAD'
      },
      {
        path = '/ehcp/?op=applyfordomainaccount',
        method = 'HEAD'
      },
      {
        path = '/vhosts/ehcp/?op=applyforftpaccount',
        method = 'HEAD'
      },
      {
        path = '/vhosts/ehcp/?op=applyforaccount',
        method = 'HEAD'
      },
      {
        path = '/vhosts/ehcp/?op=applyfordomainaccount',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Easy Hosting Control Panel'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/tools_admin.cgi?',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'D-Link WBR-1310'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/level/15',
        method = 'HEAD'
      },
      {
        path = '/exec/show/log/CR',
        method = 'HEAD'
      },
      {
        path = '/level/15/exec/-/configure/http',
        method = 'HEAD'
      },
      {
        path = '/level/15/exec/-',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = 'cisco-IOS',
        output = 'Cisco 2811'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/appServer/jvmReport.jsf?instanceName=server&pageTitle=JVM%20Report',
        method = 'HEAD'
      },
      {
        path = '/common/appServer/jvmReport.jsf?pageTitle=JVM%20Report',
        method = 'HEAD'
      },
      {
        path = '/common/appServer/jvmReport.jsf?reportType=summary&instanceName=server',
        method = 'HEAD'
      }
   },
    matches = {
      {
        match = '',
        output = 'Oracle GlashFish Server Information'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/console/login/loginForm.jsp',
        method = 'HEAD'
      }
   },
    matches = {
      {
        match = '',
        output = 'Oracle WebLogic Server Administration Console'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/login_img.jpg',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = 'RapidLogic',
        output = 'AIRAYA WirelessGRID'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cirronetlogo.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = 'Cirronet Wavebolt-AP',
        output = 'Cirronet Wavebolt'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/browserId/wizardForm.jhtml',
        method = 'HEAD'
      },
      {
        path = '/webline/html/forms/callback.jhtml',
        method = 'HEAD'
      },
      {
        path = '/webline/html/forms/callbackICM.jhtml',
        method = 'HEAD'
      },
      {
        path = '/webline/html/agent/AgentFrame.jhtml',
        method = 'HEAD'
      },
      {
        path = '/webline/html/agent/default/badlogin.jhtml',
        method = 'HEAD'
      },
      {
        path = '/callme/callForm.jhtml',
        method = 'HEAD'
      },
      {
        path = '/webline/html/multichatui/nowDefunctWindow.jhtml',
        method = 'HEAD'
      },
      {
        path = '/browserId/wizard.jhtml',
        method = 'HEAD'
      },
      {
        path = '/admin/CiscoAdmin.jhtml',
        method = 'HEAD'
      },
      {
        path = '/msccallme/mscCallForm.jhtml',
        method = 'HEAD'
      },
      {
        path = '/webline/html/admin/wcs/LoginPage.jhtml',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Cisco Collaboration Server'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/restoreinfo.cgi',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Sagem router'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/confirminvite.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'phpMyBitTorrent'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/sourcebans/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'SourceBans - Steam server application'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/swfupload/index.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'SWFUpload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/mymarket/shopping/index.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'MyMarket'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/myshop_start.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'FozzCom shopping'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/piranha/secure/passwd.php3',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'RedHat Piranha Virtual Server'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-bin/ck/mimencode',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'ContentKeeper Web Appliance'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-bin/masterCGI?',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Alcatel-Lucent OmniPCX Enterprise'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/tiny_mce/plugins/filemanager/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Tiny MCE File Upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/upload/scp/ajax.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'osTicket / AJAX File Upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-mod/view_help.cgi',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Barracuda Networks Spam & Virus Firewall'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-mod/index.cgi',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Barracuda Web Application Firewall'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-mod/smtp_test.cgi',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Barracuda IM Firewall'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/TopToolArea.html',
        method = 'HEAD'
      },
      {
        path = '/switchSystem.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Alteon OS BBI (Nortell)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/intruvert/jsp/module/Login.jsp',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'McAfee Network Security Manager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/ajaxfilemanager/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'AJAX File Manager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/upload/data/settings.cdb',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'CF Image Hosting DB'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/fm.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Simple File Manager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/nagios3/cgi-bin/statuswml.cgi',
        method = 'HEAD'
      },
      {
        path = '/nagios3/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Nagios3'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/test/logon.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Jetty'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cal_cat.php',
        method = 'HEAD'
      },
      {
        path = '/calendar/cal_cat.php',
        method = 'HEAD'
      },
      {
        path = '/cal/cal_cat.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Calendarix'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/private/sdc.tgz',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'IBM Bladecenter Management Logs'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cacti/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Cacti Web Monitoring'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/cgi-bin/awstats.pl',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'AWStats'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/wiki/rankings.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Bit Weaver'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/reqdetails.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'BtiTracker'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/shared/help.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'OpenBiblio/WebBiblio Subject Gateway System'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/seti.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'PHP SETI@home'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/imc/',
        method = 'HEAD'
      },
      {
        path = '/imcws/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = '3Com Intelligent Management Center'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/partymgr/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Apache OFBiz'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/Base/upload.php',
        method = 'HEAD'
      },
      {
        path = '/Base/example_1.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'MassMirror Uploader'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/YUI-upload/html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'YUI Images / File Upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/tools/filemanager/skins/mobile/admin1.template.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'ispCP Omega'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/Uploadify/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Uploadify'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/syssite/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'ShopEx'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/updown.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'PHP Uploader Downloader'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/modules/docmanager/doctypetemplates/myuploadedfile',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Achievo'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/ReqWebHelp/advanced/workingSet.jsp',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'IBM Rational RequisitePro/ReqWebHelp'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/dhost/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Novell eDirectory'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/engine/api/api.class.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'DatalifeEngine'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/jsft_resource.jsf',
        method = 'HEAD'
      },
      {
        path = '/scales_static_resource.jsf',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'JSFTemplating/Mojarra Scales/GlassFish Application Server'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/setup/password_required.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = '2WIRE GATEWAY'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/zp-core/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Zen Photo'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/amember/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'aMember'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/.hgignore',
        method = 'HEAD'
      },
      {
        path = '/.gitignore',
        method = 'HEAD'
      },
      {
        path = '/.bzrignore',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Revision control ignore file'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/debug.seam',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'JBoss Seam Debug Page',
        output = 'JBoss Seam Debug Page'
      }
    }
  });

------------------------------------------------
----         SECURITY SOFTWARE              ----
------------------------------------------------
-- These checks will find specific installed software. If possible, it will also
-- find versions, etc.

table.insert(fingerprints, {
    category = 'security',
    probes = {
    {
        path = '/CSS/Miniweb.css',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'ad_header_form_sprachauswahl',
        output = 'SCADA Siemens SIMATIC S7'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/S7Web.css',
        method = 'GET'
      },
      {
        path = '/Portal0000.htm',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<td class="Title_Area_Name">(.-)</td>',
        output = 'SCADA Siemens PCS7: \\1'
      },
      {
        match = '',
        output = 'SCADA Siemens PCS7'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/arcsight/',
        method = 'HEAD'
      },
      {
        path = '/arcsight/images/logo-login-arcsight.gif',
        method = 'HEAD'
      },
      {
        path = '/arcsight/images/navbar-icon-logout-on.gif',
        method = 'HEAD'
      },
      {
        path = '/images/logo-arcsight.gif',
        method = 'HEAD'
      },
      {
        path = '/logger/monitor.ftl',
        method = 'HEAD'
      },
    },
    matches = {
      {
        output = 'Arcsight'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/beef/',
        method = 'HEAD'
      },
      {
        path = '/BEEF/',
        method = 'HEAD'
      },
      {
        path = '/beef/images/beef.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        output = 'BeEF Browser Exploitation Framework'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/gfx/form_top_left_corner.gif',
        method = 'HEAD'
      },
      {
        path = '/gfx/logout_24.png',
        method = 'HEAD'
      },
      {
        path = '/gfx/new_logo.gif',
        method = 'HEAD'
      },
      {
        path = '/javascript/sorttable.js',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Secunia NSI'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/images/btn_help_nml.gif',
        method = 'HEAD'
      },
      {
        path = '/images/hdr_icon_homeG.gif',
        method = 'HEAD'
      },
      {
        path = '/spControl.php',
        method = 'HEAD'
      },
      {
        path = '/images/isslogo.gif',
        method = 'HEAD'
      },
      {
        path = '/deploymentmanager/',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'IBM Proventia'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/i18n/EN/css/foundstone.css',
        method = 'HEAD'
      },
      {
        path = '/i18n/EN/images/external_nav_square.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Foundstone'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/officescan/console/html/cgi/cgiChkMasterPwd.exe',
        method = 'HEAD'
      },
      {
        path = '/officescan/console/html/ClientInstall/officescannt.htm',
        method = 'HEAD'
      },
      {
        path = '/officescan/console/html/images/icon_refresh.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Trend Micro OfficeScan Server'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/picts/BC_bwlogorev.gif',
        method = 'HEAD'
      },
      {
        path = '/picts/menu_leaf.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'BlueCoat Reporter'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/theme/images/en/login1.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Fortinet VPN/Firewall'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'id="NessusClient"',
        output = 'Nessus'
      },
      {
        match = 'NessusClient.swf',
        output = 'Nessus'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/NessusClient.swf',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Nessus'
      }
    }
  });

table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/dotDefender/',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'dotDefender Web Application Firewall'
      }
    }
  });

-- http://www.rapid7.com/db/modules/payload/windows/meterpreter/reverse_hop_http
-- "GET /hop.php?/control" will grab all pending messages, but is unreliable if
-- there are no pending messages.
table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/hop.php?/12345',
        method = 'GET'
      },
    },
    matches = {
      {
        -- TODO: this only works for Meterpreter payloads. Find a more generic means?
        match = 'METERPRETER_TRANSPORT_HTTP',
        output = 'Metasploit reverse_hop_http hop point'
      },
    }
  });

-- http://carnal0wnage.attackresearch.com/2015/02/cisco-asa-version-grabber-cve-2014-3398.html
table.insert(fingerprints, {
    category = 'security',
    probes = {
      {
        path = '/CSCOSSLC/config-auth',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<version who="sg">([^<]+)</version>',
        output = 'Cisco ASA, firmware \\1'
      },
    }
  });

------------------------------------------------
----        MANAGEMENT SOFTWARE             ----
------------------------------------------------
table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/actuator/',
        method = 'GET'
      },
      {
        path = '/auditevents/',
        method = 'GET'
      },
      {
        path = '/autoconfig/',
        method = 'GET'
      },
      {
        path = '/beans/',
        method = 'GET'
      },
      {
        path = '/configprops/',
        method = 'GET'
      },
      {
        path = '/env/',
        method = 'GET'
      },
      {
        path = '/flyway/',
        method = 'GET'
      },
      {
        path = '/health/',
        method = 'GET'
      },
      {
        path = '/healthcheck/',
        method = 'GET'
      },
      {
        path = '/healthchecks/',
        method = 'GET'
      },
      {
        path = '/loggers/',
        method = 'GET'
      },
      {
        path = '/liquibase/',
        method = 'GET'
      },
      {
        path = '/metrics/',
        method = 'GET'
      },
      {
        path = '/mappings/',
        method = 'GET'
      },
      {
        path = '/trace/',
        method = 'GET'
      }
    },
    matches = {
      {
        output = 'Spring Boot Actuator endpoint'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/heapdump/',
        method = 'GET'
      },
      {
        path = '/jolokia/',
        method = 'GET'
      }
    },
    matches = {
      {
        output = 'Spring MVC Endpoint'
      }
    }
  });



table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/vmware/',
        method = 'HEAD'
      },
      {
        path = '/vmware/imx/vmware_boxes-16x16.png',
        method = 'HEAD'
      },
      {
        path = '/ui/',
        method = 'HEAD'
      },
      {
        path = '/ui/imx/vmwareLogo-16x16.png',
        method = 'HEAD'
      },
      {
        path = '/ui/imx/vmwarePaperBagLogo-16x16.png',
        method = 'HEAD'
      },
      {
        path = '/ui/vManage.do',
        method = 'HEAD'
      },
      {
        path = '/client/VMware-viclient.exe',
        method = 'HEAD'
      },
      {
        path = '/en/welcomeRes.js',
        method = 'HEAD'
      }
    },
    matches = {
      {
        output = 'VMWare'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/citrix/',
        method = 'HEAD'
      },
      {
        path = '/Citrix/',
        method = 'HEAD'
      },
      {
        path = '/Citrix/MetaFrame/auth/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/images/ctxHeader01.jpg',
        method = 'HEAD'
      },
      {
        path = '/images/Safeword_Token.jpg',
        method = 'HEAD'
      },
      {
        path = '/sw/auth/login.aspx',
        method = 'HEAD'
      },
      {
        path = '/vpn/images/AccessGateway.ico',
        method = 'HEAD'
      },
      {
        path = '/citrix/AccessPlatform/auth/clientscripts/',
        method = 'HEAD'
      },
      {
        path = '/AccessPlatform/auth/clientscripts/',
        method = 'HEAD'
      },
      {
        path = '/Citrix//AccessPlatform/auth/clientscripts/cookies.js',
        method = 'HEAD'
      },
      {
        path = '/Citrix/AccessPlatform/auth/clientscripts/login.js',
        method = 'HEAD'
      },
      {
        path = '/Citrix/PNAgent/config.xml',
        method = 'HEAD'
      },
    },
    matches = {
      {
        output = 'Citrix'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/cgi-bin/image/shikaku2.png',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'TeraStation PRO RAID 0/1/5 Network Attached Storage'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/config/public/usergrp.gif',
        method = 'HEAD'
      },
      {
        path = '/pictures/buttons/file_view_mark.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'AXIS StorPoint'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/cpqlogin.htm?RedirectUrl=/&RedirectQueryString=',
        method = 'HEAD'
      },
      {
        path = '/hplogo.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'HP System Management Homepage'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/ie_index.htm',
        method = 'HEAD'
      },
      {
        path = '/ilo.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'HP Integrated Lights Out'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/images/icon_server_connected.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'HP Blade Enclosure'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/mxhtml/images/signin_logo.gif',
        method = 'HEAD'
      },
      {
        path = '/mxhtml/images/status_critical_15.gif',
        method = 'HEAD'
      },
      {
        path = '/mxportal/home/en_US/servicetools.gif',
        method = 'HEAD'
      },
      {
        path = '/mxportal/home/MxPortalFrames.jsp',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'HP Insight Manager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/xymon/menu/menu.css',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Xymon'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/rrc.htm',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Raritan Remote Client'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/manager/html/upload',
        method = 'HEAD'
      },
      {
        path = '/manager/html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Apache Tomcat'
      }
    }
  });

table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/axis2/axis2-web/HappyAxis.jsp',
        method = 'HEAD'
      },
      {
        path = '/axis2/',
        method = 'HEAD'
      },
      {
        path = '/happyaxis.jsp',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Apache Axis2'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/web-console/ServerInfo.jsp',
        method = 'HEAD'
      },
      {
        path = '/web-console/Invoker',
        method = 'HEAD'
      },
      {
        path = '/invoker/JMXInvokerServlet',
        method = 'HEAD'
      },
      {
        path = '/invoker/',
        method = 'HEAD'
      },
      {
        path = '/jmx-console/',
        method = 'HEAD'
      },
      {
        path = '/admin-console/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'JBoss Console'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/CFIDE/administrator/enter.cfm',
        method = 'HEAD'
      },
      {
        path = '/CFIDE/administrator/entman/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/cfide/install.cfm',
        method = 'HEAD'
      },
      {
        path = '/CFIDE/administrator/archives/index.cfm',
        method = 'HEAD'
      },
      {
        path = '/CFIDE/wizards/common/_logintowizard.cfm',
        method = 'HEAD'
      },
      {
        path = '/CFIDE/componentutils/login.cfm',
        method = 'HEAD'
      },
      {
        path = '/CFIDE/Administrator/startstop.html',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'ColdFusion Admin Console'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/common/help/en/go/login_ts.html',
        method = 'HEAD'
      },
      {
        path = '/system/login/',
        method = 'HEAD'
      },
      {
        path = '/system/login/reset?next=%2Fsystem%2Flogin&set-lang=en',
        method = 'HEAD'
      },
      {
        path = '/common/images/logos/img_logoMain.jpg',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = 'URL=http://www.macromedia.com/go/breeze_login_help_en',
        output = 'Adobe Acrobat Connect Pro'
      },
      {
        match = '<title>Connect Pro Central Login</title>',
        output = 'Adobe Acrobat Connect Pro'
      },
      {
        match = '<title>Forgot your password?</title>',
        output = 'Adobe Acrobat Connect Pro'
      },
      {
        match = 'Server: JRun Web Server',
        output = 'Adobe Acrobat Connect Pro'
      },
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/Dashboard/Dashboard.html',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'Server: Kodak-RulesBasedAutomation',
        output = 'Prinergy Dashboard Client Login'
      },
      {
        match = '<title>Dashboard</title>',
        output = 'Prinergy Dashboard Client Login'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/flexfm/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Flex File Manager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/lib/usermanagement/userInfo.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Testlink TestManagement'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/security/xamppsecurity.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'XAMPP'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/system/console',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = 'OSGi Management Console',
        output = 'OSGi Management Console'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/dm-albums/dm-albums.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'DM FileManager'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      "/ibm/console/logon.jsp?action=OK",
      "/console/",
      "/console/portal/0/Welcome"
    },
    matches = {
      {
        match = "[Ww][Ee][Bb][Ss][Pp][Hh][Ee][Rr][Ee]",
        output = "WebSphere"
      },
      {
        match = "WSC Console Federation",
        output = "WebSphere Commerce"
      },
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/rest/applinks/1.0/manifest',
        method = 'GET'
      },
      {
        path = '/jira/rest/applinks/1.0/manifest',
        method = 'GET'
      },
      {
        path = '/secure/rest/applinks/1.0/manifest',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<typeId>jira</typeId>.*<version>([^<]+)</version>',
        output = 'Atlassian Jira \\1'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/rest/servicedeskapi/info',
        method = 'GET'
      },
      {
        path = '/jira/rest/servicedeskapi/info',
        method = 'GET'
      },
      {
        path = '/secure/rest/servicedeskapi/info',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '"version":%s*"([^-"]+)',
        output = 'Atlassian Jira Service Desk \\1'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/rest/applinks/1.0/manifest',
        method = 'GET'
      },
      {
        path = '/confluence/rest/applinks/1.0/manifest',
        method = 'GET'
      },
      {
        path = '/wiki/rest/applinks/1.0/manifest',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<typeId>confluence</typeId>.*<version>([^<]+)</version>',
        output = 'Atlassian Confluence \\1'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/rest/applinks/1.0/manifest',
        method = 'GET'
      },
      {
        path = '/bitbucket/rest/applinks/1.0/manifest',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<typeId>stash</typeId>.*<version>([^<]+)</version>',
        output = 'Atlassian Bitbucket Server \\1'
      },
      {
        match = '<typeId>bitbucket</typeId>.*<version>([^<]+)</version>',
        output = 'Atlassian Bitbucket Server \\1'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/rest/applinks/1.0/manifest',
        method = 'GET'
      },
      {
        path = '/bamboo/rest/applinks/1.0/manifest',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<typeId>bamboo</typeId>.*<version>([^<]+)</version>',
        output = 'Atlassian Bamboo \\1'
      }
    }
  });

table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/rest/applinks/1.0/manifest',
        method = 'GET'
      },
      {
        path = '/crowd/rest/applinks/1.0/manifest',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<typeId>crowd</typeId>.*<version>([^<]+)</version>',
        output = 'Atlassian Crowd \\1'
      }
    }
  });

------------------------------------------------
----     PRINTERS, WEBCAMS, PROJECTORS      ----
------------------------------------------------
table.insert(fingerprints, {
    category = 'printer',
    probes = {
      {
        path = '/x_logo.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Xerox printer'
      }
    }
  });

table.insert(fingerprints, {
    category = 'printer',
    probes = {
      {
        path = '/gif/hp.gif',
        method = 'HEAD'
      },
      {
        path = '/gif/hp_invent_logo.gif',
        method = 'HEAD'
      },
      {
        path = '/gif/printer.gif',
        method = 'HEAD'
      },
      {
        path = '/hp/device/this.LCDispatcher',
        method = 'HEAD'
      },
      {
        path = '/hp/device/webAccess/index.htm',
        method = 'HEAD'
      },
      {
        path = '/PageSelector.class',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'HP Printer'
      }
    }
  });

table.insert(fingerprints, {
    category = 'printer',
    probes = {
      {
        path = '/images/lexbold.gif',
        method = 'HEAD'
      },
      {
        path = '/images/lexlogo.gif',
        method = 'HEAD'
      },
      {
        path = '/images/printer.gif',
        method = 'HEAD'
      },
      {
        path = '/printer/image',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Lexmark Printer'
      }
    }
  });

table.insert(fingerprints, {
    category = 'printer',
    probes = {
      {
        path = '/images/mute_alloff.gif',
        method = 'HEAD'
      },
      {
        path = '/images/pic_bri.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'NEC Projector'
      }
    }
  });

table.insert(fingerprints, {
    category = 'printer',
    probes = {
      {
        path = '/scanweb/images/scanwebtm.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'SCAN Web (Webcam)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'printer',
    probes = {
      {
        path = '/view/index.shtml',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Axis 212 PTZ Network Camera'
      }
    }
  });

------------------------------------------------
----              DATABASES                 ----
------------------------------------------------

--phpmyadmin db taken from http://milw0rm.com/exploits/8921
table.insert(fingerprints, {
    category = 'database',
    probes = {
      {
        path = '/phpmyadmin/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin/',
        method = 'HEAD'
      },
      {
        path = '/PHPMyAdmin/',
        method = 'HEAD'
      },
      {
        path = '/PMA/',
        method = 'HEAD'
      },
      {
        path = '/pma/',
        method = 'HEAD'
      },
      {
        path = '/dbadmin/',
        method = 'HEAD'
      },
      {
        path = '/myadmin/',
        method = 'HEAD'
      },
      {
        path = '/php-my-admin/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.2.3/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.2.6/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.4/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.5-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.5-rc2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.5/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.5-pl1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.6-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.6-rc2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.6/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.7/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.5.7-pl1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-alpha/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-alpha2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-beta1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-beta2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-rc2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-rc3/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-pl1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-pl2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.0-pl3/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.1-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.1-rc2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.1-pl1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.1-pl2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.1-pl3/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.2-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.2-beta1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.2-pl1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.3/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.3-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.3-pl1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.4-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.4-pl1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.4-pl2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.4-pl3/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.4-pl4/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.6.4/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.7.0-beta1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.7.0-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.7.0-pl1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.7.0-pl2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.7.0/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.0-beta1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.0-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.0-rc2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.0/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.0.1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.0.2/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.0.3/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.0.4/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.1-rc1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.1/',
        method = 'HEAD'
      },
      {
        path = '/phpMyAdmin-2.8.2/',
        method = 'HEAD'
      },
      {
        path = '/sqlmanager/',
        method = 'HEAD'
      },
      {
        path = '/php-myadmin/',
        method = 'HEAD'
      },
      {
        path = '/phpmy-admin/',
        method = 'HEAD'
      },
      {
        path = '/mysqladmin/',
        method = 'HEAD'
      },
      {
        path = '/mysql-admin/',
        method = 'HEAD'
      },
      {
        path = '/websql/',
        method = 'HEAD'
      },
      {
        path = '/_phpmyadmin/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        output = 'phpMyAdmin'
      }
    }
  });

table.insert(fingerprints, {
    category = 'database',
    probes = {
      {
        path = '/footer1.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = '(possible) Oracle Web server'
      }
    }
  });

table.insert(fingerprints, {
    category = 'database',
    probes = {
      {
        path = '/homepage.nsf/homePage.gif?OpenImageResource',
        method = 'HEAD'
      },
      {
        path = '/icons/ecblank.gif',
        method = 'HEAD'
      },
      {
        path = '/852566C90012664F',
        method = 'HEAD'
      },
      {
        path = '/admin4.nsf',
        method = 'HEAD'
      },
      {
        path = '/admin5.nsf',
        method = 'HEAD'
      },
      {
        path = '/admin.nsf',
        method = 'HEAD'
      },
      {
        path = '/agentrunner.nsf',
        method = 'HEAD'
      },
      {
        path = '/alog.nsf',
        method = 'HEAD'
      },
      {
        path = '/a_domlog.nsf',
        method = 'HEAD'
      },
      {
        path = '/bookmark.nsf',
        method = 'HEAD'
      },
      {
        path = '/busytime.nsf',
        method = 'HEAD'
      },
      {
        path = '/catalog.nsf',
        method = 'HEAD'
      },
      {
        path = '/certa.nsf',
        method = 'HEAD'
      },
      {
        path = '/certlog.nsf',
        method = 'HEAD'
      },
      {
        path = '/certsrv.nsf',
        method = 'HEAD'
      },
      {
        path = '/chatlog.nsf',
        method = 'HEAD'
      },
      {
        path = '/clbusy.nsf',
        method = 'HEAD'
      },
      {
        path = '/cldbdir.nsf',
        method = 'HEAD'
      },
      {
        path = '/clusta4.nsf',
        method = 'HEAD'
      },
      {
        path = '/collect4.nsf',
        method = 'HEAD'
      },
      {
        path = '/da.nsf',
        method = 'HEAD'
      },
      {
        path = '/dba4.nsf',
        method = 'HEAD'
      },
      {
        path = '/dclf.nsf',
        method = 'HEAD'
      },
      {
        path = '/DEASAppDesign.nsf',
        method = 'HEAD'
      },
      {
        path = '/DEASLog01.nsf',
        method = 'HEAD'
      },
      {
        path = '/DEASLog02.nsf',
        method = 'HEAD'
      },
      {
        path = '/DEASLog03.nsf',
        method = 'HEAD'
      },
      {
        path = '/DEASLog04.nsf',
        method = 'HEAD'
      },
      {
        path = '/DEASLog05.nsf',
        method = 'HEAD'
      },
      {
        path = '/DEASLog.nsf',
        method = 'HEAD'
      },
      {
        path = '/decsadm.nsf',
        method = 'HEAD'
      },
      {
        path = '/decslog.nsf',
        method = 'HEAD'
      },
      {
        path = '/DEESAdmin.nsf',
        method = 'HEAD'
      },
      {
        path = '/dirassist.nsf',
        method = 'HEAD'
      },
      {
        path = '/doladmin.nsf',
        method = 'HEAD'
      },
      {
        path = '/domadmin.nsf',
        method = 'HEAD'
      },
      {
        path = '/domcfg.nsf',
        method = 'HEAD'
      },
      {
        path = '/domguide.nsf',
        method = 'HEAD'
      },
      {
        path = '/domlog.nsf',
        method = 'HEAD'
      },
      {
        path = '/dspug.nsf',
        method = 'HEAD'
      },
      {
        path = '/events4.nsf',
        method = 'HEAD'
      },
      {
        path = '/events5.nsf',
        method = 'HEAD'
      },
      {
        path = '/events.nsf',
        method = 'HEAD'
      },
      {
        path = '/event.nsf',
        method = 'HEAD'
      },
      {
        path = '/homepage.nsf',
        method = 'HEAD'
      },
      {
        path = '/iNotes/Forms5.nsf/$DefaultNav',
        method = 'HEAD'
      },
      {
        path = '/jotter.nsf',
        method = 'HEAD'
      },
      {
        path = '/leiadm.nsf',
        method = 'HEAD'
      },
      {
        path = '/leilog.nsf',
        method = 'HEAD'
      },
      {
        path = '/leivlt.nsf',
        method = 'HEAD'
      },
      {
        path = '/log4a.nsf',
        method = 'HEAD'
      },
      {
        path = '/log.nsf',
        method = 'HEAD'
      },
      {
        path = '/l_domlog.nsf',
        method = 'HEAD'
      },
      {
        path = '/mab.nsf',
        method = 'HEAD'
      },
      {
        path = '/mail10.box',
        method = 'HEAD'
      },
      {
        path = '/mail1.box',
        method = 'HEAD'
      },
      {
        path = '/mail2.box',
        method = 'HEAD'
      },
      {
        path = '/mail3.box',
        method = 'HEAD'
      },
      {
        path = '/mail4.box',
        method = 'HEAD'
      },
      {
        path = '/mail5.box',
        method = 'HEAD'
      },
      {
        path = '/mail6.box',
        method = 'HEAD'
      },
      {
        path = '/mail7.box',
        method = 'HEAD'
      },
      {
        path = '/mail8.box',
        method = 'HEAD'
      },
      {
        path = '/mail9.box',
        method = 'HEAD'
      },
      {
        path = '/mail.box',
        method = 'HEAD'
      },
      {
        path = '/msdwda.nsf',
        method = 'HEAD'
      },
      {
        path = '/mtatbls.nsf',
        method = 'HEAD'
      },
      {
        path = '/mtstore.nsf',
        method = 'HEAD'
      },
      {
        path = '/names.nsf',
        method = 'HEAD'
      },
      {
        path = '/nntppost.nsf',
        method = 'HEAD'
      },
      {
        path = '/nntp/nd000001.nsf',
        method = 'HEAD'
      },
      {
        path = '/nntp/nd000002.nsf',
        method = 'HEAD'
      },
      {
        path = '/nntp/nd000003.nsf',
        method = 'HEAD'
      },
      {
        path = '/ntsync45.nsf',
        method = 'HEAD'
      },
      {
        path = '/perweb.nsf',
        method = 'HEAD'
      },
      {
        path = '/qpadmin.nsf',
        method = 'HEAD'
      },
      {
        path = '/quickplace/quickplace/main.nsf',
        method = 'HEAD'
      },
      {
        path = '/reports.nsf',
        method = 'HEAD'
      },
      {
        path = '/sample/siregw46.nsf',
        method = 'HEAD'
      },
      {
        path = '/schema50.nsf',
        method = 'HEAD'
      },
      {
        path = '/setupweb.nsf',
        method = 'HEAD'
      },
      {
        path = '/setup.nsf',
        method = 'HEAD'
      },
      {
        path = '/smbcfg.nsf',
        method = 'HEAD'
      },
      {
        path = '/smconf.nsf',
        method = 'HEAD'
      },
      {
        path = '/smency.nsf',
        method = 'HEAD'
      },
      {
        path = '/smhelp.nsf',
        method = 'HEAD'
      },
      {
        path = '/smmsg.nsf',
        method = 'HEAD'
      },
      {
        path = '/smquar.nsf',
        method = 'HEAD'
      },
      {
        path = '/smsolar.nsf',
        method = 'HEAD'
      },
      {
        path = '/smtime.nsf',
        method = 'HEAD'
      },
      {
        path = '/smtpibwq.nsf',
        method = 'HEAD'
      },
      {
        path = '/smtpobwq.nsf',
        method = 'HEAD'
      },
      {
        path = '/smtp.box',
        method = 'HEAD'
      },
      {
        path = '/smtp.nsf',
        method = 'HEAD'
      },
      {
        path = '/smvlog.nsf',
        method = 'HEAD'
      },
      {
        path = '/srvnam.htm',
        method = 'HEAD'
      },
      {
        path = '/statmail.nsf',
        method = 'HEAD'
      },
      {
        path = '/statrep.nsf',
        method = 'HEAD'
      },
      {
        path = '/stauths.nsf',
        method = 'HEAD'
      },
      {
        path = '/stautht.nsf',
        method = 'HEAD'
      },
      {
        path = '/stconfig.nsf',
        method = 'HEAD'
      },
      {
        path = '/stconf.nsf',
        method = 'HEAD'
      },
      {
        path = '/stdnaset.nsf',
        method = 'HEAD'
      },
      {
        path = '/stdomino.nsf',
        method = 'HEAD'
      },
      {
        path = '/stlog.nsf',
        method = 'HEAD'
      },
      {
        path = '/streg.nsf',
        method = 'HEAD'
      },
      {
        path = '/stsrc.nsf',
        method = 'HEAD'
      },
      {
        path = '/userreg.nsf',
        method = 'HEAD'
      },
      {
        path = '/vpuserinfo.nsf',
        method = 'HEAD'
      },
      {
        path = '/webadmin.nsf',
        method = 'HEAD'
      },
      {
        path = '/web.nsf',
        method = 'HEAD'
      },
      {
        path = '/.nsf/../winnt/win.ini',
        method = 'HEAD'
      },
      {
        path = '/icons/ecblank.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Lotus Domino'
      }
    }
  });

table.insert(fingerprints, {
    category = 'database',
    probes = {
      {
        path = '/_api/version',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '"server":"arango",.-"version":"([^"])"',
        output = 'ArangoDB \\1'
      }
    }
  });

------------------------------------------------
----              MICROSOFT                 ----
------------------------------------------------
table.insert(fingerprints, {
    category = 'microsoft',
    probes = {
      {
        path = '/_layouts/images/helpicon.gif',
        method = 'HEAD'
      },
      {
        path = '/Pages/Default.aspx',
        method = 'HEAD'
      },
      {
        path = '/PublishingImages/NewsArticleImage.jpg',
        method = 'HEAD'
      },
      {
        path = '/_admin/operations.aspx',
        method = 'HEAD'
      },
      {
        path = '/_app_bin',
        method = 'HEAD'
      },
      {
        path = '/_controltemplates',
        method = 'HEAD'
      },
      {
        path = '/_layouts',
        method = 'HEAD'
      },
      {
        path = '/_layouts/viewlsts.aspx',
        method = 'HEAD'
      },
      {
        path = '/forms/allitems.aspx',
        method = 'HEAD'
      },
      {
        path = '/forms/webfldr.aspx',
        method = 'HEAD'
      },
      {
        path = '/forms/mod-view.aspx',
        method = 'HEAD'
      },
      {
        path = '/forms/my-sub.aspx',
        method = 'HEAD'
      },
      {
        path = '/pages/categoryresults.aspx',
        method = 'HEAD'
      },
      {
        path = '/categories/viewcategory.aspx',
        method = 'HEAD'
      },
      {
        path = '/sitedirectory',
        method = 'HEAD'
      },
      {
        path = '/editdocs.aspx',
        method = 'HEAD'
      },
      {
        path = '/workflowtasks/allitems.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/tasks/',
        method = 'HEAD'
      },
      {
        path = '/categories/allcategories.aspx',
        method = 'HEAD'
      },
      {
        path = '/categories/SOMEOTHERDIR/allcategories.aspx',
        method = 'HEAD'
      },
      {
        path = '/mycategories.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/',
        method = 'HEAD'
      },
      {
        path = '/lists/allitems.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/default.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/allposts.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/archive.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/byauthor.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/calendar.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/mod-view.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/myposts.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/my-sub.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/allcomments.aspx',
        method = 'HEAD'
      },
      {
        path = '/lists/mycomments.aspx',
        method = 'HEAD'
      },
      {
        path = '/_layouts/userdisp.aspx',
        method = 'HEAD'
      },
      {
        path = '/_layouts/help.aspx',
        method = 'HEAD'
      },
      {
        path = '/_layouts/download.aspx',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'MS Sharepoint'
      }
    }
  });

table.insert(fingerprints, {
    category = 'microsoft',
    probes = {
      {
        path = '/projectserver/Home/HomePage.asp',
        method = 'HEAD'
      },
      {
        path = '/projectserver/images/branding.gif',
        method = 'HEAD'
      },
      {
        path = '/projectserver/images/pgHome.gif',
        method = 'HEAD'
      },
      {
        path = '/projectserver/images/pgTask.gif',
        method = 'HEAD'
      },
      {
        path = '/projectserver/Tasks/Taskspage.asp',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'MS Project Server'
      }
    }
  });

table.insert(fingerprints, {
    category = 'microsoft',
    probes = {
      {
        path = '/exchweb/bin/auth/owalogon.asp',
        method = 'HEAD'
      },
      {
        path = '/images/outlook.jpg',
        method = 'HEAD'
      },
      {
        path = '/owa/8.1.375.2/themes/base/lgntopl.gif',
        method = 'HEAD'
      },
      {
        path = '/owa/',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Outlook Web Access'
      }
    }
  });

table.insert(fingerprints, {
    category = 'microsoft',
    probes = {
      {
        path = '/tsweb/',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Remote Desktop Web Connection'
      }
    }
  });

table.insert(fingerprints, {
    category = 'microsoft',
    probes = {
      {
        path = '/reportserver/',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Microsoft SQL Report Service'
      }
    }
  });
------------------------------------------------
----         NETWORK EQUIPMENT              ----
------------------------------------------------
-- Routers, switches, etc
table.insert(fingerprints, {
    category = 'network',
    probes = {
      {
        path = '/',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'realm="WRT54G"',
        output = 'Linksys WRT54g Wireless Router'
      }
    }
  });

table.insert(fingerprints, {
    category = 'network',
    probes = {
      {
        path = '/HW_logo.html',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Huawei HG 530'
      }
    }
  });

table.insert(fingerprints, {
    category = 'network',
    probes = {
      {
        path = '/icons/icon_set_up_2701XX_01.gif',
        method = 'HEAD'
      },
      {
        path = '/icons/icon_homeportal_2701XX.gif',
        method = 'HEAD'
      },
      {
        path = '/es/images/nav_sl_home_network_01.gif',
        method = 'HEAD'
      },
      {
        path = '/en/images/nav_sl_home_network_01.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = '2WIRE 2701HG'
      }
    }
  });

table.insert(fingerprints, {
    category = 'network',
    probes = {
      {
        path = '/images/stxx__xl.gif',
        method = 'HEAD'
      },
      {
        path = '/images/bbc__xl.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Thomson TG585'
      }
    }
  });

-- HNAP Devices
table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/HNAP1/',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<ModelDescription>(.-)</ModelDescription>',
        output = '\\1'
      }
    }
  });

------------------------------------------------
----               ATTACKS                  ----
------------------------------------------------
-- These will search for and possibly exploit vulnerabilities.

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/sdk/../../../../../../../etc/vmware/hostd/vmInventory.xml',
        method = 'GET',
        nopipeline = true
      },
      {
        path = '/sdk/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/etc/vmware/hostd/vmInventory.xml',
        method = 'GET',
        nopipeline = true
      }
    },
    matches = {
      {
        match = '<ConfigRoot>',
        output = 'Path traversal in VMWare (CVE-2009-3733)'
      },
      {
        match = '',
        output = 'Possible path traversal in VMWare (CVE-2009-3733)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/../../../../../../../../../../etc/passwd',
        method = 'GET',
        nopipeline = true
      },
      {
        path = '/../../../../../../../../../../boot.ini',
        method = 'GET',
        nopipeline = true
      }
    },
    matches = {
      {
        match = 'root:',
        output = 'Simple path traversal in URI (Linux)'
      },
      {
        match = 'boot loader',
        output = 'Simple path traversal in URI (Windows)'
      },
      {
        match = '',
        output = 'Possible path traversal in URI'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/.htaccess',
        method = 'GET'
      },
      {
        path = '/.htpasswd',
        method = 'GET'
      }
    },
    matches = {
      -- We look for a '200 OK' message on this one, because most Apache servers return an access denied
      {
        match = '200 OK',
        output = 'Incorrect permissions on .htaccess or .htpasswd files'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/_vti_bin/',
        method = 'GET'
      },
      {
        path = '/_vti_cnf/',
        method = 'GET'
      },
      {
        path = '/_vti_log/',
        method = 'GET'
      },
      {
        path = '/_vti_pvt/',
        method = 'GET'
      },
      {
        path = '/_vti_txt/',
        method = 'GET'
      },
      {
        path = '/postinfo.html'
      },
      {
        path = '/_vti_bin/_vti_aut/author.dll'
      },
      {
        path = '/_vti_bin/_vti_aut/author.exe'
      },
      {
        path = '/_vti_bin/_vti_aut/dvwssr.dll'
      },
      {
        path = '/_vti_bin/_vti_adm/admin.dll'
      },
      {
        path = '/_vti_bin/_vti_adm/admin.exe'
      },
      {
        path = '/_vti_bin/fpcount.exe?Page=default.asp|Image=3'
      },
      {
        path = '/_vti_bin/shtml.dll'
      },
      {
        path = '/_vti_bin/shtml.exe'
      },
      {
        path = '/_vti_pvt/_x_todo.htm'
      },
      {
        path = '/_vti_pvt/_x_todoh.htm'
      },
      {
        path = '/_vti_pvt/access.cnf'
      },
      {
        path = '/_vti_pvt/administrator.pwd'
      },
      {
        path = '/_vti_pvt/administrators.pwd'
      },
      {
        path = '/_vti_pvt/authors.pwd'
      },
      {
        path = '/_vti_pvt/bots.cnf'
      },
      {
        path = '/_vti_pvt/botinfs.cnf'
      },
      {
        path = '/_vti_pvt/deptodoc.btr'
      },
      {
        path = '/_vti_pvt/doctodep.btr'
      },
      {
        path = '/_vti_pvt/frontpg.lck'
      },
      {
        path = '/_vti_pvt/linkinfo.cnf'
      },
      {
        path = '/_vti_pvt/service.cnf'
      },
      {
        path = '/_vti_pvt/service.grp'
      },
      {
        path = '/_vti_pvt/service.lck'
      },
      {
        path = '/_vti_pvt/service.pwd'
      },
      {
        path = '/_vti_pvt/Service.stp'
      },
      {
        path = '/_vti_pvt/services.cnf'
      },
      {
        path = '/_vti_pvt/services.org'
      },
      {
        path = '/_vti_pvt/structure.cnf'
      },
      {
        path = '/_vti_pvt/svcacl.cnf'
      },
      {
        path = '/_vti_pvt/users.pwd'
      },
      {
        path = '/_vti_pvt/uniqueperm.cnf'
      },
      {
        path = '/_vti_pvt/writeto.cnf'
      },
    },
    matches = {
      {
        match = '200',
        output = 'Frontpage file or folder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/.svn/',
        method = 'GET'
      },
      {
        path = '/.svn/text-base/.htaccess.svn-base',
        method = 'GET'
      },
      {
        path = '/.svn/text-base/.htpasswd.svn-base',
        method = 'GET'
      },
      {
        path = '/.svn/text-base/Web.config.svn-base',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'Subversion folder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/.git/HEAD',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'ref: refs',
        output = 'Git folder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/.hg/requires',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'revlogv1',
        output = 'Mercurial folder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/.bzr/README',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'This is a Bazaar',
        output = 'Bazaar folder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/downloadFile.php',
        method = 'GET'
      },
      {
        path = '/BackupConfig.php',
        method = 'GET'
      }
    },
    matches = {
      {
        output = 'NETGEAR WNDAP350 2.0.1 to 2.0.9 potential file download and SSH root password disclosure'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/cwhp/auditLog.do?file=..\\..\\..\\..\\..\\..\\..\\boot.ini',
        method = 'GET'
      },
      {
        path = '/cwhp/auditLog.do?file=..\\..\\..\\..\\..\\..\\..\\Program%20Files\\CSCOpx\\MDC\\Tomcat\\webapps\\triveni\\WEB-INF\\classes\\schedule.properties',
        method = 'GET'
      },
      {
        path = '/cwhp/auditLog.do?file=..\\..\\..\\..\\..\\..\\..\\Program%20Files\\CSCOpx\\lib\\classpath\\com\\cisco\\nm\\cmf\\dbservice2\\DBServer.properties',
        method = 'GET'
      },
      {
        path = '/cwhp/auditLog.do?file=..\\..\\..\\..\\..\\..\\..\\Program%20Files\\CSCOpx\\log\\dbpwdChange.log',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'boot loader',
        output = 'CiscoWorks (CuOM 8.0 and 8.5) Directory traversal (CVE-2011-0966) (Windows)'
      },
      {
        match = '',
        output = 'Possible CiscoWorks (CuOM 8.0 and 8.5) Directory traversal (CVE-2011-0966) (Windows)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f/var/mobile/Library/AddressBook/AddressBook.sqlitedb',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Possible iPhone/iPod/iPad generic file sharing app Directory Traversal (iOS)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/Info.live.htm',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'Possible DD-WRT router Information Disclosure (BID 45598)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/CuteSoft_Client/CuteEditor/Load.ashx?type=image&file=../../../web.config',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'Cute Editor ASP.NET Remote File Disclosure ( CVE 2009-4665 )'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/plugins/PluginController.php?path=..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fwindows%2fwin.ini%00',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'OrangeHRM 2.6.3 Local File Inclusion '
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/tiki-listmovies.php?movie=../../../../../../etc/passwd%001234',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'TikiWiki < 1.9.9 Directory Traversal Vulnerability'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/index.php?option=com_jce&task=plugin&plugin=imgmanager&file=imgmanager&version=1576&cid=20',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '2.0.11</title',
        output = 'Joomla JCE Extension 2.0.11 Remote Code Execution vulnerability'
      },
      {
        match = '2.0.12</title',
        output = 'Joomla JCE Extension 2.0.12 Remote Code Execution vulnerability'
      },
      {
        match = '2.0.13</title',
        output = 'Joomla JCE Extension 2.0.13 Remote Code Execution vulnerability'
      },
      {
        match = '2.0.14</title',
        output = 'Joomla JCE Extension 2.0.14 Remote Code Execution vulnerability'
      },
      {
        match = '2.0.15</title',
        output = 'Joomla JCE Extension 2.0.11 Remote Code Execution vulnerability'
      },
      {
        match = '1.5.7.10</title',
        output = 'Joomla JCE Extension 1.5.7.10 Remote Code Execution vulnerability'
      },
      {
        match = '1.5.7.10</title',
        output = 'Joomla JCE Extension 1.5.7.10 Remote Code Execution vulnerability'
      },
      {
        match = '1.5.7.11</title',
        output = 'Joomla JCE Extension 1.5.7.11 Remote Code Execution vulnerability'
      },
      {
        match = '1.5.7.12</title',
        output = 'Joomla JCE Extension 1.5.7.12 Remote Code Execution vulnerability'
      },
      {
        match = '1.5.7.13</title',
        output = 'Joomla JCE Extension 1.5.7.13 Remote Code Execution vulnerability'
      },
      {
        match = '1.5.7.14</title',
        output = 'Joomla JCE Extension 1.5.7.14 Remote Code Execution vulnerability'
      }
   }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/d41d8cd98f00b204e9800998ecf8427e.php',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'Seagate BlackArmorNAS 110/220/440 Administrator Password Reset Vulnerability'
      }
    }
  });

-- HNAP Authentication Bypass
table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/bsc_lan.php?NO_NEED_AUTH=1&AUTH_GROUP=0',
        method = 'GET'
      }
    },
    matches = {
      {
        dontmatch = '<a href="http://www%.dlink%.com"',
        match = '^HTTP/1.[01] 200 OK\r\n.*Server: Embedded HTTP Server',
        output = 'D-Link Router Vulnerable to Authentication Bypass',
      },
      {
        dontmatch = '<a href="http://www%.dlink%.com"',
        match = '^HTTP/1.[01] 200 OK\r\n.*Server: Virtual Web 0.9',
        output = 'D-Link Router Vulnerable to Authentication Bypass',
      },
    }
  });

-- Rompager info disclosure
table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/rom-0',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'dbgarea',
        output = 'RomPager Embedded Web Server information disclosure (CVE-2014-4019)'
      },
      {
        match = 'spt%.dat',
        output = 'RomPager Embedded Web Server information disclosure (CVE-2014-4019)'
      },
      {
        match = 'autoexec%.net',
        output = 'RomPager Embedded Web Server information disclosure (CVE-2014-4019)'
      },
    }
  });

-- Progress Telerik UI for ASP.NET CVE-2017-9248
table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/Telerik.Web.UI.DialogHandler.aspx?dp=////',
        method = 'GET'
      },
      {
        path = '/Telerik.Web.UI.DialogHandler.ashx?dp=////',
        method = 'GET'
      },
      {
        path = '/DesktopModules/Admin/RadEditorProvider/DialogHandler.aspx?dp=////',
        method = 'GET'
      }
    },
    matches = {
      {
        dontmatch = 'cannot be less than zero',
        match = 'Base%-64',
        output = 'Progress Telerik UI for ASP.NET Cryptographic Weakness (CVE-2017-9248)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/uir//etc/passwd',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'Possible D-Link router directory traversal vulnerability (CVE-2018-10822)'
      },
      {
        match = 'root:',
	output = 'D-Link router directory traversal vulnerability (CVE-2018-10822)'
      }
     }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/uir//tmp/csman/0',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'Possible D-Link router plaintext password file exposure (CVE-2018-10824)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/cgi-bin/export_debug_msg.exp',
        method = 'GET'
      },
      {
        path = '/cgi-bin/config.exp',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200 OK',
        output = 'Cisco RV320/RV325 Unauthenticated Diagnostic Data & Configuration Export (CVE-2019-1653)'
      }
    }
  });

table.insert(fingerprints, {
    category = 'attacks',
    probes = {
      {
        path = '/',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'var admin_name=".*";\nvar guest_name=".*";\nvar admin_pwd=".*";',
        output = 'Cisco RV110W Wireless-N VPN Firewall Password Disclosure (CVE-2014-0683)'
      }
    }
  });
------------------------------------------------
----        Open Source CMS checks          ----
------------------------------------------------

-- Wordpress versions (Scraping readme file)
table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = '/readme.html',
      method = 'GET'
    }
  },
  matches = {
    {
      match = '<img alt="WordPress" src=".+wordpress.+".+[V|v]ersion ([0-9 .]*)',
      output = 'Wordpress version: \\1'
    }
  }
});

-- Wordpress versions (Scraping metatags and wp-includes)
table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = '/',
      method = 'GET'
    }
  },
  matches = {
    {
      match = '<meta name="generator" content="WordPress ([0-9 .]*)" />',
      output = 'WordPress version: \\1'
    },
    {
      match = '/wp-includes/js/wp-emoji-release.min.js?ver=([0-9 .]*)',
      output = 'WordPress version: \\1'
    }
  }
});

-- Wordpress versions (Scraping rss feed)
table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = '?feed=rss',
      method = 'GET'
    },
    {
      path = '?feed=rss2',
      method = 'GET'
    },
    {
      path = '?feed=atom',
      method = 'GET'
    },
    {
      path = '/feed',
      method = 'GET'
    },
    {
      path = '/feed/',
      method = 'GET'
    },
    {
      path = '/feed/rss',
      method = 'GET'
    },
    {
      path = '/feed/rss2',
      method = 'GET'
    },
    {
      path = '/feed/atom',
      method = 'GET'
    }
  },
  matches = {
    {
      match = '[v|V]=([0-9 .]*)</generator>',
      output = 'Wordpress version: \\1'
    }
  }
});

-- Wordpress detection indentified by Version-specific files.
-- These are the 6 new web-accessible files that was added in each release.

table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = "/wp-includes/images/rss.png"
    }
  },
  matches = {
    {
      output = "Wordpress version 2.2 found."
    }
  }
});

table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = "/wp-includes/js/scriptaculous/sound.js"
    }
  },
  matches = {
    {
      output = "Wordpress version 2.3 found."
    }
  }
});

table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = "/wp-includes/js/jquery/suggest.js"
    }
  },
  matches = {
    {
      output = "Wordpress version 2.5 found."
    }
  }
});

table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = "/wp-includes/images/blank.gif"
    }
  },
  matches = {
    {
      output = "Wordpress version 2.6 found."
    }
  }
});

table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = "/wp-includes/js/comment-reply.js"
    }
  },
  matches = {
    {
      output = "Wordpress version 2.7 found."
    }
  }
});

table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      path = "/wp-includes/js/codepress/codepress.js"
    }
  },
  matches = {
    {
      output = "Wordpress version 2.8 found."
    }
  }
});


-- Broad wordpress version identification (Gives major only versions)
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/wp-login.php'
      },
      {
        path = '/wordpress/wp-login.php'
      },
      {
        path = '/blog/wp-login.php'
      },
      {
        path = '/administrator/wp-login.php'
      },
      {
        path = '/weblog/wp-login.php'
      },
      {
        path = '/wp-admin/upgrade.php'
      }
    },
    matches = {
      {
        match = '[ver|version]=20080708',
        output = 'WordPress 2.6.x found'
      },
      {
        match = '[ver|version]=20081210',
        output = 'WordPress 2.7.x found'
      },
      {
        match = '[ver|version]=20090514',
        output = 'WordPress 2.8.x found'
      },
      {
        match = '[ver|version]=20091217',
        output = 'WordPress 2.9.x found'
      },
      {
        match = '[ver|version]=20100601',
        output = 'WordPress 3.0.x found'
      },
      {
        match = '[ver|version]=20110121',
        output = 'WordPress 3.1.x found'
      },
      {
        match = '[ver|version]=20121105',
        output = 'WordPress 3.7.x found'
      },
      {
        output = 'Wordpress login page.'
      }
    }
  });

-- ZenCart version detection
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/docs/'
      },
      {
        path = '/store/docs/'
      },
      {
        path = '/zencart/docs/'
      },
      {
        path = '/cart/docs/'
      }
    },
    matches = {
      {
        match = '.*">Changelog for v(%d-%..-) %(changed files%)</a>',
        output = 'ZenCart, version \\1'
      }
    }
  });

-- Broad phpBB versions
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/docs/CHANGELOG.html'
      },
      {
        path = '/forum/docs/CHANGELOG.html'
      },
      {
        path = '/forums/docs/CHANGELOG.html'
      },
      {
        path = '/board/docs/CHANGELOG.html'
      },
      {
        path = '/boards/docs/CHANGELOG.html'
      }
    },
    matches = {
      {
        match = 'Changes since (%d-%..-)</a>',
        output = 'phpBB version slightly newer than \\1'
      },
      {
        match = '<meta name="description" content="phpBB (%d-%..-) Changelog"',
        output = 'phpBB, version \\1'
      },
      {
        match = 'Changes since (%d)',
        output = 'phpBB versioning \\1'
      },
    }
  });

-- tinymce / changelog
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/changelog.txt'
      },
      {
        path = '/tinymce/changelog.txt'
      },
    },
    matches = {
      {
        match = 'Version (.-) ',
        output = 'Version \\1'
      },
      {
        output = 'Interesting, a changelog.'
      }
    }
  });

-- interesting README  files
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/readme.html'
      },
      {
        path = '/pligg/readme.html'
      },
      {
        path = '/digg/readme.html'
      },
      {
        path = '/news/readme.html'
      },
    },
    matches = {
      {
        match = '<h1>Pligg Content Management System</h1>%s*<h2>Version (.-)</h2>',
        output = 'Pligg version \\1'
      },
      {
        match = '<br /> Version (.-)\n',
        output = 'WordPress version \\1'
      },
      {
        output = 'Interesting, a readme.'
      }
    }
  });

-- They're kind enough to tell us in the meta tags (used for the author's stats)
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/'
      },
      {
        path = '/forum/'
      },
      {
        path = '/site/'
      },
      {
        path = '/website/'
      },
      {
        path = '/store/'
      },
      {
        path = '/webstore/'
      },
      {
        path = '/comic/'
      },
      {
        path = '/wiki/'
      },
      {
        path = '/mediawiki/'
      },
      {
        path = '/Mediawiki/'
      },
      {
        path = '/MediaWiki/'
      },
      {
        path = '/wordpress/'
      },
      {
        path = '/blog/'
      },
      {
        path = '/cms/'
      },
      {
        path = '/comiccms/'
      },
      {
        path = '/weblog/'
      },
      {
        path = '/joomla/'
      },
      {
        path = '/administrator/'
      },
      {
        path = '/openx/www/admin/index.php'
      },
      {
        path = '/www/admin/index.php'
      },
      {
        path = '/ads/www/admin/index.php'
      },
      {
        path = '/adserver/www/admin/index.php'
      },
      {
        path = '/splashfrog/'
      },
      {
        path = '/pligg/'
      },
      {
        path = '/vanilla/'
      },
      {
        path = '/vanillaforum/'
      },
      {
        path = '/vanillaforums/'
      },
      {
        path = '/statusnet/'
      },
      {
        path = '/xoda/'
      },
      {
        path = '/trac/'
      },
      {
        path = '/lime/'
      },
      {
        path = '/survey/'
      },
      {
        path = '/limesurvey/'
      },
      {
        path = '/openvbx/'
      },
      {
        path = '/getsimple/'
      },
      {
        path = '/ecoder/'
      },
    },
    matches = {
      {
        match = '<meta name="generator" content="Bluefish 2.0.1" ',
        output = '\\1'
      },
      {
        match = '<h1>ecoder v(.-)</h1>',
        output = 'ecoder v\\1'
      },
      {
        match = '<a href="http://www.splashfrog.com" target="_blank">Splash Frog WMS v(.-)</a>',
        output = 'Splash Frog WMS v\\1'
      },
      {
        match = '<a href="http://status.net/">StatusNet</a> microblogging software, version (.-),',
        output = 'StatusNet v\\1'
      },
      {
        match = '<script src=".*/applications/vanilla/js/options.js%?v%=(.-)" type="text/javascript">',
        output = 'Vanilla Forums v\\1'
      },
      {
        match = 'about"><strong>Trac (.-)</strong></a>',
        output = 'Trac version \\1'
      },
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/cmspages.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = '2Point Solutions CMS'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/sc_webcat/ecat/cms_view.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Webcat'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/kbcat.cgi',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'ActivDesk'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/workorder/FileDownload.jsp',
        method = 'GET'
      },
      {
        path = '/sd/workorder/FileDownload.jsp',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '500',
        output = 'ManageEngine Support Center Plus'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/sections/reference.inc.php',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'BrewBlogger'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/store.php?action=view_cart',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'AiCart'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/catalog/main.php?cat_id=',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '200',
        output = 'Catalog Builder'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/index.php?cat_id=1',
        method = 'GET'
      }
    },
    matches = {
      {
        match = 'powered by CubeCart',
        output = 'CubeCart'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/forum_answer.php?que_id=1',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Guru JustAnswer'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/templates1/view_product.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'HB ECommerce'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/escort-profile.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'First Escort Marketing CMS'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/pages/indexheader.php',
        method = 'HEAD'
      },
      {
        path = '/pages/searcher.php',
        method = 'HEAD'
      },
      {
        path = '/pages/indexviewentry.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Green Pants CMS'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/tinymcpuk/filemanager/browser.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'CMS Lokomedia'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/admin/libraries/ajaxfilemanager/ajaxfilemanager.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Log1 CMS'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/leftmenubody.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Quicktech'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/dsp_page.cfm',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Alcassofts SOPHIA CMS'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/zikula/index.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Zikula CMS'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/system/admin/header.php',
        method = 'HEAD'
      },
      {
        path = '/system/admin/comments_items.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Habari Blog'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/scripts/fckeditor/editor/filemanager/connectors/test.html',
        method = 'HEAD'
      },
      {
        path = '/scripts/fckeditor/editor/filemanager/connectors/uploadtest.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Digitalus CMS/FCKEditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/fckeditor/editor/filemanager/connectors/test.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'phpmotion/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/fckeditor/editor/filemanager/upload/test.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Geeklog/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/admin/view/javascript/fckeditor/editor/filemanager/connectors/test.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'OpenCart/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/fckeditor/editor/filemanager/connectors/php/config.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'DM File Manager/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/php/connector.php',
        method = 'HEAD'
      },
      {
        path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp',
        method = 'HEAD'
      },
      {
        path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx',
        method = 'HEAD'
      },
      {
        path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/cfm/connector.cfm',
        method = 'HEAD'
      },
      {
        path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/lasso/connector.lasso',
        method = 'HEAD'
      },
      {
        path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/perl/connector.cgi',
        method = 'HEAD'
      },
      {
        path = '/includes/FCKeditor/editor/filemanager/browser/default/connectors/py/connector.py',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'PHPnuke/Remote File Download'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/FCKEditor/editor/filemanager/browser/default/connectors/test.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'EgO or osCMax/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/admin/includes/tiny_mce/plugins/tinybrowser/upload.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'CompactCMS or B-Hind CMS/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/Backstage/Components/FreeTextBox/ftb.imagegallery.aspx',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Luftguitar CMS/File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/_plugin/fckeditor/editor/filemanager/connectors/test.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'SweetRice/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/html/news_fckeditor/editor/filemanager/upload/php/upload.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'cardinalCms/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/fckeditor/editor/filemanager/connectors/test.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'LightNEasy/FCKeditor File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/admin/includes/FCKeditor/editor/filemanager/upload/test.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'ASP Simple Blog / FCKeditor File Upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/uploadsnaps.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'ZeeMatri/File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/upload/includes/js/files/upload.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Digital College/File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/tinybrowser/upload.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Tinybrowser Remote File Upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/editor/editor/filemanager/upload/test.html',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Tadbir / File Upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/photogallery_open.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Heaven Soft CMS'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/Providers/HtmlEditorProviders/Fck/fcklinkgallery.aspx',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'DotNetNuke / File Upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/assetmanager/assetmanager.asp',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Asset Manager/Remote File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/Final/login/ava_upl.php',
        method = 'HEAD'
      },
      {
        path = '/Final/login/ava_upl2.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'CH-CMS'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/spaw/demo.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'SpawCMS/Remote File upload'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/admin/jscript/upload.php',
        method = 'HEAD'
      },
      {
        path = '/admin/jscript/upload.html',
        method = 'HEAD'
      },
      {
        path = '/admin/jscript/upload.pl',
        method = 'HEAD'
      },
      {
        path = '/admin/jscript/upload.asp',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Lizard Cart/Remote File upload'
      }
    }
  });

-- Apache Ambari Web UI
table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<title>Ambari</title>',
        output = 'Apache Ambari WebUI'
      }
    }
  });

-- Apache Oozie Web Console
table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/oozie/',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<title>Oozie Web Console</title>',
        output = 'Apache Oozie Web Console'
      }
    }
  });

-- Apache Ranger Web UI
table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/login.jsp',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<title>%s*Ranger %- Sign In%s*</title>',
        output = 'Apache Ranger WebUI'
      }
    }
  });

-- Cloudera Hue
table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/about/',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'Hue&trade;%s(.-)%s[-]%s<a href="http://gethue%.com"',
        output = 'Cloudera Hue \\1'
      }
    }
  });

-- Cloudera Manager login page
table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/cmf/login',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'var%s+clouderaManager%s*=%s*{.-version:%s*\'(.-)\'',
        output = 'Cloudera Manager version \\1 '
      }
    }
  });

-- Hadoop MapReduce JobHistory WebUI
table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/jobhistory',
        method = 'GET'
      },
    },
    matches = {
      {
        match = '<title>%s*JobHistory%s*</title>',
        output = 'Hadoop MapReduce JobHistory WebUI'
      }
    }
  });

-- Hadoop YARN Resource Manager
table.insert(fingerprints, {
    category = 'management',
    probes = {
      {
        path = '/cluster/cluster',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'ResourceManager state:.-<td>%s*([^%s<]*)'
                .. '.-ResourceManager version:.-<td>%s*([^%s<]*)'
                .. '.-Hadoop version:.-<td>%s*([^%s<]*)',
        output = 'Hadoop YARN Resource Manager version \\2, state "\\1", Hadoop version \\3'
      },
    }
  });

-- Hadoop Node Resource Manager
table.insert(fingerprints, {
    category = 'info',
    probes = {
      {
        path = '/node',
        method = 'GET'
      },
    },
    matches = {
      {
        match = 'Node Manager Version:.-<td>%s*([^%s<]*)'
                .. '.-Hadoop Version:.-<td>%s*([^%s<]*)',
        output = 'Hadoop YARN Node Manager version \\1, Hadoop version \\2'
      },
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/databases/acidcat_3.mdb',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Acidcat CMS Database'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/mdb-database/dblog.mdb',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'dBlog Database'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/db/users.mdb',
        method = 'HEAD'
      },
      {
        path = '/db/'
      }
    },
    matches = {
      {
        match = '',
        output = 'BlogWorx Database'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/infusions/avatar_studio/avatar_studio.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'PHP-Fusion Mod avatar_studio'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/bnnr.php',
        method = 'HEAD'
      },
      {
        path = '/vb/bnnr.php',
        method = 'HEAD'
      },
      {
        path = '/forum/bnnr.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'vBulletin ads_saed'
      }
    }
  });

table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/weblink_cat_list.php',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'WHMCompleteSolution CMS'
      }
    }
  });

-- Drupal signatures
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/',
        method = 'GET'
      }
    },
    matches = {
      {
        match = ' src="/sites/all/themes/',
        output = 'Drupal signature'
      },
      {
        match = ' src="/sites/all/modules/',
        output = 'Drupal signature'
      },
      {
        match = ' href="/sites/all/themes/',
        output = 'Drupal signature'
      },
      {
        match = 'jQuery.extend(Drupal.settings,',
        output = 'Drupal signature'
      }
    }
  });

-- Drupal files
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/UPGRADE.txt'
      },
      {
        path = '/INSTALL.txt'
      },
      {
        path = '/MAINTENERS.txt'
      },
      {
        path = '/INSTALL.mysql.txt'
      },
      {
        path = '/INSTALL.pgsql.txt'
      },
      {
        path = '/update.php'
      }
    },
    matches = {
      {
        match = 'Drupal ',
        output = 'Drupal file'
      }
    }
  });

-- Joomla versions
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        -- Detects versions >= 1.60
        path = '/administrator/manifests/files/joomla.xml',
        method = 'GET'
      },
      {
        -- Detects version >= 1.50 and <= 1.5.26
        path = '/language/en-GB/en-GB.xml',
        method = 'GET'
      },
      {
        -- Detects version < 1.50
        path = '/modules/custom.xml',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<version>(.-)</version>',
        output = 'Joomla version \\1'
      }
    }
  });

-- Joomla!
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/htaccess.txt'
      },
      {
        path = '/templates/system/css/toolbar.css'
      },
      {
        path = '/templates/beez/css/template_rtl.css'
      }
    },
    matches = {
      {
        match = 'Joomla!',
        output = 'Joomla!'
      }
    }
  });

-- Drupal changelog
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/CHANGELOG.txt'
      }
    },
    matches = {
      {
        match = 'Drupal (%d..-),',
        output = 'Drupal v1'
      }
    }
  });

-- Drupal version
table.insert(fingerprints, {
  category = 'cms',
  probes = {
    {
      -- Must be executed on both ports 80, 443 for accurate results
      path = '/',
      method = 'GET'
    }
  },
  matches = {
    {
      match = '<meta name="[G|g]enerator" content="Drupal ([0-9 .]*)',
      output = 'Drupal version \\1'
    }
  }
});

-- Moodle
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/pix/moodlelogo.gif',
        method = 'HEAD'
      },
      {
        path = '/admin/environment.xml',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'Moodle files'
      }
    }
  });

-- typo3
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/typo3/index.php',
        method = 'GET'
      },
      {
        path = '/typo3/README.txt',
        method = 'GET'
      },
      {
        path = '/t3lib/README.txt',
        method = 'GET'
      },
      {
        path = '/typo3/sysext/t3skin/images/login/typo3logo-white-greyback.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = 'Login to the TYPO3',
        output = 'Typo3 login page'
      },
      {
        match = 'TYPO3 Backend Administration',
        output = 'Typo3 readme file'
      },
      {
        match = 'TYPO3 Library',
        output = 'Typo3 Library readme'
      },
      {
        match = '',
        output = 'Typo3 Installation'
      },
    }
  });

------------------------------------------------
----                 MAIL                   ----
------------------------------------------------

-- SquirrelMail
table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/squirrelmail/src/login.php',  -- Might return login page with version info
        method = 'GET'
      },
      {
        path = '/webmail/src/login.php',  -- Might return login page with version info
        method = 'GET'
      },
      {
        path = '/src/login.php',  -- Might return login page with version info
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<small>([^<]*)<br />',  -- version extraction (squirrelMail)
        output = '\\1'
      },
      {
        match = 'squirrelmail',
        output = 'SquirrelMail'
      }
    }
  });

-- SquirrelMail files
table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/squirrelmail/images/sm_logo.png',  -- Standard logo file
        method = 'HEAD'
      },
      {
        path = '/webmail/images/sm_logo.png',   -- Standard logo file
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'SquirrelMail'
      }
    }
  });

-- RoundCube
table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/',
        method = 'GET'
      },
      {
        path = '/program/',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<title>Index of /program</title>',
        output = 'RoundCube (Directory listing)'
      },
      {
        match = 'rcube_webmail', -- RoundCube
        output = 'RoundCube'
      },
    }
  });

-- RoundCube file
table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/skins/default/images/roundcube_logo.png',  -- Standard logo file
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'RoundCube'
      }
    }
  });

-- Bitwarden Vault
table.insert(fingerprints, {
    category = 'general',
    probes = {
      {
        path = '/manifest.json',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '([\'"])name%1%s*:%s*[\'"][Bb]itwarden',
        output = 'Bitwarden Vault Manifest File'
      },
      {
        match = '',
        output = 'Manifest JSON File'
      },
    }
  });

------------------------------------------------
----           UNCATEGORIZED                ----
------------------------------------------------

table.insert(fingerprints, {
    category = 'uncategorized',
    probes = {
      {
        path = '/archive/flash:home/html/images/Cisco_logo.gif',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'Cisco SDM'
      }
    }
  });

table.insert(fingerprints, {
    category = 'uncategorized',
    probes = {
      {
        path = '/Default?MAIN=DEVICE',
        method = 'HEAD'
      },
      {
        path = '/TopAccess/images/RioGrande/Rio_PPC.gif',
        method = 'HEAD'
      }
    },
    matches = {
      {
        match = '',
        output = 'TopAccess Toshiba e-Studio520'
      }
    }
  });

table.insert(fingerprints, {
    category = 'uncategorized',
    probes = {
      {
        path = '/jwsappmngr.jnlp',
        method = 'HEAD'
      },
      {
        path = '/nfdesktop.jnlp',
        method = 'HEAD'
      },
      {
        path = '/nfservlets/servlet/SPSRouterServlet/',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'netForensics'
      }
    }
  });

table.insert(fingerprints, {
    category = 'uncategorized',
    probes = {
      {
        path = '/na_admin/styles/dfm.css',
        method = 'HEAD'
      },
    },
    matches = {
      {
        match = '',
        output = 'NetworkAppliance NetApp Release 6.5.3P4'
      }
    }
  });

------------------------------------------------
----    MISCELLANEOUS ITEMS OF INTEREST     ----
------------------------------------------------

-- Moodle files
table.insert(fingerprints, {
    category = 'miscellaneous',
    probes = {
      {
        path = '/lib/db/install.xml'
      },
      {
        path = '/lib/thirdpartylibs.xml'
      },
      {
        path = '/local/readme.txt'
      }
    },
    matches = {
      {
        match = 'XMLDB file for core Moodle tables',
        output = 'Moodle db installation file'
      },
      {
        match = '<libraries>',
        output = 'Moodle thirdpartylibs.xml'
      },
      {
        match = 'This file is part of Moodle',
        output = 'Moodle local/readme.txt'
      }
    }
  });

-- interesting README  files
table.insert(fingerprints, {
    category = 'miscellaneous',
    probes = {
      {
        path = '/README'
      },
      {
        path = '/README.txt'
      },
      {
        path = '/xoda/README'
      },
      {
        path = '/docs/README'
      },
      {
        path = '/documents/README'
      },
      {
        path = '/dms/README'
      },
      {
        path = '/status/README'
      },
      {
        path = '/statusnet/README'
      },
      {
        path = '/twitter/README'
      },
    },
    matches = {
      {
        match = 'StatusNet (.-) ',
        output = 'StatusNet README version \\1'
      },
      {
        match = 'XODA.*Changelog%s---------%s(%d.-):',
        output = 'XODA \\1'
      },
      {
        output = 'Interesting, a readme.'
      }
    }
  });

table.insert(fingerprints, {
    category = 'miscellaneous',
    probes = {
      {
        path = '/0/',
        method = 'GET'
      },
      {
        path = '/1/',
        method = 'GET'
      },
      {
        path = '/2/',
        method = 'GET'
      },
      {
        path = '/3/',
        method = 'GET'
      },
      {
        path = '/4/',
        method = 'GET'
      },
      {
        path = '/5/',
        method = 'GET'
      },
      {
        path = '/6/',
        method = 'GET'
      },
      {
        path = '/7/',
        method = 'GET'
      },
      {
        path = '/8/',
        method = 'GET'
      },
      {
        path = '/9/',
        method = 'GET'
      },
      {
        path = '/10/',
        method = 'GET'
      },
      {
        path = '/a/',
        method = 'GET'
      },
      {
        path = '/b/',
        method = 'GET'
      },
      {
        path = '/c/',
        method = 'GET'
      },
      {
        path = '/d/',
        method = 'GET'
      },
      {
        path = '/e/',
        method = 'GET'
      },
      {
        path = '/f/',
        method = 'GET'
      },
      {
        path = '/g/',
        method = 'GET'
      },
      {
        path = '/h/',
        method = 'GET'
      },
      {
        path = '/i/',
        method = 'GET'
      },
      {
        path = '/j/',
        method = 'GET'
      },
      {
        path = '/k/',
        method = 'GET'
      },
      {
        path = '/l/',
        method = 'GET'
      },
      {
        path = '/m/',
        method = 'GET'
      },
      {
        path = '/n/',
        method = 'GET'
      },
      {
        path = '/o/',
        method = 'GET'
      },
      {
        path = '/p/',
        method = 'GET'
      },
      {
        path = '/q/',
        method = 'GET'
      },
      {
        path = '/r/',
        method = 'GET'
      },
      {
        path = '/s/',
        method = 'GET'
      },
      {
        path = '/t/',
        method = 'GET'
      },
      {
        path = '/u/',
        method = 'GET'
      },
      {
        path = '/v/',
        method = 'GET'
      },
      {
        path = '/w/',
        method = 'GET'
      },
      {
        path = '/x/',
        method = 'GET'
      },
      {
        path = '/y/',
        method = 'GET'
      },
      {
        path = '/z/',
        method = 'GET'
      },
      {
        path = '/acceso/',
        method = 'GET'
      },
      {
        path = '/access/',
        method = 'GET'
      },
      {
        path = '/accesswatch/',
        method = 'GET'
      },
      {
        path = '/acciones/',
        method = 'GET'
      },
      {
        path = '/account/',
        method = 'GET'
      },
      {
        path = '/accounting/',
        method = 'GET'
      },
      {
        path = '/active/',
        method = 'GET'
      },
      {
        path = '/activex/',
        method = 'GET'
      },
      {
        path = '/admcgi/',
        method = 'GET'
      },
      {
        path = '/admisapi/',
        method = 'GET'
      },
      {
        path = '/AdvWebAdmin/',
        method = 'GET'
      },
      {
        path = '/agentes/',
        method = 'GET'
      },
      {
        path = '/Agent/',
        method = 'GET'
      },
      {
        path = '/Agents/',
        method = 'GET'
      },
      {
        path = '/AlbumArt_/',
        method = 'GET'
      },
      {
        path = '/AlbumArt/',
        method = 'GET'
      },
      {
        path = '/Album/',
        method = 'GET'
      },
      {
        path = '/allow/',
        method = 'GET'
      },
      {
        path = '/analog/',
        method = 'GET'
      },
      {
        path = '/anthill/',
        method = 'GET'
      },
      {
        path = '/apache/',
        method = 'GET'
      },
      {
        path = '/app/',
        method = 'GET'
      },
      {
        path = '/applets/',
        method = 'GET'
      },
      {
        path = '/appl/',
        method = 'GET'
      },
      {
        path = '/application/',
        method = 'GET'
      },
      {
        path = '/applications/',
        method = 'GET'
      },
      {
        path = '/applmgr/',
        method = 'GET'
      },
      {
        path = '/apply/',
        method = 'GET'
      },
      {
        path = '/appsec/',
        method = 'GET'
      },
      {
        path = '/apps/',
        method = 'GET'
      },
      {
        path = '/archive/',
        method = 'GET'
      },
      {
        path = '/archives/',
        method = 'GET'
      },
      {
        path = '/ar/',
        method = 'GET'
      },
      {
        path = '/asa/',
        method = 'GET'
      },
      {
        path = '/asp/',
        method = 'GET'
      },
      {
        path = '/atc/',
        method = 'GET'
      },
      {
        path = '/aut/',
        method = 'GET'
      },
      {
        path = '/authadmin/',
        method = 'GET'
      },
      {
        path = '/auth/',
        method = 'GET'
      },
      {
        path = '/author/',
        method = 'GET'
      },
      {
        path = '/authors/',
        method = 'GET'
      },
      {
        path = '/aw/',
        method = 'GET'
      },
      {
        path = '/ayuda/',
        method = 'GET'
      },
      {
        path = '/b2-include/',
        method = 'GET'
      },
      {
        path = '/backend/',
        method = 'GET'
      },
      {
        path = '/bad/',
        method = 'GET'
      },
      {
        path = '/banca/',
        method = 'GET'
      },
      {
        path = '/banco/',
        method = 'GET'
      },
      {
        path = '/bank/',
        method = 'GET'
      },
      {
        path = '/banner01/',
        method = 'GET'
      },
      {
        path = '/banner/',
        method = 'GET'
      },
      {
        path = '/banners/',
        method = 'GET'
      },
      {
        path = '/bar/',
        method = 'GET'
      },
      {
        path = '/batch/',
        method = 'GET'
      },
      {
        path = '/bb-dnbd/',
        method = 'GET'
      },
      {
        path = '/bbv/',
        method = 'GET'
      },
      {
        path = '/bdata/',
        method = 'GET'
      },
      {
        path = '/bdatos/',
        method = 'GET'
      },
      {
        path = '/beta/',
        method = 'GET'
      },
      {
        path = '/billpay/',
        method = 'GET'
      },
      {
        path = '/bin/',
        method = 'GET'
      },
      {
        path = '/binaries/',
        method = 'GET'
      },
      {
        path = '/binary/',
        method = 'GET'
      },
      {
        path = '/boadmin/',
        method = 'GET'
      },
      {
        path = '/boot/',
        method = 'GET'
      },
      {
        path = '/bottom/',
        method = 'GET'
      },
      {
        path = '/browse/',
        method = 'GET'
      },
      {
        path = '/browser/',
        method = 'GET'
      },
      {
        path = '/bsd/',
        method = 'GET'
      },
      {
        path = '/btauxdir/',
        method = 'GET'
      },
      {
        path = '/bug/',
        method = 'GET'
      },
      {
        path = '/bugs/',
        method = 'GET'
      },
      {
        path = '/bugzilla/',
        method = 'GET'
      },
      {
        path = '/buy/',
        method = 'GET'
      },
      {
        path = '/buynow/',
        method = 'GET'
      },
      {
        path = '/cached/',
        method = 'GET'
      },
      {
        path = '/cache/',
        method = 'GET'
      },
      {
        path = '/cache-stats/',
        method = 'GET'
      },
      {
        path = '/caja/',
        method = 'GET'
      },
      {
        path = '/card/',
        method = 'GET'
      },
      {
        path = '/cards/',
        method = 'GET'
      },
      {
        path = '/cart/',
        method = 'GET'
      },
      {
        path = '/cash/',
        method = 'GET'
      },
      {
        path = '/caspsamp/',
        method = 'GET'
      },
      {
        path = '/catalog/',
        method = 'GET'
      },
      {
        path = '/cbi-bin/',
        method = 'GET'
      },
      {
        path = '/ccard/',
        method = 'GET'
      },
      {
        path = '/ccards/',
        method = 'GET'
      },
      {
        path = '/cd-cgi/',
        method = 'GET'
      },
      {
        path = '/cd/',
        method = 'GET'
      },
      {
        path = '/cdrom/',
        method = 'GET'
      },
      {
        path = '/ce_html/',
        method = 'GET'
      },
      {
        path = '/cert/',
        method = 'GET'
      },
      {
        path = '/certificado/',
        method = 'GET'
      },
      {
        path = '/certificate/',
        method = 'GET'
      },
      {
        path = '/cfappman/',
        method = 'GET'
      },
      {
        path = '/cfdocs/',
        method = 'GET'
      },
      {
        path = '/cfide/',
        method = 'GET'
      },
      {
        path = '/cgi-914/',
        method = 'GET'
      },
      {
        path = '/cgi-915/',
        method = 'GET'
      },
      {
        path = '/cgi-auth/',
        method = 'GET'
      },
      {
        path = '/cgi-bin2/',
        method = 'GET'
      },
      {
        path = '/cgi-bin/',
        method = 'GET'
      },
      {
        path = '/cgibin/',
        method = 'GET'
      },
      {
        path = '/cgi.cgi/',
        method = 'GET'
      },
      {
        path = '/cgi-csc/',
        method = 'GET'
      },
      {
        path = '/cgi-exe/',
        method = 'GET'
      },
      {
        path = '/cgi/',
        method = 'GET'
      },
      {
        path = '/cgi-home/',
        method = 'GET'
      },
      {
        path = '/cgi-lib/',
        method = 'GET'
      },
      {
        path = '/cgilib/',
        method = 'GET'
      },
      {
        path = '/cgi-local/',
        method = 'GET'
      },
      {
        path = '/cgi-perl/',
        method = 'GET'
      },
      {
        path = '/cgi-scripts/',
        method = 'GET'
      },
      {
        path = '/cgiscripts/',
        method = 'GET'
      },
      {
        path = '/cgis/',
        method = 'GET'
      },
      {
        path = '/cgi-shl/',
        method = 'GET'
      },
      {
        path = '/cgi-shop/',
        method = 'GET'
      },
      {
        path = '/cgi-sys/',
        method = 'GET'
      },
      {
        path = '/cgi-weddico/',
        method = 'GET'
      },
      {
        path = '/cgi-win/',
        method = 'GET'
      },
      {
        path = '/cgiwin/',
        method = 'GET'
      },
      {
        path = '/class/',
        method = 'GET'
      },
      {
        path = '/classes/',
        method = 'GET'
      },
      {
        path = '/cliente/',
        method = 'GET'
      },
      {
        path = '/clientes/',
        method = 'GET'
      },
      {
        path = '/client/',
        method = 'GET'
      },
      {
        path = '/clients/',
        method = 'GET'
      },
      {
        path = '/cm/',
        method = 'GET'
      },
      {
        path = '/cobalt-images/',
        method = 'GET'
      },
      {
        path = '/code/',
        method = 'GET'
      },
      {
        path = '/com/',
        method = 'GET'
      },
      {
        path = '/comments/',
        method = 'GET'
      },
      {
        path = '/common/',
        method = 'GET'
      },
      {
        path = '/communicator/',
        method = 'GET'
      },
      {
        path = '/company/',
        method = 'GET'
      },
      {
        path = '/comp/',
        method = 'GET'
      },
      {
        path = '/compra/',
        method = 'GET'
      },
      {
        path = '/compras/',
        method = 'GET'
      },
      {
        path = '/compressed/',
        method = 'GET'
      },
      {
        path = '/conecta/',
        method = 'GET'
      },
      {
        path = '/conf/',
        method = 'GET'
      },
      {
        path = '/config/',
        method = 'GET'
      },
      {
        path = '/configs/',
        method = 'GET'
      },
      {
        path = '/configure/',
        method = 'GET'
      },
      {
        path = '/connect/',
        method = 'GET'
      },
      {
        path = '/console/',
        method = 'GET'
      },
      {
        path = '/contact/',
        method = 'GET'
      },
      {
        path = '/contacts/',
        method = 'GET'
      },
      {
        path = '/content/',
        method = 'GET'
      },
      {
        path = '/content.ie5/',
        method = 'GET'
      },
      {
        path = '/controlpanel/',
        method = 'GET'
      },
      {
        path = '/core/',
        method = 'GET'
      },
      {
        path = '/corp/',
        method = 'GET'
      },
      {
        path = '/correo/',
        method = 'GET'
      },
      {
        path = '/counter/',
        method = 'GET'
      },
      {
        path = '/credit/',
        method = 'GET'
      },
      {
        path = '/cron/',
        method = 'GET'
      },
      {
        path = '/crons/',
        method = 'GET'
      },
      {
        path = '/crypto/',
        method = 'GET'
      },
      {
        path = '/CS/',
        method = 'GET'
      },
      {
        path = '/csr/',
        method = 'GET'
      },
      {
        path = '/css/',
        method = 'GET'
      },
      {
        path = '/cuenta/',
        method = 'GET'
      },
      {
        path = '/cuentas/',
        method = 'GET'
      },
      {
        path = '/currency/',
        method = 'GET'
      },
      {
        path = '/cust/',
        method = 'GET'
      },
      {
        path = '/customer/',
        method = 'GET'
      },
      {
        path = '/customers/',
        method = 'GET'
      },
      {
        path = '/custom/',
        method = 'GET'
      },
      {
        path = '/CVS/',
        method = 'GET'
      },
      {
        path = '/cvsweb/',
        method = 'GET'
      },
      {
        path = '/cybercash/',
        method = 'GET'
      },
      {
        path = '/darkportal/',
        method = 'GET'
      },
      {
        path = '/database/',
        method = 'GET'
      },
      {
        path = '/databases/',
        method = 'GET'
      },
      {
        path = '/datafiles/',
        method = 'GET'
      },
      {
        path = '/dat/',
        method = 'GET'
      },
      {
        path = '/data/',
        method = 'GET'
      },
      {
        path = '/dato/',
        method = 'GET'
      },
      {
        path = '/datos/',
        method = 'GET'
      },
      {
        path = '/db/',
        method = 'GET'
      },
      {
        path = '/dbase/',
        method = 'GET'
      },
      {
        path = '/dcforum/',
        method = 'GET'
      },
      {
        path = '/ddreport/',
        method = 'GET'
      },
      {
        path = '/ddrint/',
        method = 'GET'
      },
      {
        path = '/debug/',
        method = 'GET'
      },
      {
        path = '/debugs/',
        method = 'GET'
      },
      {
        path = '/default/',
        method = 'GET'
      },
      {
        path = '/deleted/',
        method = 'GET'
      },
      {
        path = '/delete/',
        method = 'GET'
      },
      {
        path = '/demoauct/',
        method = 'GET'
      },
      {
        path = '/demomall/',
        method = 'GET'
      },
      {
        path = '/demo/',
        method = 'GET'
      },
      {
        path = '/demos/',
        method = 'GET'
      },
      {
        path = '/demouser/',
        method = 'GET'
      },
      {
        path = '/deny/',
        method = 'GET'
      },
      {
        path = '/derived/',
        method = 'GET'
      },
      {
        path = '/design/',
        method = 'GET'
      },
      {
        path = '/dev/',
        method = 'GET'
      },
      {
        path = '/devel/',
        method = 'GET'
      },
      {
        path = '/development/',
        method = 'GET'
      },
      {
        path = '/directories/',
        method = 'GET'
      },
      {
        path = '/directory/',
        method = 'GET'
      },
      {
        path = '/directorymanager/',
        method = 'GET'
      },
      {
        path = '/dir/',
        method = 'GET'
      },
      {
        path = '/dl/',
        method = 'GET'
      },
      {
        path = '/dm/',
        method = 'GET'
      },
      {
        path = '/DMR/',
        method = 'GET'
      },
      {
        path = '/dms0/',
        method = 'GET'
      },
      {
        path = '/dmsdump/',
        method = 'GET'
      },
      {
        path = '/dms/',
        method = 'GET'
      },
      {
        path = '/dnn/',
        method = 'GET'
      },
      {
        path = '/doc1/',
        method = 'GET'
      },
      {
        path = '/doc/',
        method = 'GET'
      },
      {
        path = '/doc-html/',
        method = 'GET'
      },
      {
        path = '/docs1/',
        method = 'GET'
      },
      {
        path = '/docs/',
        method = 'GET'
      },
      {
        path = '/DocuColor/',
        method = 'GET'
      },
      {
        path = '/documentation/',
        method = 'GET'
      },
      {
        path = '/document/',
        method = 'GET'
      },
      {
        path = '/documents/',
        method = 'GET'
      },
      {
        path = '/dotnetnuke/',
        method = 'GET'
      },
      {
        path = '/down/',
        method = 'GET'
      },
      {
        path = '/download/',
        method = 'GET'
      },
      {
        path = '/downloads/',
        method = 'GET'
      },
      {
        path = '/dump/',
        method = 'GET'
      },
      {
        path = '/durep/',
        method = 'GET'
      },
      {
        path = '/easylog/',
        method = 'GET'
      },
      {
        path = '/eforum/',
        method = 'GET'
      },
      {
        path = '/ejemplo/',
        method = 'GET'
      },
      {
        path = '/ejemplos/',
        method = 'GET'
      },
      {
        path = '/emailclass/',
        method = 'GET'
      },
      {
        path = '/email/',
        method = 'GET'
      },
      {
        path = '/employees/',
        method = 'GET'
      },
      {
        path = '/empoyees/',
        method = 'GET'
      },
      {
        path = '/empris/',
        method = 'GET'
      },
      {
        path = '/enter/',
        method = 'GET'
      },
      {
        path = '/envia/',
        method = 'GET'
      },
      {
        path = '/enviamail/',
        method = 'GET'
      },
      {
        path = '/error/',
        method = 'GET'
      },
      {
        path = '/errors/',
        method = 'GET'
      },
      {
        path = '/es/',
        method = 'GET'
      },
      {
        path = '/estmt/',
        method = 'GET'
      },
      {
        path = '/etc/',
        method = 'GET'
      },
      {
        path = '/etcpasswd/',
        method = 'GET'
      },
      {
        path = '/excel/',
        method = 'GET'
      },
      {
        path = '/exc/',
        method = 'GET'
      },
      {
        path = '/exchange/',
        method = 'GET'
      },
      {
        path = '/exchweb/',
        method = 'GET'
      },
      {
        path = '/exec/',
        method = 'GET'
      },
      {
        path = '/exe/',
        method = 'GET'
      },
      {
        path = '/exit/',
        method = 'GET'
      },
      {
        path = '/export/',
        method = 'GET'
      },
      {
        path = '/external/',
        method = 'GET'
      },
      {
        path = '/extranet/',
        method = 'GET'
      },
      {
        path = '/failure/',
        method = 'GET'
      },
      {
        path = '/fbsd/',
        method = 'GET'
      },
      {
        path = '/fcgi-bin/',
        method = 'GET'
      },
      {
        path = '/fcgi/',
        method = 'GET'
      },
      {
        path = '/features/',
        method = 'GET'
      },
      {
        path = '/fileadmin/',
        method = 'GET'
      },
      {
        path = '/file/',
        method = 'GET'
      },
      {
        path = '/filemanager/',
        method = 'GET'
      },
      {
        path = '/files/',
        method = 'GET'
      },
      {
        path = '/find/',
        method = 'GET'
      },
      {
        path = '/flash/',
        method = 'GET'
      },
      {
        path = '/foldoc/',
        method = 'GET'
      },
      {
        path = '/foobar/',
        method = 'GET'
      },
      {
        path = '/foo/',
        method = 'GET'
      },
      {
        path = '/form/',
        method = 'GET'
      },
      {
        path = '/forms/',
        method = 'GET'
      },
      {
        path = '/formsmgr/',
        method = 'GET'
      },
      {
        path = '/form-totaller/',
        method = 'GET'
      },
      {
        path = '/foto/',
        method = 'GET'
      },
      {
        path = '/fotos/',
        method = 'GET'
      },
      {
        path = '/fpadmin/',
        method = 'GET'
      },
      {
        path = '/fpclass/',
        method = 'GET'
      },
      {
        path = '/fpdb/',
        method = 'GET'
      },
      {
        path = '/fpe/',
        method = 'GET'
      },
      {
        path = '/framesets/',
        method = 'GET'
      },
      {
        path = '/frames/',
        method = 'GET'
      },
      {
        path = '/frontpage/',
        method = 'GET'
      },
      {
        path = '/ftp/',
        method = 'GET'
      },
      {
        path = '/ftproot/',
        method = 'GET'
      },
      {
        path = '/func/',
        method = 'GET'
      },
      {
        path = '/function/',
        method = 'GET'
      },
      {
        path = '/functions/',
        method = 'GET'
      },
      {
        path = '/fun/',
        method = 'GET'
      },
      {
        path = '/general/',
        method = 'GET'
      },
      {
        path = '/gfx/',
        method = 'GET'
      },
      {
        path = '/gif/',
        method = 'GET'
      },
      {
        path = '/gifs/',
        method = 'GET'
      },
      {
        path = '/global/',
        method = 'GET'
      },
      {
        path = '/globals/',
        method = 'GET'
      },
      {
        path = '/good/',
        method = 'GET'
      },
      {
        path = '/graphics/',
        method = 'GET'
      },
      {
        path = '/grocery/',
        method = 'GET'
      },
      {
        path = '/guestbook/',
        method = 'GET'
      },
      {
        path = '/guest/',
        method = 'GET'
      },
      {
        path = '/guests/',
        method = 'GET'
      },
      {
        path = '/GXApp/',
        method = 'GET'
      },
      {
        path = '/HB/',
        method = 'GET'
      },
      {
        path = '/HBTemplates/',
        method = 'GET'
      },
      {
        path = '/helpdesk/',
        method = 'GET'
      },
      {
        path = '/help/',
        method = 'GET'
      },
      {
        path = '/hidden/',
        method = 'GET'
      },
      {
        path = '/hide/',
        method = 'GET'
      },
      {
        path = '/hitmatic/',
        method = 'GET'
      },
      {
        path = '/hit_tracker/',
        method = 'GET'
      },
      {
        path = '/hlstats/',
        method = 'GET'
      },
      {
        path = '/home/',
        method = 'GET'
      },
      {
        path = '/hosted/',
        method = 'GET'
      },
      {
        path = '/host/',
        method = 'GET'
      },
      {
        path = '/hostingcontroller/',
        method = 'GET'
      },
      {
        path = '/hosting/',
        method = 'GET'
      },
      {
        path = '/hp/',
        method = 'GET'
      },
      {
        path = '/htbin/',
        method = 'GET'
      },
      {
        path = '/htdocs/',
        method = 'GET'
      },
      {
        path = '/ht/',
        method = 'GET'
      },
      {
        path = '/htm/',
        method = 'GET'
      },
      {
        path = '/html/',
        method = 'GET'
      },
      {
        path = '/http/',
        method = 'GET'
      },
      {
        path = '/https/',
        method = 'GET'
      },
      {
        path = '/hyperstat/',
        method = 'GET'
      },
      {
        path = '/i18n/',
        method = 'GET'
      },
      {
        path = '/ibank/',
        method = 'GET'
      },
      {
        path = '/ibill/',
        method = 'GET'
      },
      {
        path = '/IBMWebAS/',
        method = 'GET'
      },
      {
        path = '/icons/',
        method = 'GET'
      },
      {
        path = '/idea/',
        method = 'GET'
      },
      {
        path = '/ideas/',
        method = 'GET'
      },
      {
        path = '/I/',
        method = 'GET'
      },
      {
        path = '/iisadmin/',
        method = 'GET'
      },
      {
        path = '/image/',
        method = 'GET'
      },
      {
        path = '/images/',
        method = 'GET'
      },
      {
        path = '/imagenes/',
        method = 'GET'
      },
      {
        path = '/imagery/',
        method = 'GET'
      },
      {
        path = '/img/',
        method = 'GET'
      },
      {
        path = '/imp/',
        method = 'GET'
      },
      {
        path = '/import/',
        method = 'GET'
      },
      {
        path = '/impreso/',
        method = 'GET'
      },
      {
        path = '/inc/',
        method = 'GET'
      },
      {
        path = '/include/',
        method = 'GET'
      },
      {
        path = '/includes/',
        method = 'GET'
      },
      {
        path = '/incoming/',
        method = 'GET'
      },
      {
        path = '/index/',
        method = 'GET'
      },
      {
        path = '/inet/',
        method = 'GET'
      },
      {
        path = '/inf/',
        method = 'GET'
      },
      {
        path = '/info/',
        method = 'GET'
      },
      {
        path = '/information/',
        method = 'GET'
      },
      {
        path = '/in/',
        method = 'GET'
      },
      {
        path = '/ingresa/',
        method = 'GET'
      },
      {
        path = '/ingreso/',
        method = 'GET'
      },
      {
        path = '/install/',
        method = 'GET'
      },
      {
        path = '/internal/',
        method = 'GET'
      },
      {
        path = '/internet/',
        method = 'GET'
      },
      {
        path = '/intranet/',
        method = 'GET'
      },
      {
        path = '/inventory/',
        method = 'GET'
      },
      {
        path = '/invitado/',
        method = 'GET'
      },
      {
        path = '/isapi/',
        method = 'GET'
      },
      {
        path = '/j2ee/',
        method = 'GET'
      },
      {
        path = '/japidoc/',
        method = 'GET'
      },
      {
        path = '/java/',
        method = 'GET'
      },
      {
        path = '/javascript/',
        method = 'GET'
      },
      {
        path = '/javasdk/',
        method = 'GET'
      },
      {
        path = '/javatest/',
        method = 'GET'
      },
      {
        path = '/jave/',
        method = 'GET'
      },
      {
        path = '/JBookIt/',
        method = 'GET'
      },
      {
        path = '/jdbc/',
        method = 'GET'
      },
      {
        path = '/job/',
        method = 'GET'
      },
      {
        path = '/jrun/',
        method = 'GET'
      },
      {
        path = '/jsa/',
        method = 'GET'
      },
      {
        path = '/jscript/',
        method = 'GET'
      },
      {
        path = '/jserv/',
        method = 'GET'
      },
      {
        path = '/js/',
        method = 'GET'
      },
      {
        path = '/jslib/',
        method = 'GET'
      },
      {
        path = '/jsp/',
        method = 'GET'
      },
      {
        path = '/junk/',
        method = 'GET'
      },
      {
        path = '/kiva/',
        method = 'GET'
      },
      {
        path = '/known/',
        method = 'GET'
      },
      {
        path = '/labs/',
        method = 'GET'
      },
      {
        path = '/lcgi/',
        method = 'GET'
      },
      {
        path = '/lib/',
        method = 'GET'
      },
      {
        path = '/libraries/',
        method = 'GET'
      },
      {
        path = '/library/',
        method = 'GET'
      },
      {
        path = '/libro/',
        method = 'GET'
      },
      {
        path = '/license/',
        method = 'GET'
      },
      {
        path = '/licenses/',
        method = 'GET'
      },
      {
        path = '/links/',
        method = 'GET'
      },
      {
        path = '/linux/',
        method = 'GET'
      },
      {
        path = '/loader/',
        method = 'GET'
      },
      {
        path = '/local/',
        method = 'GET'
      },
      {
        path = '/location/',
        method = 'GET'
      },
      {
        path = '/locations/',
        method = 'GET'
      },
      {
        path = '/logfile/',
        method = 'GET'
      },
      {
        path = '/logfiles/',
        method = 'GET'
      },
      {
        path = '/logger/',
        method = 'GET'
      },
      {
        path = '/logg/',
        method = 'GET'
      },
      {
        path = '/logging/',
        method = 'GET'
      },
      {
        path = '/logon/',
        method = 'GET'
      },
      {
        path = '/logout/',
        method = 'GET'
      },
      {
        path = '/lost+found/',
        method = 'GET'
      },
      {
        path = '/mailman/',
        method = 'GET'
      },
      {
        path = '/mailroot/',
        method = 'GET'
      },
      {
        path = '/makefile/',
        method = 'GET'
      },
      {
        path = '/manage/',
        method = 'GET'
      },
      {
        path = '/management/',
        method = 'GET'
      },
      {
        path = '/man/',
        method = 'GET'
      },
      {
        path = '/manual/',
        method = 'GET'
      },
      {
        path = '/map/',
        method = 'GET'
      },
      {
        path = '/maps/',
        method = 'GET'
      },
      {
        path = '/marketing/',
        method = 'GET'
      },
      {
        path = '/member/',
        method = 'GET'
      },
      {
        path = '/members/',
        method = 'GET'
      },
      {
        path = '/mem_bin/',
        method = 'GET'
      },
      {
        path = '/mem/',
        method = 'GET'
      },
      {
        path = '/message/',
        method = 'GET'
      },
      {
        path = '/messaging/',
        method = 'GET'
      },
      {
        path = '/metacart/',
        method = 'GET'
      },
      {
        path = '/microsoft/',
        method = 'GET'
      },
      {
        path = '/misc/',
        method = 'GET'
      },
      {
        path = '/mkstats/',
        method = 'GET'
      },
      {
        path = '/mod/',
        method = 'GET'
      },
      {
        path = '/module/',
        method = 'GET'
      },
      {
        path = '/modules/',
        method = 'GET'
      },
      {
        path = '/movimientos/',
        method = 'GET'
      },
      {
        path = '/mpcgi/',
        method = 'GET'
      },
      {
        path = '/mqseries/',
        method = 'GET'
      },
      {
        path = '/msfpe/',
        method = 'GET'
      },
      {
        path = '/ms/',
        method = 'GET'
      },
      {
        path = '/msql/',
        method = 'GET'
      },
      {
        path = '/Msword/',
        method = 'GET'
      },
      {
        path = '/mxhtml/',
        method = 'GET'
      },
      {
        path = '/mxportal/',
        method = 'GET'
      },
      {
        path = '/my/',
        method = 'GET'
      },
      {
        path = '/My%20Shared%20Folder/',
        method = 'GET'
      },
      {
        path = '/mysql_admin/',
        method = 'GET'
      },
      {
        path = '/mysql/',
        method = 'GET'
      },
      {
        path = '/name/',
        method = 'GET'
      },
      {
        path = '/names/',
        method = 'GET'
      },
      {
        path = '/ncadmin/',
        method = 'GET'
      },
      {
        path = '/nchelp/',
        method = 'GET'
      },
      {
        path = '/netbasic/',
        method = 'GET'
      },
      {
        path = '/netcat/',
        method = 'GET'
      },
      {
        path = '/NetDynamic/',
        method = 'GET'
      },
      {
        path = '/NetDynamics/',
        method = 'GET'
      },
      {
        path = '/net/',
        method = 'GET'
      },
      {
        path = '/netmagstats/',
        method = 'GET'
      },
      {
        path = '/netscape/',
        method = 'GET'
      },
      {
        path = '/netshare/',
        method = 'GET'
      },
      {
        path = '/nettracker/',
        method = 'GET'
      },
      {
        path = '/network/',
        method = 'GET'
      },
      {
        path = '/new/',
        method = 'GET'
      },
      {
        path = '/news/',
        method = 'GET'
      },
      {
        path = '/News/',
        method = 'GET'
      },
      {
        path = '/nextgeneration/',
        method = 'GET'
      },
      {
        path = '/nl/',
        method = 'GET'
      },
      {
        path = '/notes/',
        method = 'GET'
      },
      {
        path = '/noticias/',
        method = 'GET'
      },
      {
        path = '/NSearch/',
        method = 'GET'
      },
      {
        path = '/objects/',
        method = 'GET'
      },
      {
        path = '/odbc/',
        method = 'GET'
      },
      {
        path = '/officescan/',
        method = 'GET'
      },
      {
        path = '/ojspdemos/',
        method = 'GET'
      },
      {
        path = '/old_files/',
        method = 'GET'
      },
      {
        path = '/oldfiles/',
        method = 'GET'
      },
      {
        path = '/old/',
        method = 'GET'
      },
      {
        path = '/oprocmgr-service/',
        method = 'GET'
      },
      {
        path = '/oprocmgr-status/',
        method = 'GET'
      },
      {
        path = '/oracle/',
        method = 'GET'
      },
      {
        path = '/oradata/',
        method = 'GET'
      },
      {
        path = '/order/',
        method = 'GET'
      },
      {
        path = '/orders/',
        method = 'GET'
      },
      {
        path = '/os/',
        method = 'GET'
      },
      {
        path = '/out/',
        method = 'GET'
      },
      {
        path = '/outgoing/',
        method = 'GET'
      },
      {
        path = '/owners/',
        method = 'GET'
      },
      {
        path = '/ows-bin/',
        method = 'GET'
      },
      {
        path = '/page/',
        method = 'GET'
      },
      {
        path = '/_pages/',
        method = 'GET'
      },
      {
        path = '/pages/',
        method = 'GET'
      },
      {
        path = '/partner/',
        method = 'GET'
      },
      {
        path = '/partners/',
        method = 'GET'
      },
      {
        path = '/passport/',
        method = 'GET'
      },
      {
        path = '/password/',
        method = 'GET'
      },
      {
        path = '/passwords/',
        method = 'GET'
      },
      {
        path = '/path/',
        method = 'GET'
      },
      {
        path = '/payment/',
        method = 'GET'
      },
      {
        path = '/payments/',
        method = 'GET'
      },
      {
        path = '/pccsmysqladm/',
        method = 'GET'
      },
      {
        path = '/PDG_Cart/',
        method = 'GET'
      },
      {
        path = '/perl5/',
        method = 'GET'
      },
      {
        path = '/perl/',
        method = 'GET'
      },
      {
        path = '/personal/',
        method = 'GET'
      },
      {
        path = '/pforum/',
        method = 'GET'
      },
      {
        path = '/phorum/',
        method = 'GET'
      },
      {
        path = '/phpBB/',
        method = 'GET'
      },
      {
        path = '/php_classes/',
        method = 'GET'
      },
      {
        path = '/phpclassifieds/',
        method = 'GET'
      },
      {
        path = '/php/',
        method = 'GET'
      },
      {
        path = '/phpimageview/',
        method = 'GET'
      },
      {
        path = '/phpnuke/',
        method = 'GET'
      },
      {
        path = '/phpPhotoAlbum/',
        method = 'GET'
      },
      {
        path = '/phpprojekt/',
        method = 'GET'
      },
      {
        path = '/phpSecurePages/',
        method = 'GET'
      },
      {
        path = '/pics/',
        method = 'GET'
      },
      {
        path = '/pictures/',
        method = 'GET'
      },
      {
        path = '/pike/',
        method = 'GET'
      },
      {
        path = '/piranha/',
        method = 'GET'
      },
      {
        path = '/pls/',
        method = 'GET'
      },
      {
        path = '/plsql/',
        method = 'GET'
      },
      {
        path = '/plssampleadmin_/',
        method = 'GET'
      },
      {
        path = '/plssampleadmin/',
        method = 'GET'
      },
      {
        path = '/plssampleadmin_help/',
        method = 'GET'
      },
      {
        path = '/plssample/',
        method = 'GET'
      },
      {
        path = '/poll/',
        method = 'GET'
      },
      {
        path = '/polls/',
        method = 'GET'
      },
      {
        path = '/porn/',
        method = 'GET'
      },
      {
        path = '/portal/',
        method = 'GET'
      },
      {
        path = '/portals/',
        method = 'GET'
      },
      {
        path = '/postgres/',
        method = 'GET'
      },
      {
        path = '/postnuke/',
        method = 'GET'
      },
      {
        path = '/ppwb/',
        method = 'GET'
      },
      {
        path = '/printer/',
        method = 'GET'
      },
      {
        path = '/printers/',
        method = 'GET'
      },
      {
        path = '/privacy/',
        method = 'GET'
      },
      {
        path = '/privado/',
        method = 'GET'
      },
      {
        path = '/_private/',
        method = 'GET'
      },
      {
        path = '/private/',
        method = 'GET'
      },
      {
        path = '/priv/',
        method = 'GET'
      },
      {
        path = '/prod/',
        method = 'GET'
      },
      {
        path = '/projectserver/',
        method = 'GET'
      },
      {
        path = '/protected/',
        method = 'GET'
      },
      {
        path = '/proxy/',
        method = 'GET'
      },
      {
        path = '/prueba/',
        method = 'GET'
      },
      {
        path = '/pruebas/',
        method = 'GET'
      },
      {
        path = '/prv/',
        method = 'GET'
      },
      {
        path = '/pub/',
        method = 'GET'
      },
      {
        path = '/_public/',
        method = 'GET'
      },
      {
        path = '/public/',
        method = 'GET'
      },
      {
        path = '/publica/',
        method = 'GET'
      },
      {
        path = '/publicar/',
        method = 'GET'
      },
      {
        path = '/publico/',
        method = 'GET'
      },
      {
        path = '/publish/',
        method = 'GET'
      },
      {
        path = '/purchase/',
        method = 'GET'
      },
      {
        path = '/purchases/',
        method = 'GET'
      },
      {
        path = '/pw/',
        method = 'GET'
      },
      {
        path = '/python/',
        method = 'GET'
      },
      {
        path = '/random_banner/',
        method = 'GET'
      },
      {
        path = '/rdp/',
        method = 'GET'
      },
      {
        path = '/Readme/',
        method = 'GET'
      },
      {
        path = '/recycler/',
        method = 'GET'
      },
      {
        path = '/registered/',
        method = 'GET'
      },
      {
        path = '/register/',
        method = 'GET'
      },
      {
        path = '/registry/',
        method = 'GET'
      },
      {
        path = '/remote/',
        method = 'GET'
      },
      {
        path = '/remove/',
        method = 'GET'
      },
      {
        path = '/report/',
        method = 'GET'
      },
      {
        path = '/reports/',
        method = 'GET'
      },
      {
        path = '/reseller/',
        method = 'GET'
      },
      {
        path = '/restricted/',
        method = 'GET'
      },
      {
        path = '/retail/',
        method = 'GET'
      },
      {
        path = '/reveal/',
        method = 'GET'
      },
      {
        path = '/reviews/',
        method = 'GET'
      },
      {
        path = '/ROADS/',
        method = 'GET'
      },
      {
        path = '/robot/',
        method = 'GET'
      },
      {
        path = '/robots/',
        method = 'GET'
      },
      {
        path = '/root/',
        method = 'GET'
      },
      {
        path = '/rsrc/',
        method = 'GET'
      },
      {
        path = '/ruby/',
        method = 'GET'
      },
      {
        path = '/sales/',
        method = 'GET'
      },
      {
        path = '/save/',
        method = 'GET'
      },
      {
        path = '/script/',
        method = 'GET'
      },
      {
        path = '/ScriptLibrary/',
        method = 'GET'
      },
      {
        path = '/scripts/',
        method = 'GET'
      },
      {
        path = '/search/',
        method = 'GET'
      },
      {
        path = '/search-ui/',
        method = 'GET'
      },
      {
        path = '/sec/',
        method = 'GET'
      },
      {
        path = '/secret/',
        method = 'GET'
      },
      {
        path = '/secured/',
        method = 'GET'
      },
      {
        path = '/secure/',
        method = 'GET'
      },
      {
        path = '/security/',
        method = 'GET'
      },
      {
        path = '/sell/',
        method = 'GET'
      },
      {
        path = '/server/',
        method = 'GET'
      },
      {
        path = '/server-info/',
        method = 'GET'
      },
      {
        path = '/servers/',
        method = 'GET'
      },
      {
        path = '/server_stats/',
        method = 'GET'
      },
      {
        path = '/serverstats/',
        method = 'GET'
      },
      {
        path = '/server-status/',
        method = 'GET'
      },
      {
        path = '/service/',
        method = 'GET'
      },
      {
        path = '/services/',
        method = 'GET'
      },
      {
        path = '/servicio/',
        method = 'GET'
      },
      {
        path = '/servicios/',
        method = 'GET'
      },
      {
        path = '/servlet/',
        method = 'GET'
      },
      {
        path = '/servlets/',
        method = 'GET'
      },
      {
        path = '/session/',
        method = 'GET'
      },
      {
        path = '/setup/',
        method = 'GET'
      },
      {
        path = '/shared/',
        method = 'GET'
      },
      {
        path = '/sharedtemplates/',
        method = 'GET'
      },
      {
        path = '/share/',
        method = 'GET'
      },
      {
        path = '/shell-cgi/',
        method = 'GET'
      },
      {
        path = '/shipping/',
        method = 'GET'
      },
      {
        path = '/shop/',
        method = 'GET'
      },
      {
        path = '/shopper/',
        method = 'GET'
      },
      {
        path = '/show/',
        method = 'GET'
      },
      {
        path = '/SilverStream/',
        method = 'GET'
      },
      {
        path = '/siteadmin/',
        method = 'GET'
      },
      {
        path = '/site/',
        method = 'GET'
      },
      {
        path = '/sitemgr/',
        method = 'GET'
      },
      {
        path = '/siteminderagent/',
        method = 'GET'
      },
      {
        path = '/siteminder/',
        method = 'GET'
      },
      {
        path = '/siteserver/',
        method = 'GET'
      },
      {
        path = '/sites/',
        method = 'GET'
      },
      {
        path = '/sitestats/',
        method = 'GET'
      },
      {
        path = '/siteupdate/',
        method = 'GET'
      },
      {
        path = '/smreports/',
        method = 'GET'
      },
      {
        path = '/smreportsviewer/',
        method = 'GET'
      },
      {
        path = '/soapdocs/',
        method = 'GET'
      },
      {
        path = '/soap/',
        method = 'GET'
      },
      {
        path = '/software/',
        method = 'GET'
      },
      {
        path = '/solaris/',
        method = 'GET'
      },
      {
        path = '/source/',
        method = 'GET'
      },
      {
        path = '/sql/',
        method = 'GET'
      },
      {
        path = '/squid/',
        method = 'GET'
      },
      {
        path = '/src/',
        method = 'GET'
      },
      {
        path = '/srchadm/',
        method = 'GET'
      },
      {
        path = '/ssi/',
        method = 'GET'
      },
      {
        path = '/ssl/',
        method = 'GET'
      },
      {
        path = '/sslkeys/',
        method = 'GET'
      },
      {
        path = '/staff/',
        method = 'GET'
      },
      {
        path = '/state/',
        method = 'GET'
      },
      {
        path = '/stat/',
        method = 'GET'
      },
      {
        path = '/statistic/',
        method = 'GET'
      },
      {
        path = '/statistics/',
        method = 'GET'
      },
      {
        path = '/stats-bin-p/',
        method = 'GET'
      },
      {
        path = '/stats/',
        method = 'GET'
      },
      {
        path = '/stats_old/',
        method = 'GET'
      },
      {
        path = '/status/',
        method = 'GET'
      },
      {
        path = '/storage/',
        method = 'GET'
      },
      {
        path = '/StoreDB/',
        method = 'GET'
      },
      {
        path = '/store/',
        method = 'GET'
      },
      {
        path = '/storemgr/',
        method = 'GET'
      },
      {
        path = '/stronghold-info/',
        method = 'GET'
      },
      {
        path = '/stronghold-status/',
        method = 'GET'
      },
      {
        path = '/stuff/',
        method = 'GET'
      },
      {
        path = '/style/',
        method = 'GET'
      },
      {
        path = '/styles/',
        method = 'GET'
      },
      {
        path = '/stylesheet/',
        method = 'GET'
      },
      {
        path = '/stylesheets/',
        method = 'GET'
      },
      {
        path = '/subir/',
        method = 'GET'
      },
      {
        path = '/sun/',
        method = 'GET'
      },
      {
        path = '/super_stats/',
        method = 'GET'
      },
      {
        path = '/supplier/',
        method = 'GET'
      },
      {
        path = '/suppliers/',
        method = 'GET'
      },
      {
        path = '/supply/',
        method = 'GET'
      },
      {
        path = '/supporter/',
        method = 'GET'
      },
      {
        path = '/support/',
        method = 'GET'
      },
      {
        path = '/sysadmin/',
        method = 'GET'
      },
      {
        path = '/sysbackup/',
        method = 'GET'
      },
      {
        path = '/sys/',
        method = 'GET'
      },
      {
        path = '/system/',
        method = 'GET'
      },
      {
        path = '/systems/',
        method = 'GET'
      },
      {
        path = '/tar/',
        method = 'GET'
      },
      {
        path = '/target/',
        method = 'GET'
      },
      {
        path = '/tarjetas/',
        method = 'GET'
      },
      {
        path = '/tech/',
        method = 'GET'
      },
      {
        path = '/technote/',
        method = 'GET'
      },
      {
        path = '/te_html/',
        method = 'GET'
      },
      {
        path = '/temp/',
        method = 'GET'
      },
      {
        path = '/template/',
        method = 'GET'
      },
      {
        path = '/templates/',
        method = 'GET'
      },
      {
        path = '/temporal/',
        method = 'GET'
      },
      {
        path = '/test-cgi/',
        method = 'GET'
      },
      {
        path = '/testing/',
        method = 'GET'
      },
      {
        path = '/tests/',
        method = 'GET'
      },
      {
        path = '/testweb/',
        method = 'GET'
      },
      {
        path = '/themes/',
        method = 'GET'
      },
      {
        path = '/ticket/',
        method = 'GET'
      },
      {
        path = '/tickets/',
        method = 'GET'
      },
      {
        path = '/tip/',
        method = 'GET'
      },
      {
        path = '/tips/',
        method = 'GET'
      },
      {
        path = '/tmp/',
        method = 'GET'
      },
      {
        path = '/ToDo/',
        method = 'GET'
      },
      {
        path = '/tool/',
        method = 'GET'
      },
      {
        path = '/tools/',
        method = 'GET'
      },
      {
        path = '/TopAccess/',
        method = 'GET'
      },
      {
        path = '/top/',
        method = 'GET'
      },
      {
        path = '/tpv/',
        method = 'GET'
      },
      {
        path = '/trabajo/',
        method = 'GET'
      },
      {
        path = '/track/',
        method = 'GET'
      },
      {
        path = '/tracking/',
        method = 'GET'
      },
      {
        path = '/transfer/',
        method = 'GET'
      },
      {
        path = '/transito/',
        method = 'GET'
      },
      {
        path = '/transpolar/',
        method = 'GET'
      },
      {
        path = '/tree/',
        method = 'GET'
      },
      {
        path = '/trees/',
        method = 'GET'
      },
      {
        path = '/trick/',
        method = 'GET'
      },
      {
        path = '/tricks/',
        method = 'GET'
      },
      {
        path = '/u02/',
        method = 'GET'
      },
      {
        path = '/unix/',
        method = 'GET'
      },
      {
        path = '/unknown/',
        method = 'GET'
      },
      {
        path = '/updates/',
        method = 'GET'
      },
      {
        path = '/upload/',
        method = 'GET'
      },
      {
        path = '/uploads/',
        method = 'GET'
      },
      {
        path = '/usage/',
        method = 'GET'
      },
      {
        path = '/userdb/',
        method = 'GET'
      },
      {
        path = '/user/',
        method = 'GET'
      },
      {
        path = '/users/',
        method = 'GET'
      },
      {
        path = '/us/',
        method = 'GET'
      },
      {
        path = '/usr/',
        method = 'GET'
      },
      {
        path = '/ustats/',
        method = 'GET'
      },
      {
        path = '/usuario/',
        method = 'GET'
      },
      {
        path = '/usuarios/',
        method = 'GET'
      },
      {
        path = '/util/',
        method = 'GET'
      },
      {
        path = '/utils/',
        method = 'GET'
      },
      {
        path = '/vendor/',
        method = 'GET'
      },
      {
        path = '/vfs/',
        method = 'GET'
      },
      {
        path = '/view/',
        method = 'GET'
      },
      {
        path = '/vpn/',
        method = 'GET'
      },
      {
        path = '/vti_txt/',
        method = 'GET'
      },
      {
        path = '/w2000/',
        method = 'GET'
      },
      {
        path = '/w2k/',
        method = 'GET'
      },
      {
        path = '/w3perl/',
        method = 'GET'
      },
      {
        path = '/w-agora/',
        method = 'GET'
      },
      {
        path = '/way-board/',
        method = 'GET'
      },
      {
        path = '/web800fo/',
        method = 'GET'
      },
      {
        path = '/webaccess/',
        method = 'GET'
      },
      {
        path = '/webadmin/',
        method = 'GET'
      },
      {
        path = '/webAdmin/',
        method = 'GET'
      },
      {
        path = '/webalizer/',
        method = 'GET'
      },
      {
        path = '/webapps/',
        method = 'GET'
      },
      {
        path = '/WebBank/',
        method = 'GET'
      },
      {
        path = '/webboard/',
        method = 'GET'
      },
      {
        path = '/WebCalendar/',
        method = 'GET'
      },
      {
        path = '/webcart/',
        method = 'GET'
      },
      {
        path = '/webcart-lite/',
        method = 'GET'
      },
      {
        path = '/webcgi/',
        method = 'GET'
      },
      {
        path = '/webdata/',
        method = 'GET'
      },
      {
        path = '/webdav/',
        method = 'GET'
      },
      {
        path = '/webdb/',
        method = 'GET'
      },
      {
        path = '/webDB/',
        method = 'GET'
      },
      {
        path = '/web/',
        method = 'GET'
      },
      {
        path = '/webimages2/',
        method = 'GET'
      },
      {
        path = '/webimages/',
        method = 'GET'
      },
      {
        path = '/web-inf/',
        method = 'GET'
      },
      {
        path = '/webmaster/',
        method = 'GET'
      },
      {
        path = '/webmaster_logs/',
        method = 'GET'
      },
      {
        path = '/webMathematica/',
        method = 'GET'
      },
      {
        path = '/webpub/',
        method = 'GET'
      },
      {
        path = '/webpub-ui/',
        method = 'GET'
      },
      {
        path = '/webreports/',
        method = 'GET'
      },
      {
        path = '/webreps/',
        method = 'GET'
      },
      {
        path = '/webshare/',
        method = 'GET'
      },
      {
        path = '/WebShop/',
        method = 'GET'
      },
      {
        path = '/website/',
        method = 'GET'
      },
      {
        path = '/webstat/',
        method = 'GET'
      },
      {
        path = '/webstats/',
        method = 'GET'
      },
      {
        path = '/Web_store/',
        method = 'GET'
      },
      {
        path = '/webtrace/',
        method = 'GET'
      },
      {
        path = '/WebTrend/',
        method = 'GET'
      },
      {
        path = '/webtrends/',
        method = 'GET'
      },
      {
        path = '/web_usage/',
        method = 'GET'
      },
      {
        path = '/win2k/',
        method = 'GET'
      },
      {
        path = '/window/',
        method = 'GET'
      },
      {
        path = '/windows/',
        method = 'GET'
      },
      {
        path = '/win/',
        method = 'GET'
      },
      {
        path = '/winnt/',
        method = 'GET'
      },
      {
        path = '/word/',
        method = 'GET'
      },
      {
        path = '/work/',
        method = 'GET'
      },
      {
        path = '/world/',
        method = 'GET'
      },
      {
        path = '/wsdocs/',
        method = 'GET'
      },
      {
        path = '/WS_FTP/',
        method = 'GET'
      },
      {
        path = '/wstats/',
        method = 'GET'
      },
      {
        path = '/wusage/',
        method = 'GET'
      },
      {
        path = '/www0/',
        method = 'GET'
      },
      {
        path = '/www2/',
        method = 'GET'
      },
      {
        path = '/www3/',
        method = 'GET'
      },
      {
        path = '/www4/',
        method = 'GET'
      },
      {
        path = '/www/',
        method = 'GET'
      },
      {
        path = '/wwwjoin/',
        method = 'GET'
      },
      {
        path = '/wwwrooot/',
        method = 'GET'
      },
      {
        path = '/www-sql/',
        method = 'GET'
      },
      {
        path = '/wwwstat/',
        method = 'GET'
      },
      {
        path = '/wwwstats/',
        method = 'GET'
      },
      {
        path = '/xGB/',
        method = 'GET'
      },
      {
        path = '/xml/',
        method = 'GET'
      },
      {
        path = '/XSL/',
        method = 'GET'
      },
      {
        path = '/xtemp/',
        method = 'GET'
      },
      {
        path = '/xymon/',
        method = 'GET'
      },
      {
        path = '/zb41/',
        method = 'GET'
      },
      {
        path = '/zipfiles/',
        method = 'GET'
      },
      {
        path = '/zip/',
        method = 'GET'
      },
      {
        path = '/_docs/',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<title>Index of .*(Apache.*) Server at',
        output = 'Potentially interesting directory w/ listing on \'\\1\''
      },
      {
        match = '<title>Index of',
        output = 'Potentially interesting folder w/ directory listing'
      },
      {
        match = '',
        output = 'Potentially interesting folder'
      }
    }
  });

-- Sitecore Version
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/sitecore/shell/sitecore.version.xml',
        method = 'GET'
      },
      {
        path = '/sitecore/login/default.aspx',
        method = 'GET'
      }
    },
    matches = {
      {
        match = '<major>([^<]*)</major>.*<minor>([^<]*)</minor>.*<build>([^<]*)</build>.*<revision>([^<]*)</revision>',
        output = '\\1.\\2.\\3 (rev. \\4)'
      },
      {
        match = 'class="SystemInformationDivider">.*Sitecore.NET ([^<]*)</div>',
        output = '\\1'
      },
      {
        match = '<hr/>.*Sitecore version ([^<]*)</div>',
        output = '\\1'
      },
      {
        match = '',
        output = 'Sitecore.NET login page'
      }
    }
  });

-- Sitecore
table.insert(fingerprints, {
    category = 'cms',
    probes = {
      {
        path = '/sitecore/admin/stats.aspx', -- Removed in version 6.3.1 (rev. 110112)
        method = 'HEAD'
      },
      {
        path = '/sitecore/admin/unlock_admin.aspx', -- disabled per default in 6.2.0 (rev.100507)
        method = 'HEAD'
      },
      {
        path = '/sitecore/shell/Applications/shell.xml',
        method = 'HEAD'
      },
      {
        path = '/sitecore/admin/ShowConfig.aspx',
        method = 'HEAD'
      },
      {
        path = '/App_Config/Security/Domains.config.xml',
        method = 'HEAD'
      },
      {
        path = '/App_Config/Security/GlobalRoles.config.xml',
        method = 'HEAD'
      },
      {
        path = '/sitecore%20modules/staging/service/api.asmx',
        method = 'HEAD'
      },
      {
        path = '/sitecore%20modules/staging/workdir',
        method = 'HEAD'
      },
      {
        path = '/sitecore/system/Settings/Security/Profiles',
        method = 'HEAD'
      },

    },
    matches = {
      {
        match = '',
        output = 'Sitecore.NET (CMS)'
      }
    },
  });

local stdnse = require "stdnse"
local nmap = require "nmap"

nikto_db_path = stdnse.get_script_args("http-fingerprints.nikto-db-path") or "db_tests"
nikto_db_path = nmap.fetchfile(nikto_db_path) or nikto_db_path
local f = io.open(nikto_db_path, "r")

if f then

  f:close()
  stdnse.debug1("Found nikto db.")

  local nikto_db = {}
  for l in io.lines(nikto_db_path) do

    -- Skip comments.
    if not string.match(l, "^#.*") then

      record = {}

      for field in string.gmatch(l, "\"(.-)\",") do

        -- Grab every attribute and create a record.
        if field then
          string.gsub(field, '%%', '%%%%')
          table.insert(record, field)
        end
      end

      -- Make sure this record doesn't exists already.
      local exists = false
      for _, f in pairs(fingerprints) do
        if f.probes then
          for __, p in pairs(f.probes) do
            if p.path then
              if p.path == record[4] then
                exists = true
                break
              end
            end
          end
        end
      end

      -- What we have right now, is the following record:
      -- record[1]: Nikto test ID
      -- record[2]: OSVDB-ID
      -- record[3]: Server Type
      -- record[4]: URI
      -- record[5]: HTTP Method
      -- record[6]: Match 1
      -- record[7]: Match 1 (Or)
      -- record[8]: Match1 (And)
      -- record[9]: Fail 1
      -- record[10]: Fail 2
      -- record[11]: Summary
      -- record[12]: HTTP Data
      -- record[13]: Headers

      -- Is this a valid record?  Atm, with our current format we need
      -- to skip some nikto records. See NSEDoc for more info.

      if not exists
        and record[4]
        and record[8] == "" and record[10] == "" and record[12] == ""
        and (tonumber(record[4]) == nil or (tonumber(record[4]) and record[4] == "200")) then

        -- Our current format does not support HTTP code matching.
        if record[6] == "200" then record[6] = "" end

        nikto_fingerprint = { category = "nikto",
        probes = {
          {
            path = record[4],
            method = record[5]
          }
        },
        matches = {
          {
            dontmatch = record[9],
            match = record[6],
            output = record[11]
          },
        },
      }

      -- If there is a second match, add it.
      if record[7] and record[7] ~= "" then
        table.insert(nikto_fingerprint.matches, { match = record[7], output = record[11] })
      end

      table.insert(fingerprints, nikto_fingerprint)

    end
  end
end
end

Youez - 2016 - github.com/yon3zu
LinuXploit