169 lines · 4.5 KB · Python
RawDownload
# ------------------------------------------------------------# name      Fuzzbunch# type      exploit# cve       —# year      unknown# os        Windows# authors   unknown# source    RamadhanAmizudin/malware# archived  RamadhanAmizudin, krisyotam (2026)# notes     —# ------------------------------------------------------------ import globimport osimport shutilimport sysimport xml.dom.minidom #------------------------------------------------------------------------------------------# DOM helper functions#------------------------------------------------------------------------------------------def getMatchingChildNodes(node, name):	l = list()	for item in node.childNodes:		if (item.nodeType == node.ELEMENT_NODE) and (item.nodeName == name):			l.append(item)	return l	def getText(nodelist):    rc = ""    for node in nodelist:        if node.nodeType == node.TEXT_NODE:            rc = rc + node.data    return rc #------------------------------------------------------------------------------------------def copyFiles(files): 	for item in files:		src = item[0]		dst = item[1]		#print "%s -> %s" % (src, dst)		try:			os.makedirs(os.path.dirname(dst))		except:			pass				shutil.copy2(src, dst)		return True #------------------------------------------------------------------------------------------def handleDir(dirName, dstDir, root, recursive=False): 	#print "handleDir: ENTER (%s)" % dirName	fileList = list()	fileNodes = getMatchingChildNodes(root, "File")	for fileNode in fileNodes:		name = getText(fileNode.childNodes)					if (fileNode.getAttribute("name")):			newName = fileNode.getAttribute("name")		else:			newName = None				files = glob.glob("%s/%s" % (dirName, name))		for item in files:			item = os.path.basename(item)			dstName = newName			if (dstName == None):				dstName = item			if (len(dirName) > 0):				if (os.path.isfile("%s/%s" % (dirName, item))):					fileList.append(("%s/%s" % (dirName, item), "%s/%s/%s" % (dstDir, dirName, dstName)))			else:				if (os.path.isfile(item)):					fileList.append((item, "%s/%s" % (dstDir, dstName)))			# handle any sub-dirs	if (recursive):		dirNodes = [root]	else:		dirNodes = getMatchingChildNodes(root, "Dir")	for dirNode in dirNodes:		if (recursive):			ignoreNodes = list()			if (len(dirName) > 0):				subDirName = "%s/*" % dirName			else:				subDirName = "*"		else:			ignoreNodes = getMatchingChildNodes(dirNode, "Ignore")			if (len(dirName) > 0):				subDirName = "%s/%s" % (dirName, dirNode.getAttribute("name"))			else:				subDirName = dirNode.getAttribute("name")				subRecursive = recursive		if (not subRecursive):			rStr = dirNode.getAttribute("recursive")			if ((rStr != None) and (rStr == "true")):				subRecursive = True				#print "RECURSIVE (%s)" % subDirName							#print "Checking for '%s'" % subDirName		names = glob.glob("%s" % subDirName)		for name in names:			if (os.path.basename(name) == ".svn"):				continue							# make sure it's not ignored			ignore = False			for ignoreNode in ignoreNodes:				ignoreName = getText(ignoreNode.childNodes)				#print "<----------------Checking '%s' for ignored '%s'" % (os.path.basename(name), ignoreName)				if (ignoreName == os.path.basename(name)):					ignore = True						if (ignore):				#print "IGNORING %s" % name				continue						if (os.path.isdir(name)):				dirList = handleDir(os.path.normpath(name), dstDir, dirNode, subRecursive)				for item in dirList:					fileList.append(item)				return fileList		#------------------------------------------------------------------------------------------def main(argv): #	rootDir = os.path.dirname(argv[0])#	if (len(rootDir) == 0):#		rootDir = "."#	xmlName = "%s/replay.xml" % rootDir		rootDir = "."	xmlName = "%s/replay.xml" % rootDir		dom1 = xml.dom.minidom.parse(xmlName)	root = dom1.getElementsByTagName("ReplayFiles")		dstDir = None	while (dstDir == None):		dstDir = os.path.normpath("%s/../ReplayDisk" % rootDir)		sys.stdout.write("Enter the replay destination directory [%s]:" % dstDir)		dir = sys.stdin.readline().rstrip('\r\n')		if (len(dir) > 0):			dstDir = dir		fileCopyList = list()		rootList = handleDir(rootDir, dstDir, root[0])	for item in rootList:		fileCopyList.append(item)		if (not copyFiles(fileCopyList)):		return False		print "\n-----------------------------"	print "Replay disk creation complete"	print "-----------------------------"	return True	#------------------------------------------------------------------------------------------	if __name__ == '__main__':	if (main(sys.argv) != True):		sys.exit(-1);