From ed20f1cf33f537e8190616270ec7bf561a6b21b9 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Fri, 14 May 2010 14:48:54 +0000 Subject: [PATCH] some more speed up (one time compilation of popular regexes) --- lib/request/basic.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/request/basic.py b/lib/request/basic.py index 873099904..4c94882d7 100644 --- a/lib/request/basic.py +++ b/lib/request/basic.py @@ -36,6 +36,9 @@ from lib.core.data import kb from lib.parse.headers import headersParser from lib.parse.html import htmlParser +__absFilePathsRegExp = ( r" in (?P.*?) on line", r"(?:>|\s)(?P[A-Za-z]:[\\/][\w.\\/]*)", r"(?:>|\s)(?P/\w[/\w.]+)" ) +__absFilePathsRegObj = [re.compile(absFilePathRegExp) for absFilePathRegExp in __absFilePathsRegExp] + def forgeHeaders(cookie, ua): """ Prepare HTTP Cookie and HTTP User-Agent headers to use when performing @@ -74,10 +77,9 @@ def parseResponse(page, headers): # Detect injectable page absolute system path # NOTE: this regular expression works if the remote web application # is written in PHP and debug/error messages are enabled. - absFilePathsRegExp = ( r" in (?P.*?) on line", r"(?:>|\s)(?P[A-Za-z]:[\\/][\w.\\/]*)", r"(?:>|\s)(?P/\w[/\w.]+)" ) - for absFilePathRegExp in absFilePathsRegExp: - for match in re.finditer(absFilePathRegExp, page): + for reobj in __absFilePathsRegObj: + for match in reobj.finditer(page): absFilePath = match.group("result").strip() page = page.replace(absFilePath, "")