@@ -97,6 +97,8 @@ class WebSocketException(Exception):
9797from lib .core .settings import PAYLOAD_DELIMITER
9898from lib .core .settings import PERMISSION_DENIED_REGEX
9999from lib .core .settings import PLAIN_TEXT_CONTENT_TYPE
100+ from lib .core .settings import RANDOM_INTEGER_MARKER
101+ from lib .core .settings import RANDOM_STRING_MARKER
100102from lib .core .settings import REPLACEMENT_MARKER
101103from lib .core .settings import TEXT_CONTENT_TYPE_REGEX
102104from lib .core .settings import UNENCODED_ORIGINAL_VALUE
@@ -1020,34 +1022,37 @@ def _randomizeParameter(paramString, randomParameter):
10201022 post = urlencode (post , spaceplus = kb .postSpaceToPlus )
10211023
10221024 if timeBasedCompare :
1023- if len (kb .responseTimes ) < MIN_TIME_RESPONSES :
1025+ if len (kb .responseTimes . get ( kb . responseTimeMode , []) ) < MIN_TIME_RESPONSES :
10241026 clearConsoleLine ()
10251027
1028+ kb .responseTimes .setdefault (kb .responseTimeMode , [])
1029+
10261030 if conf .tor :
10271031 warnMsg = "it's highly recommended to avoid usage of switch '--tor' for "
10281032 warnMsg += "time-based injections because of its high latency time"
10291033 singleTimeWarnMessage (warnMsg )
10301034
1031- warnMsg = "[%s] [WARNING] time -based comparison requires " % time .strftime ("%X" )
1035+ warnMsg = "[%s] [WARNING] %stime -based comparison requires " % ( time .strftime ("%X" ), "(case) " if kb . responseTimeMode else " " )
10321036 warnMsg += "larger statistical model, please wait"
10331037 dataToStdout (warnMsg )
10341038
1035- while len (kb .responseTimes ) < MIN_TIME_RESPONSES :
1036- Connect .queryPage (content = True )
1039+ while len (kb .responseTimes [kb .responseTimeMode ]) < MIN_TIME_RESPONSES :
1040+ value = kb .responseTimePayload .replace (RANDOM_INTEGER_MARKER , str (randomInt (6 ))).replace (RANDOM_STRING_MARKER , randomStr ()) if kb .responseTimePayload else kb .responseTimePayload
1041+ Connect .queryPage (value = value , content = True , raise404 = False )
10371042 dataToStdout ('.' )
10381043
1039- dataToStdout ("\n " )
1044+ dataToStdout (" (done) \n " )
10401045
10411046 elif not kb .testMode :
1042- warnMsg = "it is very important not to stress the network adapter "
1047+ warnMsg = "it is very important to not stress the network adapter "
10431048 warnMsg += "during usage of time-based payloads to prevent potential "
1044- warnMsg += "errors "
1049+ warnMsg += "disruptions "
10451050 singleTimeWarnMessage (warnMsg )
10461051
10471052 if not kb .laggingChecked :
10481053 kb .laggingChecked = True
10491054
1050- deviation = stdev (kb .responseTimes )
1055+ deviation = stdev (kb .responseTimes [ kb . responseTimeMode ] )
10511056
10521057 if deviation > WARN_TIME_STDEV :
10531058 kb .adjustTimeDelay = ADJUST_TIME_DELAY .DISABLE
@@ -1115,7 +1120,8 @@ def _randomizeParameter(paramString, randomParameter):
11151120 if timeBasedCompare :
11161121 return wasLastResponseDelayed ()
11171122 elif noteResponseTime :
1118- kb .responseTimes .append (threadData .lastQueryDuration )
1123+ kb .responseTimes .setdefault (kb .responseTimeMode , [])
1124+ kb .responseTimes [kb .responseTimeMode ].append (threadData .lastQueryDuration )
11191125
11201126 if not response and removeReflection :
11211127 page = removeReflectiveValues (page , payload )
0 commit comments