@@ -289,130 +289,6 @@ def adjustValueType(tagName, value):
289289 break
290290 return value
291291
292- def liveTest ():
293- """
294- Runs the test of a program against the live testing environment
295- """
296-
297- retVal = True
298- count = 0
299- global_ = {}
300- vars_ = {}
301-
302- livetests = readXmlFile (paths .LIVE_TESTS_XML )
303- length = len (livetests .getElementsByTagName ("case" ))
304-
305- element = livetests .getElementsByTagName ("global" )
306- if element :
307- for item in element :
308- for child in item .childNodes :
309- if child .nodeType == child .ELEMENT_NODE and child .hasAttribute ("value" ):
310- global_ [child .tagName ] = adjustValueType (child .tagName , child .getAttribute ("value" ))
311-
312- element = livetests .getElementsByTagName ("vars" )
313- if element :
314- for item in element :
315- for child in item .childNodes :
316- if child .nodeType == child .ELEMENT_NODE and child .hasAttribute ("value" ):
317- var = child .getAttribute ("value" )
318- vars_ [child .tagName ] = randomStr (6 ) if var == "random" else var
319-
320- for case in livetests .getElementsByTagName ("case" ):
321- parse_from_console_output = False
322- count += 1
323- name = None
324- parse = []
325- switches = dict (global_ )
326- value = ""
327- vulnerable = True
328- result = None
329-
330- if case .hasAttribute ("name" ):
331- name = case .getAttribute ("name" )
332-
333- if conf .runCase and ((conf .runCase .isdigit () and conf .runCase != count ) or not re .search (conf .runCase , name , re .DOTALL )):
334- continue
335-
336- if case .getElementsByTagName ("switches" ):
337- for child in case .getElementsByTagName ("switches" )[0 ].childNodes :
338- if child .nodeType == child .ELEMENT_NODE and child .hasAttribute ("value" ):
339- value = replaceVars (child .getAttribute ("value" ), vars_ )
340- switches [child .tagName ] = adjustValueType (child .tagName , value )
341-
342- if case .getElementsByTagName ("parse" ):
343- for item in case .getElementsByTagName ("parse" )[0 ].getElementsByTagName ("item" ):
344- if item .hasAttribute ("value" ):
345- value = replaceVars (item .getAttribute ("value" ), vars_ )
346-
347- if item .hasAttribute ("console_output" ):
348- parse_from_console_output = bool (item .getAttribute ("console_output" ))
349-
350- parse .append ((value , parse_from_console_output ))
351-
352- conf .verbose = global_ .get ("verbose" , 1 )
353- setVerbosity ()
354-
355- msg = "running live test case: %s (%d/%d)" % (name , count , length )
356- logger .info (msg )
357-
358- initCase (switches , count )
359-
360- test_case_fd = codecs .open (os .path .join (paths .SQLMAP_OUTPUT_PATH , "test_case" ), "wb" , UNICODE_ENCODING )
361- test_case_fd .write ("%s\n " % name )
362-
363- try :
364- result = runCase (parse )
365- except SqlmapNotVulnerableException :
366- vulnerable = False
367- finally :
368- conf .verbose = global_ .get ("verbose" , 1 )
369- setVerbosity ()
370-
371- if result is True :
372- logger .info ("test passed" )
373- cleanCase ()
374- else :
375- errMsg = "test failed"
376-
377- if _failures .failedItems :
378- errMsg += " at parsing items: %s" % ", " .join (i for i in _failures .failedItems )
379-
380- errMsg += " - scan folder: %s" % paths .SQLMAP_OUTPUT_PATH
381- errMsg += " - traceback: %s" % bool (_failures .failedTraceBack )
382-
383- if not vulnerable :
384- errMsg += " - SQL injection not detected"
385-
386- logger .error (errMsg )
387- test_case_fd .write ("%s\n " % errMsg )
388-
389- if _failures .failedParseOn :
390- console_output_fd = codecs .open (os .path .join (paths .SQLMAP_OUTPUT_PATH , "console_output" ), "wb" , UNICODE_ENCODING )
391- console_output_fd .write (_failures .failedParseOn )
392- console_output_fd .close ()
393-
394- if _failures .failedTraceBack :
395- traceback_fd = codecs .open (os .path .join (paths .SQLMAP_OUTPUT_PATH , "traceback" ), "wb" , UNICODE_ENCODING )
396- traceback_fd .write (_failures .failedTraceBack )
397- traceback_fd .close ()
398-
399- beep ()
400-
401- if conf .stopFail is True :
402- return retVal
403-
404- test_case_fd .close ()
405- retVal &= bool (result )
406-
407- dataToStdout ("\n " )
408-
409- if retVal :
410- logger .info ("live test final result: PASSED" )
411- else :
412- logger .error ("live test final result: FAILED" )
413-
414- return retVal
415-
416292def initCase (switches , count ):
417293 _failures .failedItems = []
418294 _failures .failedParseOn = None
0 commit comments