class Raddant
Attributes
bin[RW]
count[RW]
fuzzers[RW]
generators[RW]
indat[RW]
muxer_polymerase[RW]
muxers[RW]
out_file[RW]
polymerase[RW]
seed[RW]
seek[RW]
temp_file[RW]
Public Class Methods
fuzz(file, opts={}, &block)
click to toggle source
# File lib/raddant.rb, line 16 def self.fuzz(file, opts={}, &block) self.new(file, opts, block) end
new(str = "", opts={}, &block)
click to toggle source
# File lib/raddant.rb, line 20 def initialize(str = "", opts={}, &block) @indat = str @count = opts[:count] || 0 @start_seed = opts[:seed] @seed = @start_seed || Digest::SHA512.hexdigest(File.read("/dev/urandom",512)) @seek = opts[:seek] @fuzzers = opts[:fuzzers] @generators = opts[:generators] @polymerase = opts[:polymerase] @muxers = opts[:muxers] @muxer_polymerase = opts[:muxer_polymerase] self.each(block) if block_given? end
Public Instance Methods
each() { |next| ... }
click to toggle source
# File lib/raddant.rb, line 43 def each cnt = @count sd = @seed @seed = @start_seed || @seed eret = [] while( self.next?) do yield self.next eret << @seed if @count end @count = cnt @seed = sd eret end
fuzz_once(dat)
click to toggle source
# File lib/raddant.rb, line 38 def fuzz_once dat self.indat = dat self.next end
next()
click to toggle source
# File lib/raddant.rb, line 57 def next ret = execute @count = @count - 1 @seed = Digest::SHA512.hexdigest(@seed) ret end
next?()
click to toggle source
# File lib/raddant.rb, line 34 def next? (@count && @count < 1) ? false : true end
Private Instance Methods
execute()
click to toggle source
# File lib/raddant.rb, line 65 def execute @out_file = Tempfile.new("raddant") @out_file.close args = ["-s", @seed.to_i(16).to_s, "-o", @out_file.path] @temp_file = Tempfile.new("raddant") @temp_file.open @temp_file.write @indat @temp_file.close args += ["-f", [@fuzzers].flatten.join(",")] if @fuzzers args += ["-g", [@generators].flatten.join(",")] if @generators args += ["-p", [@polymerase].flatten.join(",")] if @polymerase args += ["-m", [@muxers].flatten.join(",")] if @muxers args += ["-P", [@muxer_polymerase].flatten.join(",")] if @muxer_polymerase args += ["-S", @seek] if @seek args << @temp_file.path raise "radamsa didn't work: #{$?}" unless system(self.class.bin, *args) @temp_file.close! @out_file.open ret = @out_file.read @out_file.close! ret end