diff --git a/.gitignore b/.gitignore index fcfe0113..ba0c6dba 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ docs/_build/ *.json .idea/* .vscode/* +.DS_Store diff --git a/.landscape.yaml b/.landscape.yaml index d8e0bbdd..a5f5381b 100644 --- a/.landscape.yaml +++ b/.landscape.yaml @@ -2,5 +2,4 @@ doc-warnings: no test-warnings: no strictness: veryhigh autodetect: yes -ignore-paths: - - docs + diff --git a/.travis.yml b/.travis.yml index 68578da5..3ea85b77 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ matrix: sudo: required # required for Python 3.7 (travis-ci/travis-ci#9069) install: - - python setup.py install + - pip install . - pip install flake8 before_script: # stop the build if there are Python syntax errors or undefined names diff --git a/Dockerfile b/Dockerfile index 780ccb8f..19236ab5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ FROM python:3-alpine WORKDIR /usr/src/app COPY . . -RUN python setup.py install +RUN pip install . ENTRYPOINT [ "wafw00f" ] diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index dc7bb68e..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,6 +0,0 @@ -include CREDITS.txt -include LICENSE -include MANIFEST.in -include README.md -include wafw00f/__init__.py -include wafw00f/bin/wafw00f diff --git a/Makefile b/Makefile deleted file mode 100644 index d7f7ce30..00000000 --- a/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -SRC_DIR = wafw00f -DOC_DIR = docs -MAKE = make - -all: - make install - make test - make html - make clean - -install: - pip install -q -e .[dev,docs] - -lint: - prospector $(SRC_DIR) --strictness veryhigh - -testall: - tox - -html: - cd $(DOC_DIR) && $(MAKE) html - -clean: - rm -rf *.egg-info build dist .coverage - find $(SRC_DIR) -name "*.pyc" | xargs rm -rf diff --git a/README.md b/README.md index 21d55825..da18e5fc 100644 --- a/README.md +++ b/README.md @@ -253,7 +253,8 @@ $ wafw00f https://example.org The following should do the trick: ``` -python setup.py install +git clone https://github.com/EnableSecurity/wafw00f.git && cd wafw00f +pip install . ``` It is also possible to run it within a docker container. Clone this repository first and build the Docker image using `docker build . -t wafw00f`. diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index a9b480f1..00000000 --- a/docs/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/wafw00f.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/wafw00f.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/wafw00f" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/wafw00f" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/docs/conf.py b/docs/conf.py deleted file mode 100644 index d2cc7b35..00000000 --- a/docs/conf.py +++ /dev/null @@ -1,261 +0,0 @@ -# -*- coding: utf-8 -*- -# -# wafw00f documentation build configuration file, created by -# sphinx-quickstart on Thu May 15 20:04:22 2014. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import os -import sys -BASE_DIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) -sys.path.insert(0, BASE_DIR) -from wafw00f import __version__ - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'wafw00f' -copyright = u'2020, WAFW00F Developers' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = __version__ -# The full version, including alpha/beta/rc tags. -release = __version__ - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -#keep_warnings = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -#html_extra_path = [] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'wafw00fdoc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - ('index', 'wafw00f.tex', u'wafw00f Documentation', - u'sandrogauci', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'wafw00f', u'wafw00f Documentation', - [u'sandrogauci'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'wafw00f', u'wafw00f Documentation', - u'sandrogauci', 'wafw00f', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index cb608a17..00000000 --- a/docs/index.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. wafw00f documentation master file, created by - sphinx-quickstart on Thu May 15 20:04:22 2014. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to wafw00f's documentation! -=================================== - -Contents: - -.. toctree:: - :maxdepth: 2 - - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/docs/wafw00f.8 b/docs/wafw00f.8 deleted file mode 100644 index b04c1db6..00000000 --- a/docs/wafw00f.8 +++ /dev/null @@ -1,61 +0,0 @@ -.TH WAFW00F "8" "October 2020" "wafw00f " "User Commands" -.SH NAME -WAFW00F \- Identify and fingerprint Web Application Firewall products -.SH SYNOPSIS -.B wafw00f \fI\,url1 \/\fR[\fI\,url2 \/\fR[\fI\,url3 \/\fR... ]] -.SH DESCRIPTION -.TP -The Web Application Firewall Identification and Fingerprinting Tool. -.TP -.TP -To do its magic, WAFW00F does the following: -Sends a normal HTTP request and analyses the response; this identifies a number of WAF solutions. -If that is not successful, it sends a number of (potentially malicious) HTTP requests and uses simple logic to deduce which WAF it is. -If that is also not successful, it analyses the responses previously returned and uses another simple algorithm to guess if a WAF or security solution is active> -.SH OPTIONS -.TP -\fB\-h\fR, \fB\-\-help\fR -Show available options. -.TP -\fB\-v\fR, \fB\-\-verbose\fR -Enable verbosity \- multiple \fB\-v\fR options increase verbosity. -.TP -\fB\-a\fR, \fB\-\-findall\fR -Find all WAFs, do not stop testing on the first one. -.TP -\fB\-r\fR, \fB\-\-noredirect\fR -Do not follow redirections given by 3xx responses. -.TP -\fB\-t\fR WAF, \fB\-\-test\fR=\fI\,WAF\/\fR -Test for one specific WAF product. -.TP -\fB\-o\fR OUTPUT, \fB\-\-output\fR=\fI\,OUTPUT\/\fR -Write output to csv, json or text file depending on file extension. For stdout, specify - as filename. -.TP -\fB\-i\fR INPUT, \fB\-\-input\fR=\fI\,INPUT\/\fR -Read targets from a file. Input format can be csv, json or text. For csv and json, a `url` column name or element is required. -.TP -\fB\-l\fR, \fB\-\-list\fR -List all the WAFs that WAFW00F is able to detect. -.TP -\fB\-p\fR PROXY, \fB\-\-proxy\fR=\fI\,PROXY\/\fR -Use an HTTP proxy to perform requests, example: http://hostname:8080, socks5://hostname:1080. -.TP -\fB\-V\fR, \fB\-\-version\fR -Print out the version. -.TP -\fB\-H\fR FILE, \fB\-\-headers\fR=\fI\,FILE\/\fR -Pass custom headers, for example to overwrite the default user\-agent string. -.SH AUTHORS -Sandro Gauci (@SandroGauci) -.br -Pinaki Mondal (@0xInfection) -.SH REPORTING BUGS -You can report bugs at the project homepage issue tracker: . -.SH COPYRIGHT -Copyright (C) 2009-2022 WAFW00F Developers. License: BSD 3-Clause . -.br -This is free software: you are free to modify and distribute under the terms as permitted by the license provided alongwith. -.SH SEE ALSO -Full documentation is available at: . -.PP diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..e73aec47 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,50 @@ +[build-system] +requires = ["hatchling>=1.17.1"] +build-backend = "hatchling.build" + +[project] +name = "wafw00f" +description = "Web Application Firewall Detection Tool" +readme = "README.md" +license = "BSD-3-Clause" +author = "Sandro Gauci" +requires-python = ">=3.6" +author-email = "sandro@enablesecurity.com" +keywords = [ + "waf", + "firewall", + "detector", + "fingerprint" +] +dependencies = [ + "requests", + "requests[socks]", + "pluginbase" +] +dynamic = ["version"] + +[project.optional-dependencies] +dev = [ + "prospector", + "tox" +] +docs = [ + "Sphinx" +] + +[project.urls] +Project = "https://github.com/enablesecurity/wafw00f" +BugTracker = "https://github.com/EnableSecurity/wafw00f/issues" +Documentation = "https://github.com/EnableSecurity/wafw00f/wiki" +SourceCode = "https://github.com/EnableSecurity/wafw00f/tree/master" + +[project.scripts] +wafw00f = "wafw00f.main:main" + +[tool.hatch.version] +path = "wafw00f/__init__.py" + +[tool.hatch.build.targets.sdist] +include = [ + "/wafw00f", +] \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index 09cad094..00000000 --- a/setup.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python -''' -Copyright (C) 2022, WAFW00F Developers. -See the LICENSE file for copying permission. -''' - -import io -from setuptools import setup, find_packages -from os import path -this_directory = path.abspath(path.dirname(__file__)) -with io.open(path.join(this_directory, 'README.md'), encoding='utf-8') as f: - desc = f.read() - -setup( - name='wafw00f', - version=__import__('wafw00f').__version__, - long_description=desc, - long_description_content_type='text/markdown', - author='Sandro Gauci', - author_email='sandro@enablesecurity.com', - license='BSD License', - url='https://github.com/enablesecurity/wafw00f', - project_urls={ - "Bug Tracker": "https://github.com/EnableSecurity/wafw00f/issues", - "Documentation": "https://github.com/EnableSecurity/wafw00f/wiki", - "Source Code": "https://github.com/EnableSecurity/wafw00f/tree/master", - }, - packages=find_packages(), - scripts=['wafw00f/bin/wafw00f'], - install_requires=[ - 'requests', - 'requests[socks]', - 'pluginbase' - ], - classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Intended Audience :: System Administrators', - 'Intended Audience :: Information Technology', - 'Topic :: Internet', - 'Topic :: Security', - 'Topic :: System :: Networking :: Firewalls', - 'License :: OSI Approved :: BSD License', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 3', - 'Operating System :: OS Independent' - ], - keywords='waf firewall detector fingerprint', - extras_require={ - 'dev': [ - 'prospector', - ], - 'docs': [ - 'Sphinx', - ], - }, -) diff --git a/wafw00f/bin/wafw00f b/wafw00f/bin/wafw00f deleted file mode 100755 index e6a43f4d..00000000 --- a/wafw00f/bin/wafw00f +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python - - -from wafw00f import main - - -if __name__ == '__main__': - main.main()