From 0e89cc62a26e1e7bc895df58044955bf3a19cf68 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Thu, 28 Feb 2013 20:20:08 +0100 Subject: [PATCH] Adding a hidden switch --dummy used for dummy runs (getPage() returns random data) - usefull for testing purposes for skipping connections --- lib/controller/checks.py | 2 +- lib/core/optiondict.py | 1 + lib/core/settings.py | 3 +++ lib/parse/cmdline.py | 7 +++++++ lib/request/connect.py | 5 +++++ 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/controller/checks.py b/lib/controller/checks.py index fe1e3eb1b..e33ba171d 100644 --- a/lib/controller/checks.py +++ b/lib/controller/checks.py @@ -1131,7 +1131,7 @@ def checkNullConnection(): return kb.nullConnection is not None def checkConnection(suppressOutput=False): - if not any([conf.proxy, conf.tor]): + if not any((conf.proxy, conf.tor, conf.dummy)): try: socket.getaddrinfo(conf.hostname, None) except socket.gaierror: diff --git a/lib/core/optiondict.py b/lib/core/optiondict.py index 88b17aa5c..3cc17bb5e 100644 --- a/lib/core/optiondict.py +++ b/lib/core/optiondict.py @@ -210,6 +210,7 @@ optDict = { "verbose": "integer", }, "Hidden": { + "dummy": "boolean", "binaryFields": "boolean", "profile": "boolean", "cpuThrottle": "integer", diff --git a/lib/core/settings.py b/lib/core/settings.py index 07d46c030..c30a78d99 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -131,6 +131,9 @@ DUMMY_USER_PREFIX = "__dummy__" # Reference: http://en.wikipedia.org/wiki/ISO/IEC_8859-1 DEFAULT_PAGE_ENCODING = "iso-8859-1" +# URL used in dummy runs +DUMMY_URL = "http://foo/bar?id=1" + # System variables IS_WIN = subprocess.mswindows diff --git a/lib/parse/cmdline.py b/lib/parse/cmdline.py index d2927b23b..f17de3c23 100644 --- a/lib/parse/cmdline.py +++ b/lib/parse/cmdline.py @@ -18,6 +18,7 @@ from lib.core.common import getUnicode from lib.core.data import logger from lib.core.defaults import defaults from lib.core.settings import BASIC_HELP_ITEMS +from lib.core.settings import DUMMY_URL from lib.core.settings import IS_WIN from lib.core.settings import MAX_HELP_OPTION_LENGTH @@ -664,6 +665,9 @@ def cmdLineParser(): help="Simple wizard interface for beginner users") # Hidden and/or experimental options + parser.add_option("--dummy", dest="dummy", action="store_true", + help=SUPPRESS_HELP) + parser.add_option("--pickled-options", dest="pickledOptions", help=SUPPRESS_HELP) parser.add_option("--profile", dest="profile", action="store_true", @@ -760,6 +764,9 @@ def cmdLineParser(): if sys.argv[i] == '-z': expandMnemonics(sys.argv[i + 1], parser, args) + if args.dummy: + args.url = args.url or DUMMY_URL + if not any((args.direct, args.url, args.logFile, args.bulkFile, args.googleDork, args.configFile, \ args.requestFile, args.updateAll, args.smokeTest, args.liveTest, args.wizard, args.dependencies, \ args.purgeOutput, args.pickledOptions)): diff --git a/lib/request/connect.py b/lib/request/connect.py index 85bab100e..b6fd62e31 100644 --- a/lib/request/connect.py +++ b/lib/request/connect.py @@ -31,6 +31,8 @@ from lib.core.common import getRequestHeader from lib.core.common import getUnicode from lib.core.common import logHTTPTraffic from lib.core.common import randomizeParameterValue +from lib.core.common import randomInt +from lib.core.common import randomStr from lib.core.common import readInput from lib.core.common import removeReflectiveValues from lib.core.common import singleTimeLogMessage @@ -181,6 +183,9 @@ class Connect(object): elif conf.cpuThrottle: cpuThrottle(conf.cpuThrottle) + if conf.dummy: + return randomStr(int(randomInt())), {}, int(randomInt()) + threadData = getCurrentThreadData() with kb.locks.request: kb.requestCounter += 1