Path: blob/master/modules/nops/ppc/simple.rb
19567 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45###6#7# SingleByte8# ----------9#10# This class implements simple NOP generator for PowerPC11#12###13class MetasploitModule < Msf::Nop1415def initialize16super(17'Name' => 'Simple',18'Alias' => 'ppc_simple',19'Description' => 'Simple NOP generator',20'Author' => 'hdm',21'License' => MSF_LICENSE,22'Arch' => ARCH_PPC)2324register_advanced_options(25[26OptBool.new('RandomNops', [ false, 'Generate a random NOP sled', true ])27]28)29end3031def generate_sled(length, opts)32badchars = opts['BadChars'] || ''33random = opts['Random'] || datastore['RandomNops']3435if random361.upto(1024) do |_i|37regs_d = (rand(0x8000 - 0x0800) + 0x0800).to_i38regs_b = [regs_d].pack('n').unpack('B*')[0][1, 15]39flag_o = rand(2).to_i40flag_r = rand(2).to_i4142pcword = ["011111#{regs_b}#{flag_o}100001010#{flag_r}"].pack('B*')43failed = false4445pcword.each_byte do |c|46failed = true if badchars.include?(c.chr)47end4849next if failed5051return (pcword * (length / 4))[0, length]52end53end5455return ("\x60" * length)[0, length]56end57end585960