141 lines · 3.6 KB · Python
RawDownload
# ------------------------------------------------------------# name      Fuzzbunch# type      exploit# cve       —# year      unknown# os        Windows# authors   unknown# source    RamadhanAmizudin/malware# archived  RamadhanAmizudin, krisyotam (2026)# notes     —# ------------------------------------------------------------import sysimport osimport getoptimport tempfileimport subprocess __all__ = ['PythonPlugin', 'PluginFiles', 'parseargs'] SUPPORTED_ARCH = {'win32':   'x86-Windows',                  'linux2-i686':  'i686-Linux',                  'linux2-x86_64':  'x86_64-Linux',                  'solaris': 'sparc-SunOS'}try:    platform = sys.platform    if sys.platform == 'linux2':        platform = sys.platform + "-" + os.uname()[4]    arch = SUPPORTED_ARCH[sys.platform]except KeyError:    print "You are running on an unsuported architecture!"    sys.exit(-1) FB_FILE = os.path.realpath(__file__)FB_DIR  = os.path.join(os.path.dirname(FB_FILE), os.path.pardir)EDFLIB_DIR = os.path.join(FB_DIR, "lib", arch)#print "FBFILE: ", FB_FILE#print "FBDIR : ", FB_DIR#print "EDFLIB: ", EDFLIB_DIR os.environ['PATH'] += os.pathsep + EDFLIB_DIRsys.path.append(os.path.join(FB_DIR, "fuzzbunch"))sys.path.append(EDFLIB_DIR) import utilfrom plugin import *import iohandler  PluginFiles = util.superTuple('PluginFiles', 'input', 'output', 'log') class PythonPlugin(Plugin):    def __init__(self, files):        Plugin.__init__(self, files[:1], iohandler.IOhandler())        self.io.setlogfile(files.log)        if files.log:            self.logdir  = os.path.dirname(files.log)        else:            self.logdir = ""        self.basedir = FB_DIR        self.files = files        if files.output:            self.outfd = open(files.output, "wb")        else:            self.outfd = None     def validateParams(self):        pass     def processParams(self):        pass     def gentempfile(self):        hndl, file = tempfile.mkstemp(dir=self.logdir)        os.close(hndl)        return file     def setfilenames(self, oldout):        infile = oldout        tmpfile = self.gentempfile()        return infile, tmpfile     def execcommand(self, cmd):        cmd = "cmd.exe /C \"" + cmd + "\""        try:            subprocess.Popen(cmd, shell=False)        except OSError, err:            self.io.print_error("%s" % str(err))            return False        return True     def callcommand(self, cmd):        # XXX - Unix        cmd = "cmd.exe /C \"" + cmd + "\""        #print "EXEC : ", cmd         try:            retcode = subprocess.check_call(cmd, shell=False)        except (subprocess.CalledProcessError, OSError), err:            self.io.print_error("%s" % str(err))            return False        return True     def write_outparams(self):        pass def parseargs(args):    longopt = ['InConfig=', 'OutConfig=', 'LogFile=', 'ValidateOnly=']     try:        opts, args = getopt.getopt(args[1:], '', longopt)    except getopt.GetoptError, err:        #print str(err)        return None     opts = util.iDict(opts)     try:        inxml = opts['--inconfig']    except KeyError, err:        print "Missing command argument %s" % str(err)        return None     try:        val = opts['--validateonly']        if val.lower() == 'false':            validate = False        else:            validate = True    except KeyError, err:        validate = False     try:        outxml = opts['--outconfig']        logfile = opts['--logfile']    except KeyError, err:        outxml = None        logfile = None     return (PluginFiles(inxml, outxml, logfile),validate)