2016-11-11 18:54:14 +00:00
import json
import os
2016-11-12 00:20:01 +00:00
import glob
2016-11-11 18:54:14 +00:00
class Helper :
VERSION = " 2.0 "
def __init__ ( self , argv ) :
self . argv = argv
self . Banner ( )
self . ValidateArgv ( )
self . config = { }
def ValidateArgv ( self ) :
2016-11-12 00:20:01 +00:00
if " -list " in self . argv :
self . ListModules ( )
exit ( 0 )
2016-11-11 18:54:14 +00:00
if len ( self . argv ) < 3 :
self . HelpMenu ( )
self . ExitShowError ( " Missing arguments. " )
def HelpMenu ( self ) :
2016-11-12 00:20:01 +00:00
print " Usage: %s [config] [output] (optional -list) \n \n \t config \t Config file that contain generator information \n \t output \t Output filename for the macro \n \t -list \t List all available payloads and evasion techniques " % self . argv [ 0 ]
2016-11-11 18:54:14 +00:00
def Banner ( self ) :
print " MMG.Malicious Macro Generator v %s - RingZer0 Team \n Author: Mr.Un1k0d3r mr.un1k0d3r@gmail.com \n " % Helper . VERSION
def ProcessCompleted ( self ) :
self . PrintSuccess ( " Generation completed. " )
def ExitShowError ( self , error ) :
print " \n [-] Error: %s " % error
exit ( 0 )
def PrintSuccess ( self , message ) :
print " [+] %s " % message
def ParseConfig ( self ) :
buffer = self . LoadFile ( self . argv [ 1 ] )
try :
self . config = json . loads ( buffer )
except :
self . ExitShowError ( " \" %s \" is not a valid config file. " % self . argv [ 1 ] )
return self
def GetConfig ( self , key ) :
if self . config . has_key ( key ) :
return self . config [ key ]
else :
self . ExitShowError ( " \" %s \" key not found in the config file. " % key )
def ShowConfigDescription ( self ) :
buffer = self . GetConfig ( " description " )
self . PrintSuccess ( " Loading the following payload: \n \n %s \n " % buffer )
return self
def LoadFile ( self , filename ) :
if os . path . exists ( filename ) :
buffer = open ( filename , " rb " ) . read ( )
return buffer
else :
self . ExitShowError ( " \" %s \" file not found. " % filename )
def SaveFile ( self , filename , buffer ) :
try :
open ( filename , " wb " ) . write ( buffer )
except :
self . ExitShowError ( " Failed to save \" %s \" . " % filename )
self . PrintSuccess ( " \" %s \" successfully saved to the disk. " % filename )
2016-11-12 00:20:01 +00:00
return self
def ListModules ( self ) :
path = os . path . dirname ( os . path . realpath ( __file__ ) )
payloadPath = path + " /../templates/payloads/ "
evasionPath = path + " /../templates/evasions/ "
self . PrintSuccess ( " List of available payloads " )
self . GlobFolder ( payloadPath )
print " \n "
self . PrintSuccess ( " List of available evasion techniques " )
self . GlobFolder ( evasionPath )
def GlobFolder ( self , path ) :
for file in glob . glob ( path + " * " ) :
print " \t " + file . replace ( path , " " )