Files
metasploit-gs/lib/msf/base/simple/buffer.rb
T

85 lines
1.7 KiB
Ruby
Raw Normal View History

# -*- coding: binary -*-
2010-09-21 00:13:30 +00:00
##
# $Id$
##
2005-07-10 09:42:49 +00:00
require 'msf/base'
module Msf
module Simple
###
#
# Wraps interaction with a generated buffer from the framework.
# Its primary use is to transform a raw buffer into another
# format.
#
###
module Buffer
#
2005-11-15 15:29:56 +00:00
# Serializes a buffer to a provided format. The formats supported are raw,
2011-11-11 00:13:17 -08:00
# ruby, perl, bash, c, js_be, js_le and java
2005-07-10 09:42:49 +00:00
#
2005-07-10 19:21:40 +00:00
def self.transform(buf, fmt = "ruby")
2005-07-10 09:42:49 +00:00
case fmt
when 'raw'
2010-09-21 00:13:30 +00:00
when 'ruby', 'rb'
2005-07-10 09:42:49 +00:00
buf = Rex::Text.to_ruby(buf)
2010-09-21 00:13:30 +00:00
when 'perl', 'pl'
2005-07-10 09:42:49 +00:00
buf = Rex::Text.to_perl(buf)
2011-11-11 00:13:17 -08:00
when 'bash', 'sh'
buf = Rex::Text.to_bash(buf)
2005-07-10 09:42:49 +00:00
when 'c'
buf = Rex::Text.to_c(buf)
when 'js_be'
buf = Rex::Text.to_unescape(buf, ENDIAN_BIG)
when 'js_le'
buf = Rex::Text.to_unescape(buf, ENDIAN_LITTLE)
when 'java'
buf = Rex::Text.to_java(buf)
2005-07-10 09:42:49 +00:00
else
raise ArgumentError, "Unsupported buffer format: #{fmt}", caller
end
return buf
end
2005-07-10 19:21:40 +00:00
#
2005-11-15 15:29:56 +00:00
# Creates a comment using the supplied format. The formats supported are
2011-11-11 00:13:17 -08:00
# raw, ruby, perl, bash, js_be, js_le, c, and java.
2005-07-10 19:21:40 +00:00
#
def self.comment(buf, fmt = "ruby")
case fmt
when 'raw'
2010-09-21 00:13:30 +00:00
when 'ruby', 'rb'
2005-07-10 19:21:40 +00:00
buf = Rex::Text.to_ruby_comment(buf)
2010-09-21 00:13:30 +00:00
when 'perl', 'pl'
2005-07-10 19:21:40 +00:00
buf = Rex::Text.to_perl_comment(buf)
2011-11-11 00:13:17 -08:00
when 'bash', 'sh'
buf = Rex::Text.to_bash_comment(buf)
2005-07-10 19:21:40 +00:00
when 'c'
buf = Rex::Text.to_c_comment(buf)
when 'js_be', 'js_le'
buf = Rex::Text.to_js_comment(buf)
when 'java'
buf = Rex::Text.to_c_comment(buf)
2005-07-10 19:21:40 +00:00
else
raise ArgumentError, "Unsupported buffer format: #{fmt}", caller
end
return buf
end
2010-09-21 00:13:30 +00:00
#
# Returns the list of supported formats
#
def self.transform_formats
2011-11-11 00:13:17 -08:00
['raw','ruby','rb','perl','pl','bash','sh','c','js_be','js_le','java']
2010-09-21 00:13:30 +00:00
end
2005-07-10 09:42:49 +00:00
end
end
2009-01-09 02:16:02 +00:00
end