#!/usr/bin/env ruby path = ARGV.shift || exit data = File.read(path) outp = "" endc = 0 data.each_line do |line| if(line =~ /^\s*module\s+[A-Z]/) endc += 1 next end if(line =~ /^(\s*)include (.*)/) spaces = $1 inc = $2 if (inc !~ /Msf/) line = "#{spaces}include Msf::#{inc.strip}\n" end end if(line =~ /^(\s*)class ([^\<]+)\s*<\s*(.*)/) prefix = "" spaces = $1 parent = $3 if(parent !~ /^Msf/) prefix = "Msf::" end line = "#{spaces}class Metasploit3 < #{prefix}#{parent.strip}\n" end outp += line end endc.downto(1) do |idx| i = outp.rindex("end") outp[i, 4] = "" if i end outp.rstrip! outp << "\n" fd = File.open(path, "w") fd.write(outp) fd.close