hunk.code_window:         return output
       def udfCreateFromSharedLib(self):
           errMsg = "udfSetRemotePath() method must be defined within the plugin"
           raise sqlmapUnsupportedFeatureException(errMsg)
       def udfSetRemotePath(self):
  
hunk.labels: keep keep add keep keep keep keep keep
hunk.after_edit:     def checkNeededUdfs(self):
           if not conf.osPwn:
               self.sysUdfs.pop("sys_bineval")
           if not conf.osCmd and not conf.osShell and not conf.regRead:
               self.sysUdfs.pop("sys_eval")
  
hunk.file_path: lib/takeover/udf.py
hunk.type: add
file: #!/usr/bin/env python
  
  """
  $Id$
  
  This file is part of the sqlmap project, http://sqlmap.sourceforge.net.
  
  Copyright (c) 2007-2009 Bernardo Damele A. G. <bernardo.damele@gmail.com>
  Copyright (c) 2006 Daniele Bellucci <daniele.bellucci@gmail.com>
  
  sqlmap is free software; you can redistribute it and/or modify it under
  the terms of the GNU General Public License as published by the Free
  Software Foundation version 2 of the License.
  
  sqlmap is distributed in the hope that it will be useful, but WITHOUT ANY
  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
  details.
  
  You should have received a copy of the GNU General Public License along
  with sqlmap; if not, write to the Free Software Foundation, Inc., 51
  Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  """
  
  import os
  
  from xml.sax import parse
  
  from lib.core.common import checkFile
  from lib.core.data import kb
  from lib.core.data import paths
  from lib.parse.handler import FingerprintHandler
  
  def headersParser(headers):
      """
      This function calls a class that parses the input HTTP headers to
      fingerprint the back-end database management system operating system
      and the web application technology
      """
  
      # It is enough to parse the headers on first four HTTP responses
      if kb.headersCount > 3:
          return
  
      kb.headersCount += 1
  
      topHeaders = {
                     "cookie":                          os.path.join(paths.SQLMAP_XML_BANNER_PATH, "cookie.xml"),
                     "microsoftsharepointteamservices": os.path.join(paths.SQLMAP_XML_BANNER_PATH, "sharepoint.xml"),
                     "server":                          os.path.join(paths.SQLMAP_XML_BANNER_PATH, "server.xml"),
                     "servlet-engine":                  os.path.join(paths.SQLMAP_XML_BANNER_PATH, "servlet.xml"),
                     "set-cookie":                      os.path.join(paths.SQLMAP_XML_BANNER_PATH, "cookie.xml"),
                     "x-aspnet-version":                os.path.join(paths.SQLMAP_XML_BANNER_PATH, "x-aspnet-version.xml"),
                     "x-powered-by":                    os.path.join(paths.SQLMAP_XML_BANNER_PATH, "x-powered-by.xml")
                   }
  
      for header in headers:
          if header in topHeaders.keys():
              value   = headers[header]
              xmlfile = topHeaders[header]
  
              checkFile(xmlfile)
  
              handler = FingerprintHandler(value, kb.headersFp)
  
              parse(xmlfile, handler)
              parse(paths.GENERIC_XML, handler)
  