File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2599,6 +2599,9 @@ def logHTTPTraffic(requestLogMsg, responseLogMsg):
25992599 """
26002600 Logs HTTP traffic to the output file
26012601 """
2602+ threadData = getCurrentThreadData ()
2603+ assert threadData .requestCollector is not None , "Request collector should be initialized by now"
2604+ threadData .requestCollector .collectRequest (requestLogMsg , responseLogMsg )
26022605
26032606 if not conf .trafficFile :
26042607 return
Original file line number Diff line number Diff line change 149149from lib .request .rangehandler import HTTPRangeHandler
150150from lib .request .redirecthandler import SmartRedirectHandler
151151from lib .request .templates import getPageTemplate
152+ from lib .utils .collect import RequestCollectorFactory
152153from lib .utils .crawler import crawl
153154from lib .utils .deps import checkDependencies
154155from lib .utils .search import search
@@ -1844,6 +1845,7 @@ def _setConfAttributes():
18441845 conf .scheme = None
18451846 conf .tests = []
18461847 conf .trafficFP = None
1848+ conf .requestCollectorFactory = None
18471849 conf .wFileType = None
18481850
18491851def _setKnowledgeBaseAttributes (flushAll = True ):
@@ -2228,6 +2230,11 @@ def _setTrafficOutputFP():
22282230
22292231 conf .trafficFP = openFile (conf .trafficFile , "w+" )
22302232
2233+ def _setupRequestCollector ():
2234+ conf .requestCollectorFactory = RequestCollectorFactory (collect = conf .collectRequests )
2235+ threadData = getCurrentThreadData ()
2236+ threadData .requestCollector = conf .requestCollectorFactory .create ()
2237+
22312238def _setDNSServer ():
22322239 if not conf .dnsDomain :
22332240 return
@@ -2604,6 +2611,7 @@ def init():
26042611 _setTamperingFunctions ()
26052612 _setWafFunctions ()
26062613 _setTrafficOutputFP ()
2614+ _setupRequestCollector ()
26072615 _resolveCrossReferences ()
26082616 _checkWebSocket ()
26092617
Original file line number Diff line number Diff line change 197197 "binaryFields" : "string" ,
198198 "charset" : "string" ,
199199 "checkInternet" : "boolean" ,
200+ "collectRequests" : "string" ,
200201 "crawlDepth" : "integer" ,
201202 "crawlExclude" : "string" ,
202203 "csvDel" : "string" ,
Original file line number Diff line number Diff line change @@ -38,6 +38,8 @@ def reset(self):
3838 Resets thread data model
3939 """
4040
41+ self .requestCollector = None
42+
4143 self .disableStdOut = False
4244 self .hashDBCursor = None
4345 self .inTransaction = False
Original file line number Diff line number Diff line change @@ -631,6 +631,10 @@ def cmdLineParser(argv=None):
631631 action = "store_true" ,
632632 help = "Never ask for user input, use the default behaviour" )
633633
634+ general .add_option ("--collect-requests" , dest = "collectRequests" ,
635+ action = "store_true" ,
636+ help = "Collect requests in HAR format" )
637+
634638 general .add_option ("--binary-fields" , dest = "binaryFields" ,
635639 help = "Result fields having binary values (e.g. \" digest\" )" )
636640
Original file line number Diff line number Diff line change 1+ #!/usr/bin/env python
2+
3+ """
4+ Copyright (c) 2006-2017 sqlmap developers (http://sqlmap.org/)
5+ See the file 'doc/COPYING' for copying permission
6+ """
7+
8+ from lib .core .data import logger
9+
10+
11+ class RequestCollectorFactory :
12+
13+ def __init__ (self , collect = False ):
14+ self .collect = collect
15+
16+ def create (self ):
17+ collector = RequestCollector ()
18+
19+ if not self .collect :
20+ collector .collectRequest = self ._noop
21+
22+ return collector
23+
24+ @staticmethod
25+ def _noop (* args , ** kwargs ):
26+ pass
27+
28+
29+ class RequestCollector :
30+
31+ def collectRequest (self , requestMessage , responseMessage ):
32+ logger .info ("Received request/response: %s/%s" , len (requestMessage ), len (responseMessage ))
You can’t perform that action at this time.
0 commit comments