4343from lib .core .settings import INFERENCE_NOT_EQUALS_CHAR
4444from lib .core .settings import MAX_TIME_REVALIDATION_STEPS
4545from lib .core .settings import PARTIAL_VALUE_MARKER
46+ from lib .core .settings import VALID_TIME_CHARS_RUN_THRESHOLD
4647from lib .core .threads import getCurrentThreadData
4748from lib .core .threads import runThreads
4849from lib .core .unescaper import unescaper
@@ -282,13 +283,14 @@ def getChar(idx, charTbl=None, continuousOrder=True, expand=charsetType is None,
282283 errMsg = "invalid character detected. retrying.."
283284 logger .error (errMsg )
284285
286+ kb .timeValidCharsRun = 0
285287 conf .timeSec += 1
286288
287289 warnMsg = "increasing time delay to %d second%s " % (conf .timeSec , 's' if conf .timeSec > 1 else '' )
288290 logger .warn (warnMsg )
289291
290292 if kb .adjustTimeDelay :
291- dbgMsg = "turning off auto-adjustment mechanism"
293+ dbgMsg = "turning off time auto-adjustment mechanism"
292294 logger .debug (dbgMsg )
293295 kb .adjustTimeDelay = False
294296
@@ -299,6 +301,13 @@ def getChar(idx, charTbl=None, continuousOrder=True, expand=charsetType is None,
299301 conf .timeSec = kb .originalTimeDelay
300302 return decodeIntToUnicode (retVal )
301303 else :
304+ if timeBasedCompare :
305+ kb .timeValidCharsRun += 1
306+ if not kb .adjustTimeDelay and kb .timeValidCharsRun > VALID_TIME_CHARS_RUN_THRESHOLD :
307+ dbgMsg = "turning on time auto-adjustment mechanism"
308+ logger .debug (dbgMsg )
309+ kb .adjustTimeDelay = True
310+
302311 return decodeIntToUnicode (retVal )
303312 else :
304313 return None
0 commit comments